summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-14 07:44:44 (GMT)
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-14 07:44:44 (GMT)
commit9c6bd0d84064dcdbba24ab4b65238706827fe7a3 (patch)
tree669915f5faa81efdd826b4b51162fca733a2ab88 /insns.def
parent402001d6c79c10e620e9b7b1e64752d5431a0129 (diff)
move ADD_PC around (take 2)
Now that we can say for sure if an instruction calls a method or not internally, it is now possible to reroute the bugs that forced us to revert the "move PC around" optimization. First try: r62051 Reverted: r63763 See also: r63999 ---- trunk: ruby 2.6.0dev (2018-09-13 trunk 64736) [x86_64-darwin15] ours: ruby 2.6.0dev (2018-09-13 trunk 64736) [x86_64-darwin15] last_commit=move ADD_PC around (take 2) Calculating ------------------------------------- trunk ours so_ackermann 1.884 2.278 i/s - 1.000 times in 0.530926s 0.438935s so_array 1.178 1.157 i/s - 1.000 times in 0.848786s 0.864467s so_binary_trees 0.176 0.177 i/s - 1.000 times in 5.683895s 5.657707s so_concatenate 0.220 0.221 i/s - 1.000 times in 4.546896s 4.518949s so_count_words 6.729 6.470 i/s - 1.000 times in 0.148602s 0.154561s so_exception 3.324 3.688 i/s - 1.000 times in 0.300872s 0.271147s so_fannkuch 0.546 0.968 i/s - 1.000 times in 1.831328s 1.033376s so_fasta 0.541 0.547 i/s - 1.000 times in 1.849923s 1.827091s so_k_nucleotide 0.800 0.777 i/s - 1.000 times in 1.250635s 1.286295s so_lists 2.101 1.848 i/s - 1.000 times in 0.475954s 0.541095s so_mandelbrot 0.435 0.408 i/s - 1.000 times in 2.299328s 2.450535s so_matrix 1.946 1.912 i/s - 1.000 times in 0.513872s 0.523076s so_meteor_contest 0.311 0.317 i/s - 1.000 times in 3.219297s 3.152052s so_nbody 0.746 0.703 i/s - 1.000 times in 1.339815s 1.423441s so_nested_loop 0.899 0.901 i/s - 1.000 times in 1.111767s 1.109555s so_nsieve 0.559 0.579 i/s - 1.000 times in 1.787763s 1.726552s so_nsieve_bits 0.435 0.428 i/s - 1.000 times in 2.296282s 2.333852s so_object 1.368 1.442 i/s - 1.000 times in 0.731237s 0.693684s so_partial_sums 0.616 0.546 i/s - 1.000 times in 1.623592s 1.833097s so_pidigits 0.831 0.832 i/s - 1.000 times in 1.203117s 1.202334s so_random 2.934 2.724 i/s - 1.000 times in 0.340791s 0.367150s so_reverse_complement 0.583 0.866 i/s - 1.000 times in 1.714144s 1.154615s so_sieve 1.829 2.081 i/s - 1.000 times in 0.546607s 0.480562s so_spectralnorm 0.524 0.558 i/s - 1.000 times in 1.908716s 1.792382s git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def116
1 files changed, 24 insertions, 92 deletions
diff --git a/insns.def b/insns.def
index df0cd26..39c61a7 100644
--- a/insns.def
+++ b/insns.def
@@ -761,10 +761,7 @@ opt_str_freeze
if (val == Qundef) {
PUSH(rb_str_resurrect(str));
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -778,10 +775,7 @@ opt_str_uminus
if (val == Qundef) {
PUSH(rb_str_resurrect(str));
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1058,10 +1052,7 @@ opt_plus
val = vm_opt_plus(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1075,10 +1066,7 @@ opt_minus
val = vm_opt_minus(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1092,10 +1080,7 @@ opt_mult
val = vm_opt_mult(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1109,10 +1094,7 @@ opt_div
val = vm_opt_div(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1126,10 +1108,7 @@ opt_mod
val = vm_opt_mod(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1147,10 +1126,7 @@ opt_eq
val = opt_eq_func(recv, obj, ci, cc);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1166,10 +1142,7 @@ opt_neq
val = vm_opt_neq(ci, cc, ci_eq, cc_eq, recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1183,10 +1156,7 @@ opt_lt
val = vm_opt_lt(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1200,10 +1170,7 @@ opt_le
val = vm_opt_le(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1217,10 +1184,7 @@ opt_gt
val = vm_opt_gt(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1234,10 +1198,7 @@ opt_ge
val = vm_opt_ge(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1251,10 +1212,7 @@ opt_ltlt
val = vm_opt_ltlt(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1273,10 +1231,7 @@ opt_aref
val = vm_opt_aref(recv, obj);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1293,10 +1248,7 @@ opt_aset
val = vm_opt_aset(recv, obj, set);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1318,9 +1270,8 @@ opt_aset_with
#ifndef MJIT_HEADER
TOPN(0) = rb_str_resurrect(key);
PUSH(val);
- ADD_PC(-WIDTH_OF_opt_send_without_block);
#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1338,9 +1289,8 @@ opt_aref_with
if (val == Qundef) {
#ifndef MJIT_HEADER
PUSH(rb_str_resurrect(key));
- ADD_PC(-WIDTH_OF_opt_send_without_block);
#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1354,10 +1304,7 @@ opt_length
val = vm_opt_length(recv, BOP_LENGTH);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1371,10 +1318,7 @@ opt_size
val = vm_opt_length(recv, BOP_SIZE);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1388,10 +1332,7 @@ opt_empty_p
val = vm_opt_empty_p(recv);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1405,10 +1346,7 @@ opt_succ
val = vm_opt_succ(recv);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1422,10 +1360,7 @@ opt_not
val = vm_opt_not(ci, cc, recv);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}
@@ -1450,10 +1385,7 @@ opt_regexpmatch2
val = vm_opt_regexpmatch2(obj2, obj1);
if (val == Qundef) {
-#ifndef MJIT_HEADER
- ADD_PC(-WIDTH_OF_opt_send_without_block);
-#endif
- DISPATCH_ORIGINAL_INSN(opt_send_without_block);
+ CALL_SIMPLE_METHOD();
}
}