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 |