| 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/code-factory.h" | 7 #include "src/code-factory.h" |
| 8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
| 9 #include "src/cpu-profiler.h" | 9 #include "src/cpu-profiler.h" |
| 10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
| (...skipping 3391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3402 | 3402 |
| 3403 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { | 3403 void LCodeGen::DoLoadKeyedGeneric(LLoadKeyedGeneric* instr) { |
| 3404 DCHECK(ToRegister(instr->context()).is(cp)); | 3404 DCHECK(ToRegister(instr->context()).is(cp)); |
| 3405 DCHECK(ToRegister(instr->object()).is(LoadDescriptor::ReceiverRegister())); | 3405 DCHECK(ToRegister(instr->object()).is(LoadDescriptor::ReceiverRegister())); |
| 3406 DCHECK(ToRegister(instr->key()).is(LoadDescriptor::NameRegister())); | 3406 DCHECK(ToRegister(instr->key()).is(LoadDescriptor::NameRegister())); |
| 3407 | 3407 |
| 3408 if (FLAG_vector_ics) { | 3408 if (FLAG_vector_ics) { |
| 3409 EmitVectorLoadICRegisters<LLoadKeyedGeneric>(instr); | 3409 EmitVectorLoadICRegisters<LLoadKeyedGeneric>(instr); |
| 3410 } | 3410 } |
| 3411 | 3411 |
| 3412 Handle<Code> ic = CodeFactory::KeyedLoadICInOptimizedCode(isolate()).code(); | 3412 Handle<Code> ic = |
| 3413 CodeFactory::KeyedLoadICInOptimizedCode( |
| 3414 isolate(), instr->hydrogen()->initialization_state()).code(); |
| 3413 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 3415 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 3414 } | 3416 } |
| 3415 | 3417 |
| 3416 | 3418 |
| 3417 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { | 3419 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { |
| 3418 Register scratch = scratch0(); | 3420 Register scratch = scratch0(); |
| 3419 Register temp = scratch1(); | 3421 Register temp = scratch1(); |
| 3420 Register result = ToRegister(instr->result()); | 3422 Register result = ToRegister(instr->result()); |
| 3421 | 3423 |
| 3422 if (instr->hydrogen()->from_inlined()) { | 3424 if (instr->hydrogen()->from_inlined()) { |
| (...skipping 1142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4565 } | 4567 } |
| 4566 } | 4568 } |
| 4567 | 4569 |
| 4568 | 4570 |
| 4569 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { | 4571 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
| 4570 DCHECK(ToRegister(instr->context()).is(cp)); | 4572 DCHECK(ToRegister(instr->context()).is(cp)); |
| 4571 DCHECK(ToRegister(instr->object()).is(StoreDescriptor::ReceiverRegister())); | 4573 DCHECK(ToRegister(instr->object()).is(StoreDescriptor::ReceiverRegister())); |
| 4572 DCHECK(ToRegister(instr->key()).is(StoreDescriptor::NameRegister())); | 4574 DCHECK(ToRegister(instr->key()).is(StoreDescriptor::NameRegister())); |
| 4573 DCHECK(ToRegister(instr->value()).is(StoreDescriptor::ValueRegister())); | 4575 DCHECK(ToRegister(instr->value()).is(StoreDescriptor::ValueRegister())); |
| 4574 | 4576 |
| 4575 Handle<Code> ic = | 4577 Handle<Code> ic = CodeFactory::KeyedStoreICInOptimizedCode( |
| 4576 CodeFactory::KeyedStoreIC(isolate(), instr->language_mode()).code(); | 4578 isolate(), instr->language_mode(), |
| 4579 instr->hydrogen()->initialization_state()).code(); |
| 4577 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 4580 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 4578 } | 4581 } |
| 4579 | 4582 |
| 4580 | 4583 |
| 4581 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { | 4584 void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
| 4582 Register object_reg = ToRegister(instr->object()); | 4585 Register object_reg = ToRegister(instr->object()); |
| 4583 Register scratch = scratch0(); | 4586 Register scratch = scratch0(); |
| 4584 | 4587 |
| 4585 Handle<Map> from_map = instr->original_map(); | 4588 Handle<Map> from_map = instr->original_map(); |
| 4586 Handle<Map> to_map = instr->transitioned_map(); | 4589 Handle<Map> to_map = instr->transitioned_map(); |
| (...skipping 1466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6053 __ li(at, scope_info); | 6056 __ li(at, scope_info); |
| 6054 __ Push(at, ToRegister(instr->function())); | 6057 __ Push(at, ToRegister(instr->function())); |
| 6055 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6058 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 6056 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6059 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 6057 } | 6060 } |
| 6058 | 6061 |
| 6059 | 6062 |
| 6060 #undef __ | 6063 #undef __ |
| 6061 | 6064 |
| 6062 } } // namespace v8::internal | 6065 } } // namespace v8::internal |
| OLD | NEW |