| 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/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 719 | 719 |
| 720 void MathPowStub::Generate(MacroAssembler* masm) { | 720 void MathPowStub::Generate(MacroAssembler* masm) { |
| 721 // Stack on entry: | 721 // Stack on entry: |
| 722 // jssp[0]: Exponent (as a tagged value). | 722 // jssp[0]: Exponent (as a tagged value). |
| 723 // jssp[1]: Base (as a tagged value). | 723 // jssp[1]: Base (as a tagged value). |
| 724 // | 724 // |
| 725 // The (tagged) result will be returned in x0, as a heap number. | 725 // The (tagged) result will be returned in x0, as a heap number. |
| 726 | 726 |
| 727 Register result_tagged = x0; | 727 Register result_tagged = x0; |
| 728 Register base_tagged = x10; | 728 Register base_tagged = x10; |
| 729 Register exponent_tagged = x11; | 729 Register exponent_tagged = MathPowTaggedDescriptor::exponent(); |
| 730 Register exponent_integer = x12; | 730 DCHECK(exponent_tagged.is(x11)); |
| 731 Register exponent_integer = MathPowIntegerDescriptor::exponent(); |
| 732 DCHECK(exponent_integer.is(x12)); |
| 731 Register scratch1 = x14; | 733 Register scratch1 = x14; |
| 732 Register scratch0 = x15; | 734 Register scratch0 = x15; |
| 733 Register saved_lr = x19; | 735 Register saved_lr = x19; |
| 734 FPRegister result_double = d0; | 736 FPRegister result_double = d0; |
| 735 FPRegister base_double = d0; | 737 FPRegister base_double = d0; |
| 736 FPRegister exponent_double = d1; | 738 FPRegister exponent_double = d1; |
| 737 FPRegister base_double_copy = d2; | 739 FPRegister base_double_copy = d2; |
| 738 FPRegister scratch1_double = d6; | 740 FPRegister scratch1_double = d6; |
| 739 FPRegister scratch0_double = d7; | 741 FPRegister scratch0_double = d7; |
| 740 | 742 |
| (...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1599 // Reload true/false because they were clobbered in the builtin call. | 1601 // Reload true/false because they were clobbered in the builtin call. |
| 1600 __ LoadTrueFalseRoots(res_true, res_false); | 1602 __ LoadTrueFalseRoots(res_true, res_false); |
| 1601 __ Cmp(result, 0); | 1603 __ Cmp(result, 0); |
| 1602 __ Csel(result, res_true, res_false, eq); | 1604 __ Csel(result, res_true, res_false, eq); |
| 1603 } | 1605 } |
| 1604 __ Ret(); | 1606 __ Ret(); |
| 1605 } | 1607 } |
| 1606 | 1608 |
| 1607 | 1609 |
| 1608 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { | 1610 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { |
| 1609 Register arg_count = x0; | 1611 Register arg_count = ArgumentsAccessReadDescriptor::parameter_count(); |
| 1610 Register key = x1; | 1612 Register key = ArgumentsAccessReadDescriptor::index(); |
| 1613 DCHECK(arg_count.is(x0)); |
| 1614 DCHECK(key.is(x1)); |
| 1611 | 1615 |
| 1612 // The displacement is the offset of the last parameter (if any) relative | 1616 // The displacement is the offset of the last parameter (if any) relative |
| 1613 // to the frame pointer. | 1617 // to the frame pointer. |
| 1614 static const int kDisplacement = | 1618 static const int kDisplacement = |
| 1615 StandardFrameConstants::kCallerSPOffset - kPointerSize; | 1619 StandardFrameConstants::kCallerSPOffset - kPointerSize; |
| 1616 | 1620 |
| 1617 // Check that the key is a smi. | 1621 // Check that the key is a smi. |
| 1618 Label slow; | 1622 Label slow; |
| 1619 __ JumpIfNotSmi(key, &slow); | 1623 __ JumpIfNotSmi(key, &slow); |
| 1620 | 1624 |
| (...skipping 3380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5001 | 5005 |
| 5002 | 5006 |
| 5003 void CallApiGetterStub::Generate(MacroAssembler* masm) { | 5007 void CallApiGetterStub::Generate(MacroAssembler* masm) { |
| 5004 // ----------- S t a t e ------------- | 5008 // ----------- S t a t e ------------- |
| 5005 // -- sp[0] : name | 5009 // -- sp[0] : name |
| 5006 // -- sp[8 - kArgsLength*8] : PropertyCallbackArguments object | 5010 // -- sp[8 - kArgsLength*8] : PropertyCallbackArguments object |
| 5007 // -- ... | 5011 // -- ... |
| 5008 // -- x2 : api_function_address | 5012 // -- x2 : api_function_address |
| 5009 // ----------------------------------- | 5013 // ----------------------------------- |
| 5010 | 5014 |
| 5011 Register api_function_address = x2; | 5015 Register api_function_address = ApiGetterDescriptor::function_address(); |
| 5016 DCHECK(api_function_address.is(x2)); |
| 5012 | 5017 |
| 5013 __ Mov(x0, masm->StackPointer()); // x0 = Handle<Name> | 5018 __ Mov(x0, masm->StackPointer()); // x0 = Handle<Name> |
| 5014 __ Add(x1, x0, 1 * kPointerSize); // x1 = PCA | 5019 __ Add(x1, x0, 1 * kPointerSize); // x1 = PCA |
| 5015 | 5020 |
| 5016 const int kApiStackSpace = 1; | 5021 const int kApiStackSpace = 1; |
| 5017 | 5022 |
| 5018 // Allocate space for CallApiFunctionAndReturn can store some scratch | 5023 // Allocate space for CallApiFunctionAndReturn can store some scratch |
| 5019 // registeres on the stack. | 5024 // registeres on the stack. |
| 5020 const int kCallApiFunctionSpillSpace = 4; | 5025 const int kCallApiFunctionSpillSpace = 4; |
| 5021 | 5026 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 5040 MemOperand(fp, 6 * kPointerSize), | 5045 MemOperand(fp, 6 * kPointerSize), |
| 5041 NULL); | 5046 NULL); |
| 5042 } | 5047 } |
| 5043 | 5048 |
| 5044 | 5049 |
| 5045 #undef __ | 5050 #undef __ |
| 5046 | 5051 |
| 5047 } } // namespace v8::internal | 5052 } } // namespace v8::internal |
| 5048 | 5053 |
| 5049 #endif // V8_TARGET_ARCH_ARM64 | 5054 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |