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/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
(...skipping 5304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5315 __ Add(element_addr, mem_op.base(), mem_op.OffsetAsOperand()); | 5315 __ Add(element_addr, mem_op.base(), mem_op.OffsetAsOperand()); |
5316 __ RecordWrite(elements, element_addr, value, GetLinkRegisterState(), | 5316 __ RecordWrite(elements, element_addr, value, GetLinkRegisterState(), |
5317 kSaveFPRegs, EMIT_REMEMBERED_SET, check_needed, | 5317 kSaveFPRegs, EMIT_REMEMBERED_SET, check_needed, |
5318 instr->hydrogen()->PointersToHereCheckForValue()); | 5318 instr->hydrogen()->PointersToHereCheckForValue()); |
5319 } | 5319 } |
5320 } | 5320 } |
5321 | 5321 |
5322 | 5322 |
5323 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 5323 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
5324 ASSERT(ToRegister(instr->context()).is(cp)); | 5324 ASSERT(ToRegister(instr->context()).is(cp)); |
5325 ASSERT(ToRegister(instr->object()).Is(x2)); | 5325 ASSERT(ToRegister(instr->object()).is(KeyedStoreIC::ReceiverRegister())); |
5326 ASSERT(ToRegister(instr->key()).Is(x1)); | 5326 ASSERT(ToRegister(instr->key()).is(KeyedStoreIC::NameRegister())); |
5327 ASSERT(ToRegister(instr->value()).Is(x0)); | 5327 ASSERT(ToRegister(instr->value()).is(KeyedStoreIC::ValueRegister())); |
5328 | 5328 |
5329 Handle<Code> ic = instr->strict_mode() == STRICT | 5329 Handle<Code> ic = instr->strict_mode() == STRICT |
5330 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() | 5330 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() |
5331 : isolate()->builtins()->KeyedStoreIC_Initialize(); | 5331 : isolate()->builtins()->KeyedStoreIC_Initialize(); |
5332 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 5332 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
5333 } | 5333 } |
5334 | 5334 |
5335 | 5335 |
5336 void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { | 5336 void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
5337 Representation representation = instr->representation(); | 5337 Representation representation = instr->representation(); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5422 kSaveFPRegs, | 5422 kSaveFPRegs, |
5423 EMIT_REMEMBERED_SET, | 5423 EMIT_REMEMBERED_SET, |
5424 instr->hydrogen()->SmiCheckForWriteBarrier(), | 5424 instr->hydrogen()->SmiCheckForWriteBarrier(), |
5425 instr->hydrogen()->PointersToHereCheckForValue()); | 5425 instr->hydrogen()->PointersToHereCheckForValue()); |
5426 } | 5426 } |
5427 } | 5427 } |
5428 | 5428 |
5429 | 5429 |
5430 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { | 5430 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |
5431 ASSERT(ToRegister(instr->context()).is(cp)); | 5431 ASSERT(ToRegister(instr->context()).is(cp)); |
5432 ASSERT(ToRegister(instr->value()).is(x0)); | 5432 ASSERT(ToRegister(instr->object()).is(StoreIC::ReceiverRegister())); |
5433 ASSERT(ToRegister(instr->object()).is(x1)); | 5433 ASSERT(ToRegister(instr->value()).is(StoreIC::ValueRegister())); |
5434 | 5434 |
5435 // Name must be in x2. | 5435 __ Mov(StoreIC::NameRegister(), Operand(instr->name())); |
5436 __ Mov(x2, Operand(instr->name())); | |
5437 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); | 5436 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); |
5438 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 5437 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
5439 } | 5438 } |
5440 | 5439 |
5441 | 5440 |
5442 void LCodeGen::DoStringAdd(LStringAdd* instr) { | 5441 void LCodeGen::DoStringAdd(LStringAdd* instr) { |
5443 ASSERT(ToRegister(instr->context()).is(cp)); | 5442 ASSERT(ToRegister(instr->context()).is(cp)); |
5444 ASSERT(ToRegister(instr->left()).Is(x1)); | 5443 ASSERT(ToRegister(instr->left()).Is(x1)); |
5445 ASSERT(ToRegister(instr->right()).Is(x0)); | 5444 ASSERT(ToRegister(instr->right()).Is(x0)); |
5446 StringAddStub stub(isolate(), | 5445 StringAddStub stub(isolate(), |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6043 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6042 Handle<ScopeInfo> scope_info = instr->scope_info(); |
6044 __ Push(scope_info); | 6043 __ Push(scope_info); |
6045 __ Push(ToRegister(instr->function())); | 6044 __ Push(ToRegister(instr->function())); |
6046 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6045 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6047 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6046 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6048 } | 6047 } |
6049 | 6048 |
6050 | 6049 |
6051 | 6050 |
6052 } } // namespace v8::internal | 6051 } } // namespace v8::internal |
OLD | NEW |