| Index: src/x64/lithium-codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/lithium-codegen-x64.cc (revision 13219)
|
| +++ src/x64/lithium-codegen-x64.cc (working copy)
|
| @@ -617,15 +617,23 @@
|
| }
|
|
|
| if (cc == no_condition) {
|
| - __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
|
| + if (FLAG_disable_direct_deopt) {
|
| + __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
|
| + } else {
|
| + __ jmp(entry, RelocInfo::DEOPT_ENTRY);
|
| + }
|
| } else {
|
| - // We often have several deopts to the same entry, reuse the last
|
| - // jump entry if this is the case.
|
| - if (jump_table_.is_empty() ||
|
| - jump_table_.last().address != entry) {
|
| - jump_table_.Add(JumpTableEntry(entry), zone());
|
| + if (FLAG_disable_direct_deopt) {
|
| + // We often have several deopts to the same entry, reuse the last
|
| + // jump entry if this is the case.
|
| + if (jump_table_.is_empty() ||
|
| + jump_table_.last().address != entry) {
|
| + jump_table_.Add(JumpTableEntry(entry), zone());
|
| + }
|
| + __ j(cc, &jump_table_.last().label);
|
| + } else {
|
| + __ j(cc, entry, RelocInfo::DEOPT_ENTRY);
|
| }
|
| - __ j(cc, &jump_table_.last().label);
|
| }
|
| }
|
|
|
|
|