| 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 |