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 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 2933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2944 __ Mov(x3, SmiFromSlot(expr->CallNewFeedbackSlot())); | 2944 __ Mov(x3, SmiFromSlot(expr->CallNewFeedbackSlot())); |
2945 | 2945 |
2946 CallConstructStub stub(isolate(), RECORD_CONSTRUCTOR_TARGET); | 2946 CallConstructStub stub(isolate(), RECORD_CONSTRUCTOR_TARGET); |
2947 __ Call(stub.GetCode(), RelocInfo::CONSTRUCT_CALL); | 2947 __ Call(stub.GetCode(), RelocInfo::CONSTRUCT_CALL); |
2948 PrepareForBailoutForId(expr->ReturnId(), TOS_REG); | 2948 PrepareForBailoutForId(expr->ReturnId(), TOS_REG); |
2949 context()->Plug(x0); | 2949 context()->Plug(x0); |
2950 } | 2950 } |
2951 | 2951 |
2952 | 2952 |
2953 void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) { | 2953 void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) { |
2954 Comment cmnt(masm_, "[ SuperConstructorCall"); | 2954 if (!ValidateSuperCall(expr)) return; |
| 2955 |
2955 Variable* new_target_var = scope()->DeclarationScope()->new_target_var(); | 2956 Variable* new_target_var = scope()->DeclarationScope()->new_target_var(); |
2956 GetVar(result_register(), new_target_var); | 2957 GetVar(result_register(), new_target_var); |
2957 __ Push(result_register()); | 2958 __ Push(result_register()); |
2958 | 2959 |
2959 EmitLoadSuperConstructor(); | 2960 EmitLoadSuperConstructor(); |
2960 __ push(result_register()); | 2961 __ push(result_register()); |
2961 | 2962 |
2962 // Push the arguments ("left-to-right") on the stack. | 2963 // Push the arguments ("left-to-right") on the stack. |
2963 ZoneList<Expression*>* args = expr->arguments(); | 2964 ZoneList<Expression*>* args = expr->arguments(); |
2964 int arg_count = args->length(); | 2965 int arg_count = args->length(); |
(...skipping 2504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5469 return previous_; | 5470 return previous_; |
5470 } | 5471 } |
5471 | 5472 |
5472 | 5473 |
5473 #undef __ | 5474 #undef __ |
5474 | 5475 |
5475 | 5476 |
5476 } } // namespace v8::internal | 5477 } } // namespace v8::internal |
5477 | 5478 |
5478 #endif // V8_TARGET_ARCH_ARM64 | 5479 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |