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_X87 | 7 #if V8_TARGET_ARCH_X87 |
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 3946 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3957 temp, | 3957 temp, |
3958 EMIT_REMEMBERED_SET, | 3958 EMIT_REMEMBERED_SET, |
3959 instr->hydrogen()->SmiCheckForWriteBarrier(), | 3959 instr->hydrogen()->SmiCheckForWriteBarrier(), |
3960 instr->hydrogen()->PointersToHereCheckForValue()); | 3960 instr->hydrogen()->PointersToHereCheckForValue()); |
3961 } | 3961 } |
3962 } | 3962 } |
3963 | 3963 |
3964 | 3964 |
3965 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { | 3965 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |
3966 ASSERT(ToRegister(instr->context()).is(esi)); | 3966 ASSERT(ToRegister(instr->context()).is(esi)); |
3967 ASSERT(ToRegister(instr->object()).is(edx)); | 3967 ASSERT(ToRegister(instr->object()).is(StoreIC::ReceiverRegister())); |
3968 ASSERT(ToRegister(instr->value()).is(eax)); | 3968 ASSERT(ToRegister(instr->value()).is(StoreIC::ValueRegister())); |
3969 | 3969 |
3970 __ mov(ecx, instr->name()); | 3970 __ mov(StoreIC::NameRegister(), instr->name()); |
3971 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); | 3971 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); |
3972 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 3972 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
3973 } | 3973 } |
3974 | 3974 |
3975 | 3975 |
3976 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { | 3976 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
3977 Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal; | 3977 Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal; |
3978 if (instr->index()->IsConstantOperand()) { | 3978 if (instr->index()->IsConstantOperand()) { |
3979 __ cmp(ToOperand(instr->length()), | 3979 __ cmp(ToOperand(instr->length()), |
3980 ToImmediate(LConstantOperand::cast(instr->index()), | 3980 ToImmediate(LConstantOperand::cast(instr->index()), |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4168 } else if (instr->hydrogen()->value()->representation().IsDouble()) { | 4168 } else if (instr->hydrogen()->value()->representation().IsDouble()) { |
4169 DoStoreKeyedFixedDoubleArray(instr); | 4169 DoStoreKeyedFixedDoubleArray(instr); |
4170 } else { | 4170 } else { |
4171 DoStoreKeyedFixedArray(instr); | 4171 DoStoreKeyedFixedArray(instr); |
4172 } | 4172 } |
4173 } | 4173 } |
4174 | 4174 |
4175 | 4175 |
4176 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 4176 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
4177 ASSERT(ToRegister(instr->context()).is(esi)); | 4177 ASSERT(ToRegister(instr->context()).is(esi)); |
4178 ASSERT(ToRegister(instr->object()).is(edx)); | 4178 ASSERT(ToRegister(instr->object()).is(KeyedStoreIC::ReceiverRegister())); |
4179 ASSERT(ToRegister(instr->key()).is(ecx)); | 4179 ASSERT(ToRegister(instr->key()).is(KeyedStoreIC::NameRegister())); |
4180 ASSERT(ToRegister(instr->value()).is(eax)); | 4180 ASSERT(ToRegister(instr->value()).is(KeyedStoreIC::ValueRegister())); |
4181 | 4181 |
4182 Handle<Code> ic = instr->strict_mode() == STRICT | 4182 Handle<Code> ic = instr->strict_mode() == STRICT |
4183 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() | 4183 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() |
4184 : isolate()->builtins()->KeyedStoreIC_Initialize(); | 4184 : isolate()->builtins()->KeyedStoreIC_Initialize(); |
4185 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 4185 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
4186 } | 4186 } |
4187 | 4187 |
4188 | 4188 |
4189 void LCodeGen::DoTrapAllocationMemento(LTrapAllocationMemento* instr) { | 4189 void LCodeGen::DoTrapAllocationMemento(LTrapAllocationMemento* instr) { |
4190 Register object = ToRegister(instr->object()); | 4190 Register object = ToRegister(instr->object()); |
(...skipping 1507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5698 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5698 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
5699 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5699 RecordSafepoint(Safepoint::kNoLazyDeopt); |
5700 } | 5700 } |
5701 | 5701 |
5702 | 5702 |
5703 #undef __ | 5703 #undef __ |
5704 | 5704 |
5705 } } // namespace v8::internal | 5705 } } // namespace v8::internal |
5706 | 5706 |
5707 #endif // V8_TARGET_ARCH_X87 | 5707 #endif // V8_TARGET_ARCH_X87 |
OLD | NEW |