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 #if V8_TARGET_ARCH_ARM | 5 #if V8_TARGET_ARCH_ARM |
6 | 6 |
7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
796 case VariableLocation::LOOKUP: { | 796 case VariableLocation::LOOKUP: { |
797 Comment cmnt(masm_, "[ VariableDeclaration"); | 797 Comment cmnt(masm_, "[ VariableDeclaration"); |
798 DCHECK_EQ(VAR, variable->mode()); | 798 DCHECK_EQ(VAR, variable->mode()); |
799 DCHECK(!variable->binding_needs_init()); | 799 DCHECK(!variable->binding_needs_init()); |
800 __ mov(r2, Operand(variable->name())); | 800 __ mov(r2, Operand(variable->name())); |
801 __ Push(r2); | 801 __ Push(r2); |
802 __ CallRuntime(Runtime::kDeclareEvalVar); | 802 __ CallRuntime(Runtime::kDeclareEvalVar); |
803 PrepareForBailoutForId(proxy->id(), BailoutState::NO_REGISTERS); | 803 PrepareForBailoutForId(proxy->id(), BailoutState::NO_REGISTERS); |
804 break; | 804 break; |
805 } | 805 } |
| 806 |
| 807 case VariableLocation::MODULE: |
| 808 UNREACHABLE(); |
806 } | 809 } |
807 } | 810 } |
808 | 811 |
809 | 812 |
810 void FullCodeGenerator::VisitFunctionDeclaration( | 813 void FullCodeGenerator::VisitFunctionDeclaration( |
811 FunctionDeclaration* declaration) { | 814 FunctionDeclaration* declaration) { |
812 VariableProxy* proxy = declaration->proxy(); | 815 VariableProxy* proxy = declaration->proxy(); |
813 Variable* variable = proxy->var(); | 816 Variable* variable = proxy->var(); |
814 switch (variable->location()) { | 817 switch (variable->location()) { |
815 case VariableLocation::GLOBAL: | 818 case VariableLocation::GLOBAL: |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
855 case VariableLocation::LOOKUP: { | 858 case VariableLocation::LOOKUP: { |
856 Comment cmnt(masm_, "[ FunctionDeclaration"); | 859 Comment cmnt(masm_, "[ FunctionDeclaration"); |
857 __ mov(r2, Operand(variable->name())); | 860 __ mov(r2, Operand(variable->name())); |
858 PushOperand(r2); | 861 PushOperand(r2); |
859 // Push initial value for function declaration. | 862 // Push initial value for function declaration. |
860 VisitForStackValue(declaration->fun()); | 863 VisitForStackValue(declaration->fun()); |
861 CallRuntimeWithOperands(Runtime::kDeclareEvalFunction); | 864 CallRuntimeWithOperands(Runtime::kDeclareEvalFunction); |
862 PrepareForBailoutForId(proxy->id(), BailoutState::NO_REGISTERS); | 865 PrepareForBailoutForId(proxy->id(), BailoutState::NO_REGISTERS); |
863 break; | 866 break; |
864 } | 867 } |
| 868 |
| 869 case VariableLocation::MODULE: |
| 870 UNREACHABLE(); |
865 } | 871 } |
866 } | 872 } |
867 | 873 |
868 | 874 |
869 void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { | 875 void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { |
870 // Call the runtime to declare the globals. | 876 // Call the runtime to declare the globals. |
871 __ mov(r1, Operand(pairs)); | 877 __ mov(r1, Operand(pairs)); |
872 __ mov(r0, Operand(Smi::FromInt(DeclareGlobalsFlags()))); | 878 __ mov(r0, Operand(Smi::FromInt(DeclareGlobalsFlags()))); |
873 __ EmitLoadTypeFeedbackVector(r2); | 879 __ EmitLoadTypeFeedbackVector(r2); |
874 __ Push(r1, r0, r2); | 880 __ Push(r1, r0, r2); |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1343 EmitDynamicLookupFastCase(proxy, typeof_mode, &slow, &done); | 1349 EmitDynamicLookupFastCase(proxy, typeof_mode, &slow, &done); |
1344 __ bind(&slow); | 1350 __ bind(&slow); |
1345 __ Push(var->name()); | 1351 __ Push(var->name()); |
1346 Runtime::FunctionId function_id = | 1352 Runtime::FunctionId function_id = |
1347 typeof_mode == NOT_INSIDE_TYPEOF | 1353 typeof_mode == NOT_INSIDE_TYPEOF |
1348 ? Runtime::kLoadLookupSlot | 1354 ? Runtime::kLoadLookupSlot |
1349 : Runtime::kLoadLookupSlotInsideTypeof; | 1355 : Runtime::kLoadLookupSlotInsideTypeof; |
1350 __ CallRuntime(function_id); | 1356 __ CallRuntime(function_id); |
1351 __ bind(&done); | 1357 __ bind(&done); |
1352 context()->Plug(r0); | 1358 context()->Plug(r0); |
| 1359 break; |
1353 } | 1360 } |
| 1361 |
| 1362 case VariableLocation::MODULE: |
| 1363 UNREACHABLE(); |
1354 } | 1364 } |
1355 } | 1365 } |
1356 | 1366 |
1357 | 1367 |
1358 void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) { | 1368 void FullCodeGenerator::EmitAccessor(ObjectLiteralProperty* property) { |
1359 Expression* expression = (property == NULL) ? NULL : property->value(); | 1369 Expression* expression = (property == NULL) ? NULL : property->value(); |
1360 if (expression == NULL) { | 1370 if (expression == NULL) { |
1361 __ LoadRoot(r1, Heap::kNullValueRootIndex); | 1371 __ LoadRoot(r1, Heap::kNullValueRootIndex); |
1362 PushOperand(r1); | 1372 PushOperand(r1); |
1363 } else { | 1373 } else { |
(...skipping 2464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3828 DCHECK(interrupt_address == | 3838 DCHECK(interrupt_address == |
3829 isolate->builtins()->OnStackReplacement()->entry()); | 3839 isolate->builtins()->OnStackReplacement()->entry()); |
3830 return ON_STACK_REPLACEMENT; | 3840 return ON_STACK_REPLACEMENT; |
3831 } | 3841 } |
3832 | 3842 |
3833 | 3843 |
3834 } // namespace internal | 3844 } // namespace internal |
3835 } // namespace v8 | 3845 } // namespace v8 |
3836 | 3846 |
3837 #endif // V8_TARGET_ARCH_ARM | 3847 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |