| Index: src/x64/lithium-codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/lithium-codegen-x64.cc (revision 13543)
|
| +++ src/x64/lithium-codegen-x64.cc (working copy)
|
| @@ -329,9 +329,9 @@
|
| }
|
| } else {
|
| if (is_lazy_deopt) {
|
| - __ Call(entry, RelocInfo::RUNTIME_ENTRY);
|
| + __ call(entry, RelocInfo::RUNTIME_ENTRY);
|
| } else {
|
| - __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
|
| + __ jmp(entry, RelocInfo::RUNTIME_ENTRY);
|
| }
|
| }
|
| }
|
| @@ -714,21 +714,25 @@
|
| bool lazy_deopt = info()->IsStub();
|
| if (cc == no_condition) {
|
| if (lazy_deopt) {
|
| - __ Call(entry, RelocInfo::RUNTIME_ENTRY);
|
| + __ call(entry, RelocInfo::RUNTIME_ENTRY);
|
| } else {
|
| - __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
|
| + __ jmp(entry, RelocInfo::RUNTIME_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_.last().needs_frame != !frame_is_built_ ||
|
| - jump_table_.last().is_lazy_deopt != lazy_deopt) {
|
| - JumpTableEntry table_entry(entry, !frame_is_built_, lazy_deopt);
|
| - jump_table_.Add(table_entry, zone());
|
| + if (!lazy_deopt && frame_is_built_) {
|
| + __ j(cc, entry, RelocInfo::RUNTIME_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_.last().needs_frame != !frame_is_built_ ||
|
| + jump_table_.last().is_lazy_deopt != lazy_deopt) {
|
| + JumpTableEntry table_entry(entry, !frame_is_built_, lazy_deopt);
|
| + jump_table_.Add(table_entry, zone());
|
| + }
|
| + __ j(cc, &jump_table_.last().label);
|
| }
|
| - __ j(cc, &jump_table_.last().label);
|
| }
|
| }
|
|
|
|
|