| 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 2843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2854 | 2854 |
| 2855 __ Move(LoadIC::NameRegister(), instr->name()); | 2855 __ Move(LoadIC::NameRegister(), instr->name()); |
| 2856 if (FLAG_vector_ics) { | 2856 if (FLAG_vector_ics) { |
| 2857 Register vector = ToRegister(instr->temp_vector()); | 2857 Register vector = ToRegister(instr->temp_vector()); |
| 2858 ASSERT(vector.is(LoadIC::VectorRegister())); | 2858 ASSERT(vector.is(LoadIC::VectorRegister())); |
| 2859 __ Move(vector, instr->hydrogen()->feedback_vector()); | 2859 __ Move(vector, instr->hydrogen()->feedback_vector()); |
| 2860 // No need to allocate this register. | 2860 // No need to allocate this register. |
| 2861 ASSERT(LoadIC::SlotRegister().is(rax)); | 2861 ASSERT(LoadIC::SlotRegister().is(rax)); |
| 2862 __ Move(LoadIC::SlotRegister(), Smi::FromInt(instr->hydrogen()->slot())); | 2862 __ Move(LoadIC::SlotRegister(), Smi::FromInt(instr->hydrogen()->slot())); |
| 2863 } | 2863 } |
| 2864 ContextualMode mode = instr->for_typeof() ? NOT_CONTEXTUAL : CONTEXTUAL; | 2864 TypeofState mode = instr->for_typeof() ? INSIDE_TYPEOF : NOT_INSIDE_TYPEOF; |
| 2865 Handle<Code> ic = LoadIC::initialize_stub(isolate(), mode); | 2865 Handle<Code> ic = LoadIC::initialize_stub(isolate(), mode); |
| 2866 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 2866 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 2867 } | 2867 } |
| 2868 | 2868 |
| 2869 | 2869 |
| 2870 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { | 2870 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { |
| 2871 Register value = ToRegister(instr->value()); | 2871 Register value = ToRegister(instr->value()); |
| 2872 Handle<Cell> cell_handle = instr->hydrogen()->cell().handle(); | 2872 Handle<Cell> cell_handle = instr->hydrogen()->cell().handle(); |
| 2873 | 2873 |
| 2874 // If the cell we are storing to contains the hole it could have | 2874 // If the cell we are storing to contains the hole it could have |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3002 | 3002 |
| 3003 __ Move(LoadIC::NameRegister(), instr->name()); | 3003 __ Move(LoadIC::NameRegister(), instr->name()); |
| 3004 if (FLAG_vector_ics) { | 3004 if (FLAG_vector_ics) { |
| 3005 Register vector = ToRegister(instr->temp_vector()); | 3005 Register vector = ToRegister(instr->temp_vector()); |
| 3006 ASSERT(vector.is(LoadIC::VectorRegister())); | 3006 ASSERT(vector.is(LoadIC::VectorRegister())); |
| 3007 __ Move(vector, instr->hydrogen()->feedback_vector()); | 3007 __ Move(vector, instr->hydrogen()->feedback_vector()); |
| 3008 // No need to allocate this register. | 3008 // No need to allocate this register. |
| 3009 ASSERT(LoadIC::SlotRegister().is(rax)); | 3009 ASSERT(LoadIC::SlotRegister().is(rax)); |
| 3010 __ Move(LoadIC::SlotRegister(), Smi::FromInt(instr->hydrogen()->slot())); | 3010 __ Move(LoadIC::SlotRegister(), Smi::FromInt(instr->hydrogen()->slot())); |
| 3011 } | 3011 } |
| 3012 Handle<Code> ic = LoadIC::initialize_stub(isolate(), NOT_CONTEXTUAL); | 3012 Handle<Code> ic = LoadIC::initialize_stub(isolate(), INSIDE_TYPEOF); |
| 3013 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 3013 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 3014 } | 3014 } |
| 3015 | 3015 |
| 3016 | 3016 |
| 3017 void LCodeGen::DoLoadFunctionPrototype(LLoadFunctionPrototype* instr) { | 3017 void LCodeGen::DoLoadFunctionPrototype(LLoadFunctionPrototype* instr) { |
| 3018 Register function = ToRegister(instr->function()); | 3018 Register function = ToRegister(instr->function()); |
| 3019 Register result = ToRegister(instr->result()); | 3019 Register result = ToRegister(instr->result()); |
| 3020 | 3020 |
| 3021 // Check that the function really is a function. | 3021 // Check that the function really is a function. |
| 3022 __ CmpObjectType(function, JS_FUNCTION_TYPE, result); | 3022 __ CmpObjectType(function, JS_FUNCTION_TYPE, result); |
| (...skipping 2837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5860 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5860 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 5861 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5861 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 5862 } | 5862 } |
| 5863 | 5863 |
| 5864 | 5864 |
| 5865 #undef __ | 5865 #undef __ |
| 5866 | 5866 |
| 5867 } } // namespace v8::internal | 5867 } } // namespace v8::internal |
| 5868 | 5868 |
| 5869 #endif // V8_TARGET_ARCH_X64 | 5869 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |