diff options
author | Chris Fallin <cfallin@google.com> | 2015-05-19 15:33:48 -0700 |
---|---|---|
committer | Chris Fallin <cfallin@google.com> | 2015-05-19 16:19:00 -0700 |
commit | 231886f6327b7cad480b96d08595f45b3526cb4a (patch) | |
tree | a20711cf778f1f0d516d4648991a997963fe24f9 /ruby/ext/google/protobuf_c/message.c | |
parent | a8b38c598d7f65b281a72809b28117afdb760931 (diff) | |
download | protobuf-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.c | 24 |
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; } |