because some build failures persisted

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-09-26 01:11:20 +00:00
Родитель ac17835782
Коммит e08f418230
9 изменённых файлов: 18 добавлений и 81 удалений

Просмотреть файл

@ -3245,8 +3245,6 @@ iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
case idGE: SP_INSN(ge); return COMPILE_OK; case idGE: SP_INSN(ge); return COMPILE_OK;
case idLTLT: SP_INSN(ltlt); return COMPILE_OK; case idLTLT: SP_INSN(ltlt); return COMPILE_OK;
case idAREF: SP_INSN(aref); return COMPILE_OK; case idAREF: SP_INSN(aref); return COMPILE_OK;
case idAnd: SP_INSN(and); return COMPILE_OK;
case idOr: SP_INSN(or); return COMPILE_OK;
} }
break; break;
case 2: case 2:
@ -6443,11 +6441,17 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, in
INIT_ANCHOR(args); INIT_ANCHOR(args);
#if SUPPORT_JOKE #if SUPPORT_JOKE
if (nd_type(node) == NODE_VCALL) { if (nd_type(node) == NODE_VCALL) {
ID id_bitblt;
ID id_answer; ID id_answer;
CONST_ID(id_bitblt, "bitblt");
CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything"); CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything");
if (mid == id_answer) { if (mid == id_bitblt) {
ADD_INSN(ret, line, bitblt);
break;
}
else if (mid == id_answer) {
ADD_INSN(ret, line, answer); ADD_INSN(ret, line, answer);
break; break;
} }

Просмотреть файл

@ -97,8 +97,6 @@ token_ops = %[\
Eqq === EQQ Eqq === EQQ
Neq != NEQ Neq != NEQ
Not ! Not !
And &
Or |
Backquote ` Backquote `
EqTilde =~ MATCH EqTilde =~ MATCH
NeqTilde !~ NMATCH NeqTilde !~ NMATCH

Просмотреть файл

@ -1216,34 +1216,6 @@ opt_ltlt
} }
} }
/* optimized X&Y. */
DEFINE_INSN
opt_and
(CALL_INFO ci, CALL_CACHE cc)
(VALUE recv, VALUE obj)
(VALUE val)
{
val = vm_opt_and(recv, obj);
if (val == Qundef) {
CALL_SIMPLE_METHOD();
}
}
/* optimized X|Y. */
DEFINE_INSN
opt_or
(CALL_INFO ci, CALL_CACHE cc)
(VALUE recv, VALUE obj)
(VALUE val)
{
val = vm_opt_or(recv, obj);
if (val == Qundef) {
CALL_SIMPLE_METHOD();
}
}
/* [] */ /* [] */
DEFINE_INSN DEFINE_INSN
opt_aref opt_aref
@ -1438,6 +1410,16 @@ opt_call_c_function
NEXT_INSN(); NEXT_INSN();
} }
/* BLT */
DEFINE_INSN
bitblt
()
()
(VALUE ret)
{
ret = rb_str_new2("a bit of bacon, lettuce and tomato");
}
/* The Answer to Life, the Universe, and Everything */ /* The Answer to Life, the Universe, and Everything */
DEFINE_INSN DEFINE_INSN
answer answer

Просмотреть файл

@ -19,6 +19,7 @@ class TestJIT < Test::Unit::TestCase
:opt_call_c_function, :opt_call_c_function,
# joke # joke
:bitblt,
:answer, :answer,
# TODO: write tests for them # TODO: write tests for them
@ -477,14 +478,6 @@ class TestJIT < Test::Unit::TestCase
assert_compile_once('[1] << 2', result_inspect: '[1, 2]', insns: %i[opt_ltlt]) assert_compile_once('[1] << 2', result_inspect: '[1, 2]', insns: %i[opt_ltlt])
end end
def test_compile_insn_opt_and
assert_compile_once('1 & 3', result_inspect: '1', insns: %i[opt_and])
end
def test_compile_insn_opt_or
assert_compile_once('1 | 3', result_inspect: '3', insns: %i[opt_or])
end
def test_compile_insn_opt_aref def test_compile_insn_opt_aref
skip_on_mswin skip_on_mswin
# optimized call (optimized JIT) -> send call # optimized call (optimized JIT) -> send call

Просмотреть файл

@ -187,16 +187,6 @@ class TestRubyOptimization < Test::Unit::TestCase
assert_redefine_method('String', '<<', 'assert_equal "b", "a" << "b"') assert_redefine_method('String', '<<', 'assert_equal "b", "a" << "b"')
end end
def test_fixnum_and
assert_equal 1, 1&3
assert_redefine_method('Integer', '&', 'assert_equal 3, 1&3')
end
def test_fixnum_or
assert_equal 3, 1|3
assert_redefine_method('Integer', '|', 'assert_equal 1, 3|1')
end
def test_array_plus def test_array_plus
assert_equal [1,2], [1]+[2] assert_equal [1,2], [1]+[2]
assert_redefine_method('Array', '+', 'assert_equal [2], [1]+[2]') assert_redefine_method('Array', '+', 'assert_equal [2], [1]+[2]')

Просмотреть файл

@ -52,8 +52,6 @@ module MJITHeader
'vm_opt_gt', 'vm_opt_gt',
'vm_opt_ge', 'vm_opt_ge',
'vm_opt_ltlt', 'vm_opt_ltlt',
'vm_opt_and',
'vm_opt_or',
'vm_opt_aref', 'vm_opt_aref',
'vm_opt_aset', 'vm_opt_aset',
'vm_opt_aref_with', 'vm_opt_aref_with',

2
vm.c
Просмотреть файл

@ -1610,8 +1610,6 @@ vm_init_redefined_flag(void)
OP(Max, MAX), (C(Array)); OP(Max, MAX), (C(Array));
OP(Min, MIN), (C(Array)); OP(Min, MIN), (C(Array));
OP(Call, CALL), (C(Proc)); OP(Call, CALL), (C(Proc));
OP(And, AND), (C(Integer));
OP(Or, OR), (C(Integer));
#undef C #undef C
#undef OP #undef OP
} }

Просмотреть файл

@ -531,8 +531,6 @@ enum ruby_basic_operators {
BOP_MAX, BOP_MAX,
BOP_MIN, BOP_MIN,
BOP_CALL, BOP_CALL,
BOP_AND,
BOP_OR,
BOP_LAST_ BOP_LAST_
}; };

Просмотреть файл

@ -3652,30 +3652,6 @@ vm_opt_ltlt(VALUE recv, VALUE obj)
} }
} }
static VALUE
vm_opt_and(VALUE recv, VALUE obj)
{
if (FIXNUM_2_P(recv, obj) &&
BASIC_OP_UNREDEFINED_P(BOP_AND, INTEGER_REDEFINED_OP_FLAG)) {
return LONG2NUM(FIX2LONG(recv) & FIX2LONG(obj));
}
else {
return Qundef;
}
}
static VALUE
vm_opt_or(VALUE recv, VALUE obj)
{
if (FIXNUM_2_P(recv, obj) &&
BASIC_OP_UNREDEFINED_P(BOP_OR, INTEGER_REDEFINED_OP_FLAG)) {
return LONG2NUM(FIX2LONG(recv) | FIX2LONG(obj));
}
else {
return Qundef;
}
}
static VALUE static VALUE
vm_opt_aref(VALUE recv, VALUE obj) vm_opt_aref(VALUE recv, VALUE obj)
{ {