| 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 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_IA32 | 7 #if V8_TARGET_ARCH_IA32 |
| 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 | 86 |
| 87 void RegExpConstructResultStub::InitializeInterfaceDescriptor( | 87 void RegExpConstructResultStub::InitializeInterfaceDescriptor( |
| 88 CodeStubInterfaceDescriptor* descriptor) { | 88 CodeStubInterfaceDescriptor* descriptor) { |
| 89 Register registers[] = { ecx, ebx, eax }; | 89 Register registers[] = { ecx, ebx, eax }; |
| 90 descriptor->Initialize( | 90 descriptor->Initialize( |
| 91 ARRAY_SIZE(registers), registers, | 91 ARRAY_SIZE(registers), registers, |
| 92 Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry); | 92 Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry); |
| 93 } | 93 } |
| 94 | 94 |
| 95 | 95 |
| 96 void LoadFieldStub::InitializeInterfaceDescriptor( |
| 97 CodeStubInterfaceDescriptor* descriptor) { |
| 98 Register registers[] = { edx }; |
| 99 descriptor->Initialize(ARRAY_SIZE(registers), registers); |
| 100 } |
| 101 |
| 102 |
| 103 void KeyedLoadFieldStub::InitializeInterfaceDescriptor( |
| 104 CodeStubInterfaceDescriptor* descriptor) { |
| 105 Register registers[] = { edx }; |
| 106 descriptor->Initialize(ARRAY_SIZE(registers), registers); |
| 107 } |
| 108 |
| 109 |
| 110 void StringLengthStub::InitializeInterfaceDescriptor( |
| 111 CodeStubInterfaceDescriptor* descriptor) { |
| 112 Register registers[] = { edx, ecx }; |
| 113 descriptor->Initialize(ARRAY_SIZE(registers), registers); |
| 114 } |
| 115 |
| 116 |
| 117 void KeyedStringLengthStub::InitializeInterfaceDescriptor( |
| 118 CodeStubInterfaceDescriptor* descriptor) { |
| 119 Register registers[] = { edx, ecx }; |
| 120 descriptor->Initialize(ARRAY_SIZE(registers), registers); |
| 121 } |
| 122 |
| 123 |
| 96 void KeyedStoreFastElementStub::InitializeInterfaceDescriptor( | 124 void KeyedStoreFastElementStub::InitializeInterfaceDescriptor( |
| 97 CodeStubInterfaceDescriptor* descriptor) { | 125 CodeStubInterfaceDescriptor* descriptor) { |
| 98 Register registers[] = { edx, ecx, eax }; | 126 Register registers[] = { edx, ecx, eax }; |
| 99 descriptor->Initialize( | 127 descriptor->Initialize( |
| 100 ARRAY_SIZE(registers), registers, | 128 ARRAY_SIZE(registers), registers, |
| 101 FUNCTION_ADDR(KeyedStoreIC_MissFromStubFailure)); | 129 FUNCTION_ADDR(KeyedStoreIC_MissFromStubFailure)); |
| 102 } | 130 } |
| 103 | 131 |
| 104 | 132 |
| 105 void TransitionElementsKindStub::InitializeInterfaceDescriptor( | 133 void TransitionElementsKindStub::InitializeInterfaceDescriptor( |
| (...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1324 __ bind(&runtime); | 1352 __ bind(&runtime); |
| 1325 __ TailCallRuntime(Runtime::kNewStrictArguments, 3, 1); | 1353 __ TailCallRuntime(Runtime::kNewStrictArguments, 3, 1); |
| 1326 } | 1354 } |
| 1327 | 1355 |
| 1328 | 1356 |
| 1329 void RegExpExecStub::Generate(MacroAssembler* masm) { | 1357 void RegExpExecStub::Generate(MacroAssembler* masm) { |
| 1330 // Just jump directly to runtime if native RegExp is not selected at compile | 1358 // Just jump directly to runtime if native RegExp is not selected at compile |
| 1331 // time or if regexp entry in generated code is turned off runtime switch or | 1359 // time or if regexp entry in generated code is turned off runtime switch or |
| 1332 // at compilation. | 1360 // at compilation. |
| 1333 #ifdef V8_INTERPRETED_REGEXP | 1361 #ifdef V8_INTERPRETED_REGEXP |
| 1334 __ TailCallRuntime(Runtime::kRegExpExecRT, 4, 1); | 1362 __ TailCallRuntime(Runtime::kRegExpExec, 4, 1); |
| 1335 #else // V8_INTERPRETED_REGEXP | 1363 #else // V8_INTERPRETED_REGEXP |
| 1336 | 1364 |
| 1337 // Stack frame on entry. | 1365 // Stack frame on entry. |
| 1338 // esp[0]: return address | 1366 // esp[0]: return address |
| 1339 // esp[4]: last_match_info (expected JSArray) | 1367 // esp[4]: last_match_info (expected JSArray) |
| 1340 // esp[8]: previous index | 1368 // esp[8]: previous index |
| 1341 // esp[12]: subject string | 1369 // esp[12]: subject string |
| 1342 // esp[16]: JSRegExp object | 1370 // esp[16]: JSRegExp object |
| 1343 | 1371 |
| 1344 static const int kLastMatchInfoOffset = 1 * kPointerSize; | 1372 static const int kLastMatchInfoOffset = 1 * kPointerSize; |
| (...skipping 3644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4989 Operand(ebp, 7 * kPointerSize), | 5017 Operand(ebp, 7 * kPointerSize), |
| 4990 NULL); | 5018 NULL); |
| 4991 } | 5019 } |
| 4992 | 5020 |
| 4993 | 5021 |
| 4994 #undef __ | 5022 #undef __ |
| 4995 | 5023 |
| 4996 } } // namespace v8::internal | 5024 } } // namespace v8::internal |
| 4997 | 5025 |
| 4998 #endif // V8_TARGET_ARCH_IA32 | 5026 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |