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