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 2949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2960 __ mov(result, Operand::ForCell(instr->hydrogen()->cell().handle())); | 2960 __ mov(result, Operand::ForCell(instr->hydrogen()->cell().handle())); |
2961 if (instr->hydrogen()->RequiresHoleCheck()) { | 2961 if (instr->hydrogen()->RequiresHoleCheck()) { |
2962 __ cmp(result, factory()->the_hole_value()); | 2962 __ cmp(result, factory()->the_hole_value()); |
2963 DeoptimizeIf(equal, instr->environment()); | 2963 DeoptimizeIf(equal, instr->environment()); |
2964 } | 2964 } |
2965 } | 2965 } |
2966 | 2966 |
2967 | 2967 |
2968 void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { | 2968 void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { |
2969 ASSERT(ToRegister(instr->context()).is(esi)); | 2969 ASSERT(ToRegister(instr->context()).is(esi)); |
2970 ASSERT(ToRegister(instr->global_object()).is(edx)); | 2970 ASSERT(ToRegister(instr->global_object()).is(LoadIC::ReceiverRegister())); |
2971 ASSERT(ToRegister(instr->result()).is(eax)); | 2971 ASSERT(ToRegister(instr->result()).is(eax)); |
2972 | 2972 |
2973 __ mov(ecx, instr->name()); | 2973 __ mov(LoadIC::NameRegister(), instr->name()); |
2974 ContextualMode mode = instr->for_typeof() ? NOT_CONTEXTUAL : CONTEXTUAL; | 2974 ContextualMode mode = instr->for_typeof() ? NOT_CONTEXTUAL : CONTEXTUAL; |
2975 Handle<Code> ic = LoadIC::initialize_stub(isolate(), mode); | 2975 Handle<Code> ic = LoadIC::initialize_stub(isolate(), mode); |
2976 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 2976 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
2977 } | 2977 } |
2978 | 2978 |
2979 | 2979 |
2980 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { | 2980 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { |
2981 Register value = ToRegister(instr->value()); | 2981 Register value = ToRegister(instr->value()); |
2982 Handle<PropertyCell> cell_handle = instr->hydrogen()->cell().handle(); | 2982 Handle<PropertyCell> cell_handle = instr->hydrogen()->cell().handle(); |
2983 | 2983 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3092 } else if (operand->IsRegister()) { | 3092 } else if (operand->IsRegister()) { |
3093 __ push(ToRegister(operand)); | 3093 __ push(ToRegister(operand)); |
3094 } else { | 3094 } else { |
3095 __ push(ToOperand(operand)); | 3095 __ push(ToOperand(operand)); |
3096 } | 3096 } |
3097 } | 3097 } |
3098 | 3098 |
3099 | 3099 |
3100 void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { | 3100 void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { |
3101 ASSERT(ToRegister(instr->context()).is(esi)); | 3101 ASSERT(ToRegister(instr->context()).is(esi)); |
3102 ASSERT(ToRegister(instr->object()).is(edx)); | 3102 ASSERT(ToRegister(instr->object()).is(LoadIC::ReceiverRegister())); |
3103 ASSERT(ToRegister(instr->result()).is(eax)); | 3103 ASSERT(ToRegister(instr->result()).is(eax)); |
3104 | 3104 |
3105 __ mov(ecx, instr->name()); | 3105 __ mov(LoadIC::NameRegister(), instr->name()); |
3106 Handle<Code> ic = LoadIC::initialize_stub(isolate(), NOT_CONTEXTUAL); | 3106 Handle<Code> ic = LoadIC::initialize_stub(isolate(), NOT_CONTEXTUAL); |
3107 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 3107 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
3108 } | 3108 } |
3109 | 3109 |
3110 | 3110 |
3111 void LCodeGen::DoLoadFunctionPrototype(LLoadFunctionPrototype* instr) { | 3111 void LCodeGen::DoLoadFunctionPrototype(LLoadFunctionPrototype* instr) { |
3112 Register function = ToRegister(instr->function()); | 3112 Register function = ToRegister(instr->function()); |
3113 Register temp = ToRegister(instr->temp()); | 3113 Register temp = ToRegister(instr->temp()); |
3114 Register result = ToRegister(instr->result()); | 3114 Register result = ToRegister(instr->result()); |
3115 | 3115 |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3330 return Operand(elements_pointer_reg, | 3330 return Operand(elements_pointer_reg, |
3331 ToRegister(key), | 3331 ToRegister(key), |
3332 scale_factor, | 3332 scale_factor, |
3333 base_offset); | 3333 base_offset); |
3334 } | 3334 } |
3335 } | 3335 } |
3336 | 3336 |
3337 | 3337 |
3338 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { | 3338 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { |
3339 ASSERT(ToRegister(instr->context()).is(esi)); | 3339 ASSERT(ToRegister(instr->context()).is(esi)); |
3340 ASSERT(ToRegister(instr->object()).is(edx)); | 3340 ASSERT(ToRegister(instr->object()).is(KeyedLoadIC::ReceiverRegister())); |
3341 ASSERT(ToRegister(instr->key()).is(ecx)); | 3341 ASSERT(ToRegister(instr->key()).is(KeyedLoadIC::NameRegister())); |
3342 | 3342 |
3343 Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Initialize(); | 3343 Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Initialize(); |
3344 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 3344 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
3345 } | 3345 } |
3346 | 3346 |
3347 | 3347 |
3348 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { | 3348 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { |
3349 Register result = ToRegister(instr->result()); | 3349 Register result = ToRegister(instr->result()); |
3350 | 3350 |
3351 if (instr->hydrogen()->from_inlined()) { | 3351 if (instr->hydrogen()->from_inlined()) { |
(...skipping 2346 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 |