From 7ea3edc409dc6d383df9bc10d0034a6ecddb84dc Mon Sep 17 00:00:00 2001 From: ko1 Date: Tue, 9 Oct 2012 05:33:54 +0000 Subject: * vm_core.h (rb_call_info_t): add new type `rb_call_inf_t'. This data structure contains information including inline method cache. After that, `struct iseq_inline_cache_entry' does not need to contain inline cache for method invocation. Other information will be added to this data structure. * vm_core.h (rb_iseq_t): add `callinfo_entries' and `callinfo_size' members to `rb_iseq_t'. * insns.def, compile.c: Use CALL_INFO instead of IC. * tool/instruction.rb: support CALL_INFO as operand type. * vm_insnhelper.c, vm_insnhelper.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- insns.def | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'insns.def') diff --git a/insns.def b/insns.def index 0afc2f799a..ae1998af63 100644 --- a/insns.def +++ b/insns.def @@ -963,7 +963,7 @@ defineclass */ DEFINE_INSN send -(ID op_id, rb_num_t op_argc, ISEQ blockiseq, rb_num_t op_flag, IC ic) +(ID op_id, rb_num_t op_argc, ISEQ blockiseq, rb_num_t op_flag, CALL_INFO ci) (...) (VALUE val) // inc += - (int)(op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0)); { @@ -978,7 +978,7 @@ send /* get receiver */ recv = TOPN(num); klass = CLASS_OF(recv); - me = vm_method_search(id, klass, ic, &defined_class); + me = vm_method_search(id, klass, ci, &defined_class); CALL_METHOD(num, blockptr, flag, id, me, recv, defined_class); } @@ -1286,7 +1286,7 @@ opt_case_dispatch */ DEFINE_INSN opt_plus -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1349,7 +1349,7 @@ opt_plus */ DEFINE_INSN opt_minus -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1397,7 +1397,7 @@ opt_minus */ DEFINE_INSN opt_mult -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1450,7 +1450,7 @@ opt_mult */ DEFINE_INSN opt_div -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1513,7 +1513,7 @@ opt_div */ DEFINE_INSN opt_mod -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1577,11 +1577,11 @@ opt_mod */ DEFINE_INSN opt_eq -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { - val = opt_eq_func(recv, obj, ic); + val = opt_eq_func(recv, obj, ci); if (val == Qundef) { /* other */ @@ -1598,16 +1598,16 @@ opt_eq */ DEFINE_INSN opt_neq -(IC ic, IC ic_eq) +(CALL_INFO ci, CALL_INFO ci_eq) (VALUE recv, VALUE obj) (VALUE val) { extern VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2); - const rb_method_entry_t *me = vm_method_search(idNeq, CLASS_OF(recv), ic, 0); + const rb_method_entry_t *me = vm_method_search(idNeq, CLASS_OF(recv), ci, 0); val = Qundef; if (check_cfunc(me, rb_obj_not_equal)) { - val = opt_eq_func(recv, obj, ic_eq); + val = opt_eq_func(recv, obj, ci_eq); if (val != Qundef) { val = RTEST(val) ? Qfalse : Qtrue; @@ -1629,7 +1629,7 @@ opt_neq */ DEFINE_INSN opt_lt -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1673,7 +1673,7 @@ opt_lt */ DEFINE_INSN opt_le -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1708,7 +1708,7 @@ opt_le */ DEFINE_INSN opt_gt -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1752,7 +1752,7 @@ opt_gt */ DEFINE_INSN opt_ge -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1786,7 +1786,7 @@ opt_ge */ DEFINE_INSN opt_ltlt -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1818,7 +1818,7 @@ opt_ltlt */ DEFINE_INSN opt_aref -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj) (VALUE val) { @@ -1848,7 +1848,7 @@ opt_aref */ DEFINE_INSN opt_aset -(IC ic) +(CALL_INFO ci) (VALUE recv, VALUE obj, VALUE set) (VALUE val) { @@ -1881,7 +1881,7 @@ opt_aset */ DEFINE_INSN opt_length -(IC ic) +(CALL_INFO ci) (VALUE recv) (VALUE val) { @@ -1916,7 +1916,7 @@ opt_length */ DEFINE_INSN opt_size -(IC ic) +(CALL_INFO ci) (VALUE recv) (VALUE val) { @@ -1951,7 +1951,7 @@ opt_size */ DEFINE_INSN opt_empty_p -(IC ic) +(CALL_INFO ci) (VALUE recv) (VALUE val) { @@ -1989,7 +1989,7 @@ opt_empty_p */ DEFINE_INSN opt_succ -(IC ic) +(CALL_INFO ci) (VALUE recv) (VALUE val) { @@ -2036,12 +2036,12 @@ opt_succ */ DEFINE_INSN opt_not -(IC ic) +(CALL_INFO ci) (VALUE recv) (VALUE val) { extern VALUE rb_obj_not(VALUE obj); - const rb_method_entry_t *me = vm_method_search(idNot, CLASS_OF(recv), ic, 0); + const rb_method_entry_t *me = vm_method_search(idNot, CLASS_OF(recv), ci, 0); if (check_cfunc(me, rb_obj_not)) { val = RTEST(recv) ? Qfalse : Qtrue; -- cgit v1.2.3