OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/arm64/lithium-codegen-arm64.h" | 7 #include "src/arm64/lithium-codegen-arm64.h" |
8 #include "src/arm64/lithium-gap-resolver-arm64.h" | 8 #include "src/arm64/lithium-gap-resolver-arm64.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 1053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 if (branch_type == always && | 1064 if (branch_type == always && |
1065 frame_is_built_ && !info()->saves_caller_doubles()) { | 1065 frame_is_built_ && !info()->saves_caller_doubles()) { |
1066 DeoptComment(deopt_info); | 1066 DeoptComment(deopt_info); |
1067 __ Call(entry, RelocInfo::RUNTIME_ENTRY); | 1067 __ Call(entry, RelocInfo::RUNTIME_ENTRY); |
1068 } else { | 1068 } else { |
1069 Deoptimizer::JumpTableEntry* table_entry = | 1069 Deoptimizer::JumpTableEntry* table_entry = |
1070 new (zone()) Deoptimizer::JumpTableEntry( | 1070 new (zone()) Deoptimizer::JumpTableEntry( |
1071 entry, deopt_info, bailout_type, !frame_is_built_); | 1071 entry, deopt_info, bailout_type, !frame_is_built_); |
1072 // We often have several deopts to the same entry, reuse the last | 1072 // We often have several deopts to the same entry, reuse the last |
1073 // jump entry if this is the case. | 1073 // jump entry if this is the case. |
1074 if (FLAG_trace_deopt || isolate()->cpu_profiler()->is_profiling() || | 1074 if (jump_table_.is_empty() || |
1075 jump_table_.is_empty() || | |
1076 !table_entry->IsEquivalentTo(*jump_table_.last())) { | 1075 !table_entry->IsEquivalentTo(*jump_table_.last())) { |
1077 jump_table_.Add(table_entry, zone()); | 1076 jump_table_.Add(table_entry, zone()); |
1078 } | 1077 } |
1079 __ B(&jump_table_.last()->label, branch_type, reg, bit); | 1078 __ B(&jump_table_.last()->label, branch_type, reg, bit); |
1080 } | 1079 } |
1081 } | 1080 } |
1082 | 1081 |
1083 | 1082 |
1084 void LCodeGen::Deoptimize(LInstruction* instr, | 1083 void LCodeGen::Deoptimize(LInstruction* instr, |
1085 Deoptimizer::DeoptReason deopt_reason, | 1084 Deoptimizer::DeoptReason deopt_reason, |
(...skipping 5011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6097 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6096 Handle<ScopeInfo> scope_info = instr->scope_info(); |
6098 __ Push(scope_info); | 6097 __ Push(scope_info); |
6099 __ Push(ToRegister(instr->function())); | 6098 __ Push(ToRegister(instr->function())); |
6100 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6099 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6101 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6100 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6102 } | 6101 } |
6103 | 6102 |
6104 | 6103 |
6105 | 6104 |
6106 } } // namespace v8::internal | 6105 } } // namespace v8::internal |
OLD | NEW |