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/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/division-by-constant.h" | 10 #include "src/base/division-by-constant.h" |
(...skipping 1671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1682 void MacroAssembler::GetBuiltinEntry(Register target, | 1682 void MacroAssembler::GetBuiltinEntry(Register target, |
1683 Register function, | 1683 Register function, |
1684 Builtins::JavaScript id) { | 1684 Builtins::JavaScript id) { |
1685 DCHECK(!AreAliased(target, function)); | 1685 DCHECK(!AreAliased(target, function)); |
1686 GetBuiltinFunction(function, id); | 1686 GetBuiltinFunction(function, id); |
1687 // Load the code entry point from the builtins object. | 1687 // Load the code entry point from the builtins object. |
1688 Ldr(target, FieldMemOperand(function, JSFunction::kCodeEntryOffset)); | 1688 Ldr(target, FieldMemOperand(function, JSFunction::kCodeEntryOffset)); |
1689 } | 1689 } |
1690 | 1690 |
1691 | 1691 |
1692 void MacroAssembler::BranchIfNotBuiltin(Register function, Register temp, | |
1693 BuiltinFunctionId id, Label* miss) { | |
1694 Ldr(temp, FieldMemOperand(function, JSFunction::kSharedFunctionInfoOffset)); | |
1695 Ldr(temp, FieldMemOperand(temp, SharedFunctionInfo::kFunctionDataOffset)); | |
1696 Cmp(temp, Operand(Smi::FromInt(id))); | |
1697 B(ne, miss); | |
1698 } | |
1699 | |
1700 | |
1701 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, | 1692 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, |
1702 InvokeFlag flag, | 1693 InvokeFlag flag, |
1703 const CallWrapper& call_wrapper) { | 1694 const CallWrapper& call_wrapper) { |
1704 ASM_LOCATION("MacroAssembler::InvokeBuiltin"); | 1695 ASM_LOCATION("MacroAssembler::InvokeBuiltin"); |
1705 // You can't call a builtin without a valid frame. | 1696 // You can't call a builtin without a valid frame. |
1706 DCHECK(flag == JUMP_FUNCTION || has_frame()); | 1697 DCHECK(flag == JUMP_FUNCTION || has_frame()); |
1707 | 1698 |
1708 // Get the builtin entry in x2 and setup the function object in x1. | 1699 // Get the builtin entry in x2 and setup the function object in x1. |
1709 GetBuiltinEntry(x2, x1, id); | 1700 GetBuiltinEntry(x2, x1, id); |
1710 if (flag == CALL_FUNCTION) { | 1701 if (flag == CALL_FUNCTION) { |
(...skipping 3443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5154 } | 5145 } |
5155 } | 5146 } |
5156 | 5147 |
5157 | 5148 |
5158 #undef __ | 5149 #undef __ |
5159 | 5150 |
5160 | 5151 |
5161 } } // namespace v8::internal | 5152 } } // namespace v8::internal |
5162 | 5153 |
5163 #endif // V8_TARGET_ARCH_ARM64 | 5154 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |