aboutsummaryrefslogtreecommitdiff
path: root/ruby/ext/google/protobuf_c/message.c
diff options
context:
space:
mode:
authorChris Fallin <cfallin@google.com>2015-05-19 15:33:48 -0700
committerChris Fallin <cfallin@google.com>2015-05-19 16:19:00 -0700
commit231886f6327b7cad480b96d08595f45b3526cb4a (patch)
treea20711cf778f1f0d516d4648991a997963fe24f9 /ruby/ext/google/protobuf_c/message.c
parenta8b38c598d7f65b281a72809b28117afdb760931 (diff)
downloadprotobuf-231886f6327b7cad480b96d08595f45b3526cb4a.tar.gz
protobuf-231886f6327b7cad480b96d08595f45b3526cb4a.tar.bz2
protobuf-231886f6327b7cad480b96d08595f45b3526cb4a.zip
Ruby C extension speedup: don't re-intern constant string needlessly.
Also fixed lines with > 80 char length.
Diffstat (limited to 'ruby/ext/google/protobuf_c/message.c')
-rw-r--r--ruby/ext/google/protobuf_c/message.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/ruby/ext/google/protobuf_c/message.c b/ruby/ext/google/protobuf_c/message.c
index 55a674cf..4be1c8c8 100644
--- a/ruby/ext/google/protobuf_c/message.c
+++ b/ruby/ext/google/protobuf_c/message.c
@@ -53,7 +53,7 @@ rb_data_type_t Message_type = {
};
VALUE Message_alloc(VALUE klass) {
- VALUE descriptor = rb_iv_get(klass, kDescriptorInstanceVar);
+ VALUE descriptor = rb_ivar_get(klass, descriptor_instancevar_interned);
Descriptor* desc = ruby_to_Descriptor(descriptor);
MessageHeader* msg = (MessageHeader*)ALLOC_N(
uint8_t, sizeof(MessageHeader) + desc->layout->size);
@@ -63,7 +63,7 @@ VALUE Message_alloc(VALUE klass) {
// a collection happens during object creation in layout_init().
VALUE ret = TypedData_Wrap_Struct(klass, &Message_type, msg);
msg->descriptor = desc;
- rb_iv_set(ret, kDescriptorInstanceVar, descriptor);
+ rb_ivar_set(ret, descriptor_instancevar_interned, descriptor);
layout_init(desc->layout, Message_data(msg));
@@ -341,7 +341,8 @@ VALUE Message_to_h(VALUE _self) {
!upb_msg_field_done(&it);
upb_msg_field_next(&it)) {
const upb_fielddef* field = upb_msg_iter_field(&it);
- VALUE msg_value = layout_get(self->descriptor->layout, Message_data(self), field);
+ VALUE msg_value = layout_get(self->descriptor->layout, Message_data(self),
+ field);
VALUE msg_key = ID2SYM(rb_intern(upb_fielddef_name(field)));
if (upb_fielddef_label(field) == UPB_LABEL_REPEATED) {
msg_value = RepeatedField_to_ary(msg_value);
@@ -400,7 +401,7 @@ VALUE Message_index_set(VALUE _self, VALUE field_name, VALUE value) {
* message class's type.
*/
VALUE Message_descriptor(VALUE klass) {
- return rb_iv_get(klass, kDescriptorInstanceVar);
+ return rb_ivar_get(klass, descriptor_instancevar_interned);
}
VALUE build_class_from_descriptor(Descriptor* desc) {
@@ -421,11 +422,13 @@ VALUE build_class_from_descriptor(Descriptor* desc) {
// their own toplevel constant class name.
rb_intern("Message"),
rb_cObject);
- rb_iv_set(klass, kDescriptorInstanceVar, get_def_obj(desc->msgdef));
+ rb_ivar_set(klass, descriptor_instancevar_interned,
+ get_def_obj(desc->msgdef));
rb_define_alloc_func(klass, Message_alloc);
rb_require("google/protobuf/message_exts");
rb_include_module(klass, rb_eval_string("Google::Protobuf::MessageExts"));
- rb_extend_object(klass, rb_eval_string("Google::Protobuf::MessageExts::ClassMethods"));
+ rb_extend_object(
+ klass, rb_eval_string("Google::Protobuf::MessageExts::ClassMethods"));
rb_define_method(klass, "method_missing",
Message_method_missing, -1);
@@ -458,7 +461,7 @@ VALUE build_class_from_descriptor(Descriptor* desc) {
*/
VALUE enum_lookup(VALUE self, VALUE number) {
int32_t num = NUM2INT(number);
- VALUE desc = rb_iv_get(self, kDescriptorInstanceVar);
+ VALUE desc = rb_ivar_get(self, descriptor_instancevar_interned);
EnumDescriptor* enumdesc = ruby_to_EnumDescriptor(desc);
const char* name = upb_enumdef_iton(enumdesc->enumdef, num);
@@ -478,7 +481,7 @@ VALUE enum_lookup(VALUE self, VALUE number) {
*/
VALUE enum_resolve(VALUE self, VALUE sym) {
const char* name = rb_id2name(SYM2ID(sym));
- VALUE desc = rb_iv_get(self, kDescriptorInstanceVar);
+ VALUE desc = rb_ivar_get(self, descriptor_instancevar_interned);
EnumDescriptor* enumdesc = ruby_to_EnumDescriptor(desc);
int32_t num = 0;
@@ -498,7 +501,7 @@ VALUE enum_resolve(VALUE self, VALUE sym) {
* EnumDescriptor corresponding to this enum type.
*/
VALUE enum_descriptor(VALUE self) {
- return rb_iv_get(self, kDescriptorInstanceVar);
+ return rb_ivar_get(self, descriptor_instancevar_interned);
}
VALUE build_module_from_enumdesc(EnumDescriptor* enumdesc) {
@@ -523,7 +526,8 @@ VALUE build_module_from_enumdesc(EnumDescriptor* enumdesc) {
rb_define_singleton_method(mod, "lookup", enum_lookup, 1);
rb_define_singleton_method(mod, "resolve", enum_resolve, 1);
rb_define_singleton_method(mod, "descriptor", enum_descriptor, 0);
- rb_iv_set(mod, kDescriptorInstanceVar, get_def_obj(enumdesc->enumdef));
+ rb_ivar_set(mod, descriptor_instancevar_interned,
+ get_def_obj(enumdesc->enumdef));
return mod;
}