diff options
-rw-r--r-- | benchmark/mjit_class.yml | 11 | ||||
-rw-r--r-- | benchmark/mjit_send_cfunc.yml | 7 | ||||
-rw-r--r-- | common.mk | 2 | ||||
-rw-r--r-- | kernel.rb | 21 | ||||
-rw-r--r-- | object.c | 17 |
5 files changed, 34 insertions, 24 deletions
diff --git a/benchmark/mjit_class.yml b/benchmark/mjit_class.yml new file mode 100644 index 0000000000..22f95c2d4d --- /dev/null +++ b/benchmark/mjit_class.yml @@ -0,0 +1,11 @@ +type: lib/benchmark_driver/runner/mjit +prelude: | + def mjit_class(obj) + obj.class + end + +benchmark: + - mjit_class(self) + - mjit_class(1) + +loop_count: 40000000 diff --git a/benchmark/mjit_send_cfunc.yml b/benchmark/mjit_send_cfunc.yml deleted file mode 100644 index 8caa62ce81..0000000000 --- a/benchmark/mjit_send_cfunc.yml +++ /dev/null @@ -1,7 +0,0 @@ -type: lib/benchmark_driver/runner/mjit -prelude: | - def mjit_send_cfunc - self.class - end -benchmark: mjit_send_cfunc -loop_count: 100000000 @@ -8514,6 +8514,7 @@ mjit_compile.$(OBJEXT): $(top_srcdir)/internal/compilers.h mjit_compile.$(OBJEXT): $(top_srcdir)/internal/gc.h mjit_compile.$(OBJEXT): $(top_srcdir)/internal/hash.h mjit_compile.$(OBJEXT): $(top_srcdir)/internal/imemo.h +mjit_compile.$(OBJEXT): $(top_srcdir)/internal/object.h mjit_compile.$(OBJEXT): $(top_srcdir)/internal/serial.h mjit_compile.$(OBJEXT): $(top_srcdir)/internal/static_assert.h mjit_compile.$(OBJEXT): $(top_srcdir)/internal/variable.h @@ -9266,6 +9267,7 @@ object.$(OBJEXT): {$(VPATH)}internal/value_type.h object.$(OBJEXT): {$(VPATH)}internal/variable.h object.$(OBJEXT): {$(VPATH)}internal/warning_push.h object.$(OBJEXT): {$(VPATH)}internal/xmalloc.h +object.$(OBJEXT): {$(VPATH)}kernel.rb object.$(OBJEXT): {$(VPATH)}kernel.rbinc object.$(OBJEXT): {$(VPATH)}missing.h object.$(OBJEXT): {$(VPATH)}object.c @@ -1,6 +1,27 @@ module Kernel # # call-seq: + # obj.class -> class + # + # Returns the class of <i>obj</i>. This method must always be called + # with an explicit receiver, as #class is also a reserved word in + # Ruby. + # + # 1.class #=> Integer + # self.class #=> Object + #-- + # Equivalent to \c Object\#class in Ruby. + # + # Returns the class of \c obj, skipping singleton classes or module inclusions. + #++ + # + def class + Primitive.attr! 'inline' + Primitive.cexpr! 'rb_obj_class(self)' + end + + # + # call-seq: # obj.clone(freeze: nil) -> an_object # # Produces a shallow copy of <i>obj</i>---the instance variables of @@ -291,22 +291,6 @@ rb_class_real(VALUE cl) return cl; } -/** - * call-seq: - * obj.class -> class - * - * Returns the class of <i>obj</i>. This method must always be called - * with an explicit receiver, as #class is also a reserved word in - * Ruby. - * - * 1.class #=> Integer - * self.class #=> Object - *-- - * Equivalent to \c Object\#class in Ruby. - * - * Returns the class of \c obj, skipping singleton classes or module inclusions. - *++ - */ VALUE rb_obj_class(VALUE obj) { @@ -4606,7 +4590,6 @@ InitVM_Object(void) rb_define_method(rb_mKernel, "hash", rb_obj_hash, 0); /* in hash.c */ rb_define_method(rb_mKernel, "<=>", rb_obj_cmp, 1); - rb_define_method(rb_mKernel, "class", rb_obj_class, 0); rb_define_method(rb_mKernel, "singleton_class", rb_obj_singleton_class, 0); rb_define_method(rb_mKernel, "dup", rb_obj_dup, 0); rb_define_method(rb_mKernel, "itself", rb_obj_itself, 0); |