OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/arm/lithium-codegen-arm.h" | 7 #include "src/arm/lithium-codegen-arm.h" |
8 #include "src/arm/lithium-gap-resolver-arm.h" | 8 #include "src/arm/lithium-gap-resolver-arm.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 4173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4184 EMIT_REMEMBERED_SET, | 4184 EMIT_REMEMBERED_SET, |
4185 instr->hydrogen()->SmiCheckForWriteBarrier(), | 4185 instr->hydrogen()->SmiCheckForWriteBarrier(), |
4186 instr->hydrogen()->PointersToHereCheckForValue()); | 4186 instr->hydrogen()->PointersToHereCheckForValue()); |
4187 } | 4187 } |
4188 } | 4188 } |
4189 } | 4189 } |
4190 | 4190 |
4191 | 4191 |
4192 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { | 4192 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |
4193 ASSERT(ToRegister(instr->context()).is(cp)); | 4193 ASSERT(ToRegister(instr->context()).is(cp)); |
4194 ASSERT(ToRegister(instr->object()).is(r1)); | 4194 ASSERT(ToRegister(instr->object()).is(StoreIC::ReceiverRegister())); |
4195 ASSERT(ToRegister(instr->value()).is(r0)); | 4195 ASSERT(ToRegister(instr->value()).is(StoreIC::ValueRegister())); |
4196 | 4196 |
4197 // Name is always in r2. | 4197 __ mov(StoreIC::NameRegister(), Operand(instr->name())); |
4198 __ mov(r2, Operand(instr->name())); | |
4199 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); | 4198 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); |
4200 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); | 4199 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); |
4201 } | 4200 } |
4202 | 4201 |
4203 | 4202 |
4204 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { | 4203 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
4205 Condition cc = instr->hydrogen()->allow_equality() ? hi : hs; | 4204 Condition cc = instr->hydrogen()->allow_equality() ? hi : hs; |
4206 if (instr->index()->IsConstantOperand()) { | 4205 if (instr->index()->IsConstantOperand()) { |
4207 Operand index = ToOperand(instr->index()); | 4206 Operand index = ToOperand(instr->index()); |
4208 Register length = ToRegister(instr->length()); | 4207 Register length = ToRegister(instr->length()); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4406 } else if (instr->hydrogen()->value()->representation().IsDouble()) { | 4405 } else if (instr->hydrogen()->value()->representation().IsDouble()) { |
4407 DoStoreKeyedFixedDoubleArray(instr); | 4406 DoStoreKeyedFixedDoubleArray(instr); |
4408 } else { | 4407 } else { |
4409 DoStoreKeyedFixedArray(instr); | 4408 DoStoreKeyedFixedArray(instr); |
4410 } | 4409 } |
4411 } | 4410 } |
4412 | 4411 |
4413 | 4412 |
4414 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 4413 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
4415 ASSERT(ToRegister(instr->context()).is(cp)); | 4414 ASSERT(ToRegister(instr->context()).is(cp)); |
4416 ASSERT(ToRegister(instr->object()).is(r2)); | 4415 ASSERT(ToRegister(instr->object()).is(KeyedStoreIC::ReceiverRegister())); |
4417 ASSERT(ToRegister(instr->key()).is(r1)); | 4416 ASSERT(ToRegister(instr->key()).is(KeyedStoreIC::NameRegister())); |
4418 ASSERT(ToRegister(instr->value()).is(r0)); | 4417 ASSERT(ToRegister(instr->value()).is(KeyedStoreIC::ValueRegister())); |
4419 | 4418 |
4420 Handle<Code> ic = instr->strict_mode() == STRICT | 4419 Handle<Code> ic = instr->strict_mode() == STRICT |
4421 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() | 4420 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() |
4422 : isolate()->builtins()->KeyedStoreIC_Initialize(); | 4421 : isolate()->builtins()->KeyedStoreIC_Initialize(); |
4423 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); | 4422 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); |
4424 } | 4423 } |
4425 | 4424 |
4426 | 4425 |
4427 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { | 4426 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
4428 Register object_reg = ToRegister(instr->object()); | 4427 Register object_reg = ToRegister(instr->object()); |
(...skipping 1451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5880 __ Push(scope_info); | 5879 __ Push(scope_info); |
5881 __ push(ToRegister(instr->function())); | 5880 __ push(ToRegister(instr->function())); |
5882 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5881 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
5883 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5882 RecordSafepoint(Safepoint::kNoLazyDeopt); |
5884 } | 5883 } |
5885 | 5884 |
5886 | 5885 |
5887 #undef __ | 5886 #undef __ |
5888 | 5887 |
5889 } } // namespace v8::internal | 5888 } } // namespace v8::internal |
OLD | NEW |