| 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 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 masm(), kind, arguments, deopt_mode); | 550 masm(), kind, arguments, deopt_mode); |
| 551 | 551 |
| 552 for (int i = 0; i < operands->length(); i++) { | 552 for (int i = 0; i < operands->length(); i++) { |
| 553 LOperand* pointer = operands->at(i); | 553 LOperand* pointer = operands->at(i); |
| 554 if (pointer->IsStackSlot()) { | 554 if (pointer->IsStackSlot()) { |
| 555 safepoint.DefinePointerSlot(pointer->index(), zone()); | 555 safepoint.DefinePointerSlot(pointer->index(), zone()); |
| 556 } else if (pointer->IsRegister() && (kind & Safepoint::kWithRegisters)) { | 556 } else if (pointer->IsRegister() && (kind & Safepoint::kWithRegisters)) { |
| 557 safepoint.DefinePointerRegister(ToRegister(pointer), zone()); | 557 safepoint.DefinePointerRegister(ToRegister(pointer), zone()); |
| 558 } | 558 } |
| 559 } | 559 } |
| 560 | |
| 561 if (kind & Safepoint::kWithRegisters) { | |
| 562 // Register cp always contains a pointer to the context. | |
| 563 safepoint.DefinePointerRegister(cp, zone()); | |
| 564 } | |
| 565 } | 560 } |
| 566 | 561 |
| 567 void LCodeGen::RecordSafepoint(LPointerMap* pointers, | 562 void LCodeGen::RecordSafepoint(LPointerMap* pointers, |
| 568 Safepoint::DeoptMode deopt_mode) { | 563 Safepoint::DeoptMode deopt_mode) { |
| 569 RecordSafepoint(pointers, Safepoint::kSimple, 0, deopt_mode); | 564 RecordSafepoint(pointers, Safepoint::kSimple, 0, deopt_mode); |
| 570 } | 565 } |
| 571 | 566 |
| 572 | 567 |
| 573 void LCodeGen::RecordSafepoint(Safepoint::DeoptMode deopt_mode) { | 568 void LCodeGen::RecordSafepoint(Safepoint::DeoptMode deopt_mode) { |
| 574 LPointerMap empty_pointers(zone()); | 569 LPointerMap empty_pointers(zone()); |
| (...skipping 5466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6041 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6036 Handle<ScopeInfo> scope_info = instr->scope_info(); |
| 6042 __ Push(scope_info); | 6037 __ Push(scope_info); |
| 6043 __ Push(ToRegister(instr->function())); | 6038 __ Push(ToRegister(instr->function())); |
| 6044 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6039 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 6045 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6040 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 6046 } | 6041 } |
| 6047 | 6042 |
| 6048 | 6043 |
| 6049 | 6044 |
| 6050 } } // namespace v8::internal | 6045 } } // namespace v8::internal |
| OLD | NEW |