| 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 #include "src/arm64/lithium-codegen-arm64.h" |     7 #include "src/arm64/lithium-codegen-arm64.h" | 
|     8 #include "src/arm64/lithium-gap-resolver-arm64.h" |     8 #include "src/arm64/lithium-gap-resolver-arm64.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 3422 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3433 void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { |  3433 void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { | 
|  3434   DCHECK(ToRegister(instr->context()).is(cp)); |  3434   DCHECK(ToRegister(instr->context()).is(cp)); | 
|  3435   DCHECK(ToRegister(instr->global_object()) |  3435   DCHECK(ToRegister(instr->global_object()) | 
|  3436              .is(LoadDescriptor::ReceiverRegister())); |  3436              .is(LoadDescriptor::ReceiverRegister())); | 
|  3437   DCHECK(ToRegister(instr->result()).Is(x0)); |  3437   DCHECK(ToRegister(instr->result()).Is(x0)); | 
|  3438   __ Mov(LoadDescriptor::NameRegister(), Operand(instr->name())); |  3438   __ Mov(LoadDescriptor::NameRegister(), Operand(instr->name())); | 
|  3439   if (FLAG_vector_ics) { |  3439   if (FLAG_vector_ics) { | 
|  3440     EmitVectorLoadICRegisters<LLoadGlobalGeneric>(instr); |  3440     EmitVectorLoadICRegisters<LLoadGlobalGeneric>(instr); | 
|  3441   } |  3441   } | 
|  3442   ContextualMode mode = instr->for_typeof() ? NOT_CONTEXTUAL : CONTEXTUAL; |  3442   ContextualMode mode = instr->for_typeof() ? NOT_CONTEXTUAL : CONTEXTUAL; | 
|  3443   Handle<Code> ic = CodeFactory::LoadICInOptimizedCode(isolate(), mode).code(); |  3443   Handle<Code> ic = | 
 |  3444       CodeFactory::LoadICInOptimizedCode(isolate(), mode, UNINITIALIZED).code(); | 
|  3444   CallCode(ic, RelocInfo::CODE_TARGET, instr); |  3445   CallCode(ic, RelocInfo::CODE_TARGET, instr); | 
|  3445 } |  3446 } | 
|  3446  |  3447  | 
|  3447  |  3448  | 
|  3448 MemOperand LCodeGen::PrepareKeyedExternalArrayOperand( |  3449 MemOperand LCodeGen::PrepareKeyedExternalArrayOperand( | 
|  3449     Register key, |  3450     Register key, | 
|  3450     Register base, |  3451     Register base, | 
|  3451     Register scratch, |  3452     Register scratch, | 
|  3452     bool key_is_smi, |  3453     bool key_is_smi, | 
|  3453     bool key_is_constant, |  3454     bool key_is_constant, | 
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3742  |  3743  | 
|  3743 void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { |  3744 void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { | 
|  3744   DCHECK(ToRegister(instr->context()).is(cp)); |  3745   DCHECK(ToRegister(instr->context()).is(cp)); | 
|  3745   // LoadIC expects name and receiver in registers. |  3746   // LoadIC expects name and receiver in registers. | 
|  3746   DCHECK(ToRegister(instr->object()).is(LoadDescriptor::ReceiverRegister())); |  3747   DCHECK(ToRegister(instr->object()).is(LoadDescriptor::ReceiverRegister())); | 
|  3747   __ Mov(LoadDescriptor::NameRegister(), Operand(instr->name())); |  3748   __ Mov(LoadDescriptor::NameRegister(), Operand(instr->name())); | 
|  3748   if (FLAG_vector_ics) { |  3749   if (FLAG_vector_ics) { | 
|  3749     EmitVectorLoadICRegisters<LLoadNamedGeneric>(instr); |  3750     EmitVectorLoadICRegisters<LLoadNamedGeneric>(instr); | 
|  3750   } |  3751   } | 
|  3751  |  3752  | 
|  3752   Handle<Code> ic = |  3753   Handle<Code> ic = CodeFactory::LoadICInOptimizedCode( | 
|  3753       CodeFactory::LoadICInOptimizedCode(isolate(), NOT_CONTEXTUAL).code(); |  3754                         isolate(), NOT_CONTEXTUAL, | 
 |  3755                         instr->hydrogen()->initialization_state()).code(); | 
|  3754   CallCode(ic, RelocInfo::CODE_TARGET, instr); |  3756   CallCode(ic, RelocInfo::CODE_TARGET, instr); | 
|  3755  |  3757  | 
|  3756   DCHECK(ToRegister(instr->result()).is(x0)); |  3758   DCHECK(ToRegister(instr->result()).is(x0)); | 
|  3757 } |  3759 } | 
|  3758  |  3760  | 
|  3759  |  3761  | 
|  3760 void LCodeGen::DoLoadRoot(LLoadRoot* instr) { |  3762 void LCodeGen::DoLoadRoot(LLoadRoot* instr) { | 
|  3761   Register result = ToRegister(instr->result()); |  3763   Register result = ToRegister(instr->result()); | 
|  3762   __ LoadRoot(result, instr->index()); |  3764   __ LoadRoot(result, instr->index()); | 
|  3763 } |  3765 } | 
| (...skipping 1720 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  5484   } |  5486   } | 
|  5485 } |  5487 } | 
|  5486  |  5488  | 
|  5487  |  5489  | 
|  5488 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { |  5490 void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { | 
|  5489   DCHECK(ToRegister(instr->context()).is(cp)); |  5491   DCHECK(ToRegister(instr->context()).is(cp)); | 
|  5490   DCHECK(ToRegister(instr->object()).is(StoreDescriptor::ReceiverRegister())); |  5492   DCHECK(ToRegister(instr->object()).is(StoreDescriptor::ReceiverRegister())); | 
|  5491   DCHECK(ToRegister(instr->value()).is(StoreDescriptor::ValueRegister())); |  5493   DCHECK(ToRegister(instr->value()).is(StoreDescriptor::ValueRegister())); | 
|  5492  |  5494  | 
|  5493   __ Mov(StoreDescriptor::NameRegister(), Operand(instr->name())); |  5495   __ Mov(StoreDescriptor::NameRegister(), Operand(instr->name())); | 
|  5494   Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->language_mode()); |  5496   Handle<Code> ic = | 
 |  5497       StoreIC::initialize_stub(isolate(), instr->language_mode(), | 
 |  5498                                instr->hydrogen()->initialization_state()); | 
|  5495   CallCode(ic, RelocInfo::CODE_TARGET, instr); |  5499   CallCode(ic, RelocInfo::CODE_TARGET, instr); | 
|  5496 } |  5500 } | 
|  5497  |  5501  | 
|  5498  |  5502  | 
|  5499 void LCodeGen::DoStringAdd(LStringAdd* instr) { |  5503 void LCodeGen::DoStringAdd(LStringAdd* instr) { | 
|  5500   DCHECK(ToRegister(instr->context()).is(cp)); |  5504   DCHECK(ToRegister(instr->context()).is(cp)); | 
|  5501   DCHECK(ToRegister(instr->left()).Is(x1)); |  5505   DCHECK(ToRegister(instr->left()).Is(x1)); | 
|  5502   DCHECK(ToRegister(instr->right()).Is(x0)); |  5506   DCHECK(ToRegister(instr->right()).Is(x0)); | 
|  5503   StringAddStub stub(isolate(), |  5507   StringAddStub stub(isolate(), | 
|  5504                      instr->hydrogen()->flags(), |  5508                      instr->hydrogen()->flags(), | 
| (...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  6096   Handle<ScopeInfo> scope_info = instr->scope_info(); |  6100   Handle<ScopeInfo> scope_info = instr->scope_info(); | 
|  6097   __ Push(scope_info); |  6101   __ Push(scope_info); | 
|  6098   __ Push(ToRegister(instr->function())); |  6102   __ Push(ToRegister(instr->function())); | 
|  6099   CallRuntime(Runtime::kPushBlockContext, 2, instr); |  6103   CallRuntime(Runtime::kPushBlockContext, 2, instr); | 
|  6100   RecordSafepoint(Safepoint::kNoLazyDeopt); |  6104   RecordSafepoint(Safepoint::kNoLazyDeopt); | 
|  6101 } |  6105 } | 
|  6102  |  6106  | 
|  6103  |  6107  | 
|  6104  |  6108  | 
|  6105 } }  // namespace v8::internal |  6109 } }  // namespace v8::internal | 
| OLD | NEW |