| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_ARM | 5 #if V8_TARGET_ARCH_ARM |
| 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/base/bits.h" | 9 #include "src/base/bits.h" |
| 10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
| (...skipping 1300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1311 Label miss; | 1311 Label miss; |
| 1312 Register receiver = LoadDescriptor::ReceiverRegister(); | 1312 Register receiver = LoadDescriptor::ReceiverRegister(); |
| 1313 // Ensure that the vector and slot registers won't be clobbered before | 1313 // Ensure that the vector and slot registers won't be clobbered before |
| 1314 // calling the miss handler. | 1314 // calling the miss handler. |
| 1315 DCHECK(!AreAliased(r4, r5, LoadWithVectorDescriptor::VectorRegister(), | 1315 DCHECK(!AreAliased(r4, r5, LoadWithVectorDescriptor::VectorRegister(), |
| 1316 LoadWithVectorDescriptor::SlotRegister())); | 1316 LoadWithVectorDescriptor::SlotRegister())); |
| 1317 | 1317 |
| 1318 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, r4, | 1318 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, r4, |
| 1319 r5, &miss); | 1319 r5, &miss); |
| 1320 __ bind(&miss); | 1320 __ bind(&miss); |
| 1321 PropertyAccessCompiler::TailCallBuiltin( | 1321 PropertyAccessCompiler::TailCallMissHandler(masm, Code::LOAD_IC); |
| 1322 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); | |
| 1323 } | 1322 } |
| 1324 | 1323 |
| 1325 | 1324 |
| 1326 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { | 1325 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { |
| 1327 // Return address is in lr. | 1326 // Return address is in lr. |
| 1328 Label miss; | 1327 Label miss; |
| 1329 | 1328 |
| 1330 Register receiver = LoadDescriptor::ReceiverRegister(); | 1329 Register receiver = LoadDescriptor::ReceiverRegister(); |
| 1331 Register index = LoadDescriptor::NameRegister(); | 1330 Register index = LoadDescriptor::NameRegister(); |
| 1332 Register scratch = r5; | 1331 Register scratch = r5; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1343 &miss, // When not a number. | 1342 &miss, // When not a number. |
| 1344 &miss, // When index out of range. | 1343 &miss, // When index out of range. |
| 1345 RECEIVER_IS_STRING); | 1344 RECEIVER_IS_STRING); |
| 1346 char_at_generator.GenerateFast(masm); | 1345 char_at_generator.GenerateFast(masm); |
| 1347 __ Ret(); | 1346 __ Ret(); |
| 1348 | 1347 |
| 1349 StubRuntimeCallHelper call_helper; | 1348 StubRuntimeCallHelper call_helper; |
| 1350 char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper); | 1349 char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper); |
| 1351 | 1350 |
| 1352 __ bind(&miss); | 1351 __ bind(&miss); |
| 1353 PropertyAccessCompiler::TailCallBuiltin( | 1352 PropertyAccessCompiler::TailCallMissHandler(masm, Code::KEYED_LOAD_IC); |
| 1354 masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); | |
| 1355 } | 1353 } |
| 1356 | 1354 |
| 1357 | 1355 |
| 1358 void RegExpExecStub::Generate(MacroAssembler* masm) { | 1356 void RegExpExecStub::Generate(MacroAssembler* masm) { |
| 1359 // Just jump directly to runtime if native RegExp is not selected at compile | 1357 // Just jump directly to runtime if native RegExp is not selected at compile |
| 1360 // time or if regexp entry in generated code is turned off runtime switch or | 1358 // time or if regexp entry in generated code is turned off runtime switch or |
| 1361 // at compilation. | 1359 // at compilation. |
| 1362 #ifdef V8_INTERPRETED_REGEXP | 1360 #ifdef V8_INTERPRETED_REGEXP |
| 1363 __ TailCallRuntime(Runtime::kRegExpExec); | 1361 __ TailCallRuntime(Runtime::kRegExpExec); |
| 1364 #else // V8_INTERPRETED_REGEXP | 1362 #else // V8_INTERPRETED_REGEXP |
| (...skipping 4073 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5438 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, | 5436 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, |
| 5439 kStackUnwindSpace, NULL, return_value_operand, NULL); | 5437 kStackUnwindSpace, NULL, return_value_operand, NULL); |
| 5440 } | 5438 } |
| 5441 | 5439 |
| 5442 #undef __ | 5440 #undef __ |
| 5443 | 5441 |
| 5444 } // namespace internal | 5442 } // namespace internal |
| 5445 } // namespace v8 | 5443 } // namespace v8 |
| 5446 | 5444 |
| 5447 #endif // V8_TARGET_ARCH_ARM | 5445 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |