| 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
| 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 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 // arguments, consider how to improve it without creating a security | 453 // arguments, consider how to improve it without creating a security |
| 454 // hole. | 454 // hole. |
| 455 __ ldr_pcrel(ip0, (3 * kInstructionSize) >> kLoadLiteralScaleLog2); | 455 __ ldr_pcrel(ip0, (3 * kInstructionSize) >> kLoadLiteralScaleLog2); |
| 456 __ Add(current_sp, current_sp, ip0); | 456 __ Add(current_sp, current_sp, ip0); |
| 457 __ Ret(); | 457 __ Ret(); |
| 458 int32_t arg_count = info_->scope()->num_parameters() + 1; | 458 int32_t arg_count = info_->scope()->num_parameters() + 1; |
| 459 __ dc64(kXRegSize * arg_count); | 459 __ dc64(kXRegSize * arg_count); |
| 460 } | 460 } |
| 461 } | 461 } |
| 462 | 462 |
| 463 void FullCodeGenerator::RestoreContext() { |
| 464 __ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
| 465 } |
| 463 | 466 |
| 464 void FullCodeGenerator::StackValueContext::Plug(Variable* var) const { | 467 void FullCodeGenerator::StackValueContext::Plug(Variable* var) const { |
| 465 DCHECK(var->IsStackAllocated() || var->IsContextSlot()); | 468 DCHECK(var->IsStackAllocated() || var->IsContextSlot()); |
| 466 codegen()->GetVar(result_register(), var); | 469 codegen()->GetVar(result_register(), var); |
| 467 codegen()->PushOperand(result_register()); | 470 codegen()->PushOperand(result_register()); |
| 468 } | 471 } |
| 469 | 472 |
| 470 | 473 |
| 471 void FullCodeGenerator::EffectContext::Plug(Heap::RootListIndex index) const { | 474 void FullCodeGenerator::EffectContext::Plug(Heap::RootListIndex index) const { |
| 472 // Root values have no side effects. | 475 // Root values have no side effects. |
| (...skipping 3174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3647 Label* if_false = NULL; | 3650 Label* if_false = NULL; |
| 3648 Label* fall_through = NULL; | 3651 Label* fall_through = NULL; |
| 3649 context()->PrepareTest(&materialize_true, &materialize_false, | 3652 context()->PrepareTest(&materialize_true, &materialize_false, |
| 3650 &if_true, &if_false, &fall_through); | 3653 &if_true, &if_false, &fall_through); |
| 3651 | 3654 |
| 3652 Token::Value op = expr->op(); | 3655 Token::Value op = expr->op(); |
| 3653 VisitForStackValue(expr->left()); | 3656 VisitForStackValue(expr->left()); |
| 3654 switch (op) { | 3657 switch (op) { |
| 3655 case Token::IN: | 3658 case Token::IN: |
| 3656 VisitForStackValue(expr->right()); | 3659 VisitForStackValue(expr->right()); |
| 3657 CallRuntimeWithOperands(Runtime::kHasProperty); | 3660 EmitHasProperty(); |
| 3658 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); | 3661 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); |
| 3659 __ CompareRoot(x0, Heap::kTrueValueRootIndex); | 3662 __ CompareRoot(x0, Heap::kTrueValueRootIndex); |
| 3660 Split(eq, if_true, if_false, fall_through); | 3663 Split(eq, if_true, if_false, fall_through); |
| 3661 break; | 3664 break; |
| 3662 | 3665 |
| 3663 case Token::INSTANCEOF: { | 3666 case Token::INSTANCEOF: { |
| 3664 VisitForAccumulatorValue(expr->right()); | 3667 VisitForAccumulatorValue(expr->right()); |
| 3665 PopOperand(x1); | 3668 PopOperand(x1); |
| 3666 InstanceOfStub stub(isolate()); | 3669 InstanceOfStub stub(isolate()); |
| 3667 __ CallStub(&stub); | 3670 __ CallStub(&stub); |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4055 } | 4058 } |
| 4056 | 4059 |
| 4057 return INTERRUPT; | 4060 return INTERRUPT; |
| 4058 } | 4061 } |
| 4059 | 4062 |
| 4060 | 4063 |
| 4061 } // namespace internal | 4064 } // namespace internal |
| 4062 } // namespace v8 | 4065 } // namespace v8 |
| 4063 | 4066 |
| 4064 #endif // V8_TARGET_ARCH_ARM64 | 4067 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |