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 |
1692 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, | 1701 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, |
1693 InvokeFlag flag, | 1702 InvokeFlag flag, |
1694 const CallWrapper& call_wrapper) { | 1703 const CallWrapper& call_wrapper) { |
1695 ASM_LOCATION("MacroAssembler::InvokeBuiltin"); | 1704 ASM_LOCATION("MacroAssembler::InvokeBuiltin"); |
1696 // You can't call a builtin without a valid frame. | 1705 // You can't call a builtin without a valid frame. |
1697 DCHECK(flag == JUMP_FUNCTION || has_frame()); | 1706 DCHECK(flag == JUMP_FUNCTION || has_frame()); |
1698 | 1707 |
1699 // Get the builtin entry in x2 and setup the function object in x1. | 1708 // Get the builtin entry in x2 and setup the function object in x1. |
1700 GetBuiltinEntry(x2, x1, id); | 1709 GetBuiltinEntry(x2, x1, id); |
1701 if (flag == CALL_FUNCTION) { | 1710 if (flag == CALL_FUNCTION) { |
(...skipping 3443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5145 } | 5154 } |
5146 } | 5155 } |
5147 | 5156 |
5148 | 5157 |
5149 #undef __ | 5158 #undef __ |
5150 | 5159 |
5151 | 5160 |
5152 } } // namespace v8::internal | 5161 } } // namespace v8::internal |
5153 | 5162 |
5154 #endif // V8_TARGET_ARCH_ARM64 | 5163 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |