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/code-stubs.h" | 7 #include "src/code-stubs.h" |
8 #include "src/api-arguments.h" | 8 #include "src/api-arguments.h" |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 1250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 // Restore the callee-saved registers and return. | 1261 // Restore the callee-saved registers and return. |
1262 DCHECK(jssp.Is(__ StackPointer())); | 1262 DCHECK(jssp.Is(__ StackPointer())); |
1263 __ Mov(csp, jssp); | 1263 __ Mov(csp, jssp); |
1264 __ SetStackPointer(csp); | 1264 __ SetStackPointer(csp); |
1265 __ PopCalleeSavedRegisters(); | 1265 __ PopCalleeSavedRegisters(); |
1266 // After this point, we must not modify jssp because it is a callee-saved | 1266 // After this point, we must not modify jssp because it is a callee-saved |
1267 // register which we have just restored. | 1267 // register which we have just restored. |
1268 __ Ret(); | 1268 __ Ret(); |
1269 } | 1269 } |
1270 | 1270 |
1271 | |
1272 void FunctionPrototypeStub::Generate(MacroAssembler* masm) { | |
1273 Label miss; | |
1274 Register receiver = LoadDescriptor::ReceiverRegister(); | |
1275 // Ensure that the vector and slot registers won't be clobbered before | |
1276 // calling the miss handler. | |
1277 DCHECK(!AreAliased(x10, x11, LoadWithVectorDescriptor::VectorRegister(), | |
1278 LoadWithVectorDescriptor::SlotRegister())); | |
1279 | |
1280 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, x10, | |
1281 x11, &miss); | |
1282 | |
1283 __ Bind(&miss); | |
1284 PropertyAccessCompiler::TailCallBuiltin( | |
1285 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); | |
1286 } | |
1287 | |
1288 void RegExpExecStub::Generate(MacroAssembler* masm) { | 1271 void RegExpExecStub::Generate(MacroAssembler* masm) { |
1289 #ifdef V8_INTERPRETED_REGEXP | 1272 #ifdef V8_INTERPRETED_REGEXP |
1290 __ TailCallRuntime(Runtime::kRegExpExec); | 1273 __ TailCallRuntime(Runtime::kRegExpExec); |
1291 #else // V8_INTERPRETED_REGEXP | 1274 #else // V8_INTERPRETED_REGEXP |
1292 | 1275 |
1293 // Stack frame on entry. | 1276 // Stack frame on entry. |
1294 // jssp[0]: last_match_info (expected JSArray) | 1277 // jssp[0]: last_match_info (expected JSArray) |
1295 // jssp[8]: previous index | 1278 // jssp[8]: previous index |
1296 // jssp[16]: subject string | 1279 // jssp[16]: subject string |
1297 // jssp[24]: JSRegExp object | 1280 // jssp[24]: JSRegExp object |
(...skipping 2328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3626 kStackUnwindSpace, NULL, spill_offset, | 3609 kStackUnwindSpace, NULL, spill_offset, |
3627 return_value_operand, NULL); | 3610 return_value_operand, NULL); |
3628 } | 3611 } |
3629 | 3612 |
3630 #undef __ | 3613 #undef __ |
3631 | 3614 |
3632 } // namespace internal | 3615 } // namespace internal |
3633 } // namespace v8 | 3616 } // namespace v8 |
3634 | 3617 |
3635 #endif // V8_TARGET_ARCH_ARM64 | 3618 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |