| 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 #if V8_TARGET_ARCH_IA32 | 7 #if V8_TARGET_ARCH_IA32 |
| 8 | 8 |
| 9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 4036 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4047 kSaveFPRegs, | 4047 kSaveFPRegs, |
| 4048 EMIT_REMEMBERED_SET, | 4048 EMIT_REMEMBERED_SET, |
| 4049 instr->hydrogen()->SmiCheckForWriteBarrier(), | 4049 instr->hydrogen()->SmiCheckForWriteBarrier(), |
| 4050 instr->hydrogen()->PointersToHereCheckForValue()); | 4050 instr->hydrogen()->PointersToHereCheckForValue()); |
| 4051 } | 4051 } |
| 4052 } | 4052 } |
| 4053 | 4053 |
| 4054 | 4054 |
| 4055 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { | 4055 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |
| 4056 ASSERT(ToRegister(instr->context()).is(esi)); | 4056 ASSERT(ToRegister(instr->context()).is(esi)); |
| 4057 ASSERT(ToRegister(instr->object()).is(edx)); | 4057 ASSERT(ToRegister(instr->object()).is(StoreIC::ReceiverRegister())); |
| 4058 ASSERT(ToRegister(instr->value()).is(eax)); | 4058 ASSERT(ToRegister(instr->value()).is(StoreIC::ValueRegister())); |
| 4059 | 4059 |
| 4060 __ mov(ecx, instr->name()); | 4060 __ mov(StoreIC::NameRegister(), instr->name()); |
| 4061 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); | 4061 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); |
| 4062 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 4062 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 4063 } | 4063 } |
| 4064 | 4064 |
| 4065 | 4065 |
| 4066 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { | 4066 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
| 4067 Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal; | 4067 Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal; |
| 4068 if (instr->index()->IsConstantOperand()) { | 4068 if (instr->index()->IsConstantOperand()) { |
| 4069 __ cmp(ToOperand(instr->length()), | 4069 __ cmp(ToOperand(instr->length()), |
| 4070 ToImmediate(LConstantOperand::cast(instr->index()), | 4070 ToImmediate(LConstantOperand::cast(instr->index()), |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4229 } else if (instr->hydrogen()->value()->representation().IsDouble()) { | 4229 } else if (instr->hydrogen()->value()->representation().IsDouble()) { |
| 4230 DoStoreKeyedFixedDoubleArray(instr); | 4230 DoStoreKeyedFixedDoubleArray(instr); |
| 4231 } else { | 4231 } else { |
| 4232 DoStoreKeyedFixedArray(instr); | 4232 DoStoreKeyedFixedArray(instr); |
| 4233 } | 4233 } |
| 4234 } | 4234 } |
| 4235 | 4235 |
| 4236 | 4236 |
| 4237 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 4237 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
| 4238 ASSERT(ToRegister(instr->context()).is(esi)); | 4238 ASSERT(ToRegister(instr->context()).is(esi)); |
| 4239 ASSERT(ToRegister(instr->object()).is(edx)); | 4239 ASSERT(ToRegister(instr->object()).is(KeyedStoreIC::ReceiverRegister())); |
| 4240 ASSERT(ToRegister(instr->key()).is(ecx)); | 4240 ASSERT(ToRegister(instr->key()).is(KeyedStoreIC::NameRegister())); |
| 4241 ASSERT(ToRegister(instr->value()).is(eax)); | 4241 ASSERT(ToRegister(instr->value()).is(KeyedStoreIC::ValueRegister())); |
| 4242 | 4242 |
| 4243 Handle<Code> ic = instr->strict_mode() == STRICT | 4243 Handle<Code> ic = instr->strict_mode() == STRICT |
| 4244 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() | 4244 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() |
| 4245 : isolate()->builtins()->KeyedStoreIC_Initialize(); | 4245 : isolate()->builtins()->KeyedStoreIC_Initialize(); |
| 4246 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 4246 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 4247 } | 4247 } |
| 4248 | 4248 |
| 4249 | 4249 |
| 4250 void LCodeGen::DoTrapAllocationMemento(LTrapAllocationMemento* instr) { | 4250 void LCodeGen::DoTrapAllocationMemento(LTrapAllocationMemento* instr) { |
| 4251 Register object = ToRegister(instr->object()); | 4251 Register object = ToRegister(instr->object()); |
| (...skipping 1410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5662 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5662 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 5663 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5663 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 5664 } | 5664 } |
| 5665 | 5665 |
| 5666 | 5666 |
| 5667 #undef __ | 5667 #undef __ |
| 5668 | 5668 |
| 5669 } } // namespace v8::internal | 5669 } } // namespace v8::internal |
| 5670 | 5670 |
| 5671 #endif // V8_TARGET_ARCH_IA32 | 5671 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |