| 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 #include "src/arm/lithium-codegen-arm.h" | 7 #include "src/arm/lithium-codegen-arm.h" |
| 8 #include "src/arm/lithium-gap-resolver-arm.h" | 8 #include "src/arm/lithium-gap-resolver-arm.h" |
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
| (...skipping 3434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3445 | 3445 |
| 3446 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { | 3446 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { |
| 3447 DCHECK(ToRegister(instr->context()).is(cp)); | 3447 DCHECK(ToRegister(instr->context()).is(cp)); |
| 3448 DCHECK(ToRegister(instr->object()).is(LoadDescriptor::ReceiverRegister())); | 3448 DCHECK(ToRegister(instr->object()).is(LoadDescriptor::ReceiverRegister())); |
| 3449 DCHECK(ToRegister(instr->key()).is(LoadDescriptor::NameRegister())); | 3449 DCHECK(ToRegister(instr->key()).is(LoadDescriptor::NameRegister())); |
| 3450 | 3450 |
| 3451 if (FLAG_vector_ics) { | 3451 if (FLAG_vector_ics) { |
| 3452 EmitVectorLoadICRegisters<LLoadKeyedGeneric>(instr); | 3452 EmitVectorLoadICRegisters<LLoadKeyedGeneric>(instr); |
| 3453 } | 3453 } |
| 3454 | 3454 |
| 3455 Handle<Code> ic = CodeFactory::KeyedLoadICInOptimizedCode(isolate()).code(); | 3455 Handle<Code> ic = |
| 3456 CodeFactory::KeyedLoadICInOptimizedCode( |
| 3457 isolate(), instr->hydrogen()->initialization_state()).code(); |
| 3456 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); | 3458 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); |
| 3457 } | 3459 } |
| 3458 | 3460 |
| 3459 | 3461 |
| 3460 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { | 3462 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { |
| 3461 Register scratch = scratch0(); | 3463 Register scratch = scratch0(); |
| 3462 Register result = ToRegister(instr->result()); | 3464 Register result = ToRegister(instr->result()); |
| 3463 | 3465 |
| 3464 if (instr->hydrogen()->from_inlined()) { | 3466 if (instr->hydrogen()->from_inlined()) { |
| 3465 __ sub(result, sp, Operand(2 * kPointerSize)); | 3467 __ sub(result, sp, Operand(2 * kPointerSize)); |
| (...skipping 1063 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4529 } | 4531 } |
| 4530 } | 4532 } |
| 4531 | 4533 |
| 4532 | 4534 |
| 4533 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 4535 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
| 4534 DCHECK(ToRegister(instr->context()).is(cp)); | 4536 DCHECK(ToRegister(instr->context()).is(cp)); |
| 4535 DCHECK(ToRegister(instr->object()).is(StoreDescriptor::ReceiverRegister())); | 4537 DCHECK(ToRegister(instr->object()).is(StoreDescriptor::ReceiverRegister())); |
| 4536 DCHECK(ToRegister(instr->key()).is(StoreDescriptor::NameRegister())); | 4538 DCHECK(ToRegister(instr->key()).is(StoreDescriptor::NameRegister())); |
| 4537 DCHECK(ToRegister(instr->value()).is(StoreDescriptor::ValueRegister())); | 4539 DCHECK(ToRegister(instr->value()).is(StoreDescriptor::ValueRegister())); |
| 4538 | 4540 |
| 4539 Handle<Code> ic = | 4541 Handle<Code> ic = CodeFactory::KeyedStoreICInOptimizedCode( |
| 4540 CodeFactory::KeyedStoreIC(isolate(), instr->language_mode()).code(); | 4542 isolate(), instr->language_mode(), |
| 4543 instr->hydrogen()->initialization_state()).code(); |
| 4541 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); | 4544 CallCode(ic, RelocInfo::CODE_TARGET, instr, NEVER_INLINE_TARGET_ADDRESS); |
| 4542 } | 4545 } |
| 4543 | 4546 |
| 4544 | 4547 |
| 4545 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { | 4548 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
| 4546 Register object_reg = ToRegister(instr->object()); | 4549 Register object_reg = ToRegister(instr->object()); |
| 4547 Register scratch = scratch0(); | 4550 Register scratch = scratch0(); |
| 4548 | 4551 |
| 4549 Handle<Map> from_map = instr->original_map(); | 4552 Handle<Map> from_map = instr->original_map(); |
| 4550 Handle<Map> to_map = instr->transitioned_map(); | 4553 Handle<Map> to_map = instr->transitioned_map(); |
| (...skipping 1432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5983 __ Push(scope_info); | 5986 __ Push(scope_info); |
| 5984 __ push(ToRegister(instr->function())); | 5987 __ push(ToRegister(instr->function())); |
| 5985 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5988 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 5986 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5989 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 5987 } | 5990 } |
| 5988 | 5991 |
| 5989 | 5992 |
| 5990 #undef __ | 5993 #undef __ |
| 5991 | 5994 |
| 5992 } } // namespace v8::internal | 5995 } } // namespace v8::internal |
| OLD | NEW |