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 #if V8_TARGET_ARCH_X64 | 7 #if V8_TARGET_ARCH_X64 |
8 | 8 |
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 4156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4167 kSaveFPRegs, | 4167 kSaveFPRegs, |
4168 EMIT_REMEMBERED_SET, | 4168 EMIT_REMEMBERED_SET, |
4169 hinstr->SmiCheckForWriteBarrier(), | 4169 hinstr->SmiCheckForWriteBarrier(), |
4170 hinstr->PointersToHereCheckForValue()); | 4170 hinstr->PointersToHereCheckForValue()); |
4171 } | 4171 } |
4172 } | 4172 } |
4173 | 4173 |
4174 | 4174 |
4175 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { | 4175 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |
4176 ASSERT(ToRegister(instr->context()).is(rsi)); | 4176 ASSERT(ToRegister(instr->context()).is(rsi)); |
4177 ASSERT(ToRegister(instr->object()).is(rdx)); | 4177 ASSERT(ToRegister(instr->object()).is(StoreIC::ReceiverRegister())); |
4178 ASSERT(ToRegister(instr->value()).is(rax)); | 4178 ASSERT(ToRegister(instr->value()).is(StoreIC::ValueRegister())); |
4179 | 4179 |
4180 __ Move(rcx, instr->hydrogen()->name()); | 4180 __ Move(StoreIC::NameRegister(), instr->hydrogen()->name()); |
4181 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); | 4181 Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode()); |
4182 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 4182 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
4183 } | 4183 } |
4184 | 4184 |
4185 | 4185 |
4186 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { | 4186 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
4187 Representation representation = instr->hydrogen()->length()->representation(); | 4187 Representation representation = instr->hydrogen()->length()->representation(); |
4188 ASSERT(representation.Equals(instr->hydrogen()->index()->representation())); | 4188 ASSERT(representation.Equals(instr->hydrogen()->index()->representation())); |
4189 ASSERT(representation.IsSmiOrInteger32()); | 4189 ASSERT(representation.IsSmiOrInteger32()); |
4190 | 4190 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4432 } else if (instr->hydrogen()->value()->representation().IsDouble()) { | 4432 } else if (instr->hydrogen()->value()->representation().IsDouble()) { |
4433 DoStoreKeyedFixedDoubleArray(instr); | 4433 DoStoreKeyedFixedDoubleArray(instr); |
4434 } else { | 4434 } else { |
4435 DoStoreKeyedFixedArray(instr); | 4435 DoStoreKeyedFixedArray(instr); |
4436 } | 4436 } |
4437 } | 4437 } |
4438 | 4438 |
4439 | 4439 |
4440 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 4440 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
4441 ASSERT(ToRegister(instr->context()).is(rsi)); | 4441 ASSERT(ToRegister(instr->context()).is(rsi)); |
4442 ASSERT(ToRegister(instr->object()).is(rdx)); | 4442 ASSERT(ToRegister(instr->object()).is(KeyedStoreIC::ReceiverRegister())); |
4443 ASSERT(ToRegister(instr->key()).is(rcx)); | 4443 ASSERT(ToRegister(instr->key()).is(KeyedStoreIC::NameRegister())); |
4444 ASSERT(ToRegister(instr->value()).is(rax)); | 4444 ASSERT(ToRegister(instr->value()).is(KeyedStoreIC::ValueRegister())); |
4445 | 4445 |
4446 Handle<Code> ic = instr->strict_mode() == STRICT | 4446 Handle<Code> ic = instr->strict_mode() == STRICT |
4447 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() | 4447 ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() |
4448 : isolate()->builtins()->KeyedStoreIC_Initialize(); | 4448 : isolate()->builtins()->KeyedStoreIC_Initialize(); |
4449 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 4449 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
4450 } | 4450 } |
4451 | 4451 |
4452 | 4452 |
4453 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { | 4453 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
4454 Register object_reg = ToRegister(instr->object()); | 4454 Register object_reg = ToRegister(instr->object()); |
(...skipping 1387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5842 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5842 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
5843 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5843 RecordSafepoint(Safepoint::kNoLazyDeopt); |
5844 } | 5844 } |
5845 | 5845 |
5846 | 5846 |
5847 #undef __ | 5847 #undef __ |
5848 | 5848 |
5849 } } // namespace v8::internal | 5849 } } // namespace v8::internal |
5850 | 5850 |
5851 #endif // V8_TARGET_ARCH_X64 | 5851 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |