| 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 #if V8_TARGET_ARCH_X64 | 7 #if V8_TARGET_ARCH_X64 |
| 8 | 8 |
| 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 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 __ movp(rbp, rsp); | 318 __ movp(rbp, rsp); |
| 319 __ Push(rsi); | 319 __ Push(rsi); |
| 320 // This variant of deopt can only be used with stubs. Since we don't | 320 // This variant of deopt can only be used with stubs. Since we don't |
| 321 // have a function pointer to install in the stack frame that we're | 321 // have a function pointer to install in the stack frame that we're |
| 322 // building, install a special marker there instead. | 322 // building, install a special marker there instead. |
| 323 DCHECK(info()->IsStub()); | 323 DCHECK(info()->IsStub()); |
| 324 __ Move(rsi, Smi::FromInt(StackFrame::STUB)); | 324 __ Move(rsi, Smi::FromInt(StackFrame::STUB)); |
| 325 __ Push(rsi); | 325 __ Push(rsi); |
| 326 __ movp(rsi, MemOperand(rsp, kPointerSize)); | 326 __ movp(rsi, MemOperand(rsp, kPointerSize)); |
| 327 __ call(kScratchRegister); | 327 __ call(kScratchRegister); |
| 328 info()->LogDeoptCallPosition(masm()->pc_offset(), |
| 329 table_entry->deopt_info.inlining_id); |
| 328 } | 330 } |
| 329 } else { | 331 } else { |
| 330 if (info()->saves_caller_doubles()) { | 332 if (info()->saves_caller_doubles()) { |
| 331 DCHECK(info()->IsStub()); | 333 DCHECK(info()->IsStub()); |
| 332 RestoreCallerDoubles(); | 334 RestoreCallerDoubles(); |
| 333 } | 335 } |
| 334 __ call(entry, RelocInfo::RUNTIME_ENTRY); | 336 __ call(entry, RelocInfo::RUNTIME_ENTRY); |
| 337 info()->LogDeoptCallPosition(masm()->pc_offset(), |
| 338 table_entry->deopt_info.inlining_id); |
| 335 } | 339 } |
| 336 } | 340 } |
| 337 return !is_aborted(); | 341 return !is_aborted(); |
| 338 } | 342 } |
| 339 | 343 |
| 340 | 344 |
| 341 bool LCodeGen::GenerateDeferredCode() { | 345 bool LCodeGen::GenerateDeferredCode() { |
| 342 DCHECK(is_generating()); | 346 DCHECK(is_generating()); |
| 343 if (deferred_.length() > 0) { | 347 if (deferred_.length() > 0) { |
| 344 for (int i = 0; !is_aborted() && i < deferred_.length(); i++) { | 348 for (int i = 0; !is_aborted() && i < deferred_.length(); i++) { |
| (...skipping 5594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5939 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5943 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 5940 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5944 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 5941 } | 5945 } |
| 5942 | 5946 |
| 5943 | 5947 |
| 5944 #undef __ | 5948 #undef __ |
| 5945 | 5949 |
| 5946 } } // namespace v8::internal | 5950 } } // namespace v8::internal |
| 5947 | 5951 |
| 5948 #endif // V8_TARGET_ARCH_X64 | 5952 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |