summaryrefslogtreecommitdiffstats
path: root/insns.def
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-06 20:42:50 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-06 20:42:50 +0000
commitec547571bb2375bdd8f835a40214d8f30402e5ff (patch)
tree9a3e5a4bac2efb8080b4649661b874a007c45cdf /insns.def
parent470a0f2b85576e61c268b7ab3e3ce8dc90633666 (diff)
downloadruby-ec547571bb2375bdd8f835a40214d8f30402e5ff.tar.gz
ruby-ec547571bb2375bdd8f835a40214d8f30402e5ff.tar.xz
ruby-ec547571bb2375bdd8f835a40214d8f30402e5ff.zip
* insns.def (opt_*): add IC operands.
* vm_insnhelper.h (CALL_SIMPLE_METHOD): add a version which use an inline cache. USE_IC_FOR_SPECIALIZED_METHOD macro switchs the behaviour. This change also removes CALL_SIMPLE_METHOD_IC() macro. * tool/instruction.rb: fix elimination process to ignore variable "ic". git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def36
1 files changed, 18 insertions, 18 deletions
diff --git a/insns.def b/insns.def
index 031e0bcb4..426f10163 100644
--- a/insns.def
+++ b/insns.def
@@ -1287,7 +1287,7 @@ opt_checkenv
*/
DEFINE_INSN
opt_plus
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1363,7 +1363,7 @@ opt_plus
*/
DEFINE_INSN
opt_minus
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1412,7 +1412,7 @@ opt_minus
*/
DEFINE_INSN
opt_mult
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1465,7 +1465,7 @@ opt_mult
*/
DEFINE_INSN
opt_div
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1529,7 +1529,7 @@ opt_div
*/
DEFINE_INSN
opt_mod
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1629,16 +1629,16 @@ opt_eq
*/
DEFINE_INSN
opt_neq
-(IC ic1, IC ic2)
+(IC ic, IC ic_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), ic1);
+ const rb_method_entry_t *me = vm_method_search(idNeq, CLASS_OF(recv), ic);
val = Qundef;
if (check_cfunc(me, rb_obj_not_equal)) {
- val = opt_eq_func(recv, obj, ic2);
+ val = opt_eq_func(recv, obj, ic_eq);
if (val != Qundef) {
val = RTEST(val) ? Qfalse : Qtrue;
@@ -1660,7 +1660,7 @@ opt_neq
*/
DEFINE_INSN
opt_lt
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1710,7 +1710,7 @@ opt_lt
*/
DEFINE_INSN
opt_le
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1740,7 +1740,7 @@ opt_le
*/
DEFINE_INSN
opt_gt
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1790,7 +1790,7 @@ opt_gt
*/
DEFINE_INSN
opt_ge
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1819,7 +1819,7 @@ opt_ge
*/
DEFINE_INSN
opt_ltlt
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1853,7 +1853,7 @@ opt_ltlt
*/
DEFINE_INSN
opt_aref
-()
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
@@ -1883,7 +1883,7 @@ opt_aref
*/
DEFINE_INSN
opt_aset
-()
+(IC ic)
(VALUE recv, VALUE obj, VALUE set)
(VALUE val)
{
@@ -1939,7 +1939,7 @@ opt_length
else {
INSN_LABEL(normal_dispatch):
PUSH(recv);
- CALL_SIMPLE_METHOD_IC(0, idLength, recv, ic);
+ CALL_SIMPLE_METHOD(0, idLength, recv);
}
}
@@ -1972,7 +1972,7 @@ opt_size
else {
INSN_LABEL(normal_dispatch):
PUSH(recv);
- CALL_SIMPLE_METHOD_IC(0, idSize, recv, ic);
+ CALL_SIMPLE_METHOD(0, idSize, recv);
}
}
@@ -1983,7 +1983,7 @@ opt_size
*/
DEFINE_INSN
opt_succ
-()
+(IC ic)
(VALUE recv)
(VALUE val)
{