| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1342 case CodeStub::SubString: { | 1342 case CodeStub::SubString: { |
| 1343 SubStringStub stub; | 1343 SubStringStub stub; |
| 1344 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | 1344 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
| 1345 break; | 1345 break; |
| 1346 } | 1346 } |
| 1347 case CodeStub::StringCompare: { | 1347 case CodeStub::StringCompare: { |
| 1348 StringCompareStub stub; | 1348 StringCompareStub stub; |
| 1349 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | 1349 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); |
| 1350 break; | 1350 break; |
| 1351 } | 1351 } |
| 1352 case CodeStub::TranscendentalCache: { | |
| 1353 TranscendentalCacheStub stub(instr->transcendental_type(), | |
| 1354 TranscendentalCacheStub::TAGGED); | |
| 1355 CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); | |
| 1356 break; | |
| 1357 } | |
| 1358 default: | 1352 default: |
| 1359 UNREACHABLE(); | 1353 UNREACHABLE(); |
| 1360 } | 1354 } |
| 1361 } | 1355 } |
| 1362 | 1356 |
| 1363 | 1357 |
| 1364 void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) { | 1358 void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) { |
| 1365 GenerateOsrPrologue(); | 1359 GenerateOsrPrologue(); |
| 1366 } | 1360 } |
| 1367 | 1361 |
| (...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2252 // Don't delete this mov. It may improve performance on some CPUs, | 2246 // Don't delete this mov. It may improve performance on some CPUs, |
| 2253 // when there is a mulsd depending on the result | 2247 // when there is a mulsd depending on the result |
| 2254 __ movaps(left, left); | 2248 __ movaps(left, left); |
| 2255 break; | 2249 break; |
| 2256 case Token::MOD: { | 2250 case Token::MOD: { |
| 2257 // Pass two doubles as arguments on the stack. | 2251 // Pass two doubles as arguments on the stack. |
| 2258 __ PrepareCallCFunction(4, eax); | 2252 __ PrepareCallCFunction(4, eax); |
| 2259 __ movsd(Operand(esp, 0 * kDoubleSize), left); | 2253 __ movsd(Operand(esp, 0 * kDoubleSize), left); |
| 2260 __ movsd(Operand(esp, 1 * kDoubleSize), right); | 2254 __ movsd(Operand(esp, 1 * kDoubleSize), right); |
| 2261 __ CallCFunction( | 2255 __ CallCFunction( |
| 2262 ExternalReference::double_fp_operation(Token::MOD, isolate()), | 2256 ExternalReference::mod_two_doubles_operation(isolate()), |
| 2263 4); | 2257 4); |
| 2264 | 2258 |
| 2265 // Return value is in st(0) on ia32. | 2259 // Return value is in st(0) on ia32. |
| 2266 // Store it into the result register. | 2260 // Store it into the result register. |
| 2267 __ sub(Operand(esp), Immediate(kDoubleSize)); | 2261 __ sub(Operand(esp), Immediate(kDoubleSize)); |
| 2268 __ fstp_d(Operand(esp, 0)); | 2262 __ fstp_d(Operand(esp, 0)); |
| 2269 __ movsd(result, Operand(esp, 0)); | 2263 __ movsd(result, Operand(esp, 0)); |
| 2270 __ add(Operand(esp), Immediate(kDoubleSize)); | 2264 __ add(Operand(esp), Immediate(kDoubleSize)); |
| 2271 break; | 2265 break; |
| 2272 } | 2266 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2296 break; | 2290 break; |
| 2297 case Token::MOD: { | 2291 case Token::MOD: { |
| 2298 // Pass two doubles as arguments on the stack. | 2292 // Pass two doubles as arguments on the stack. |
| 2299 __ PrepareCallCFunction(4, eax); | 2293 __ PrepareCallCFunction(4, eax); |
| 2300 X87Mov(Operand(esp, 1 * kDoubleSize), right); | 2294 X87Mov(Operand(esp, 1 * kDoubleSize), right); |
| 2301 X87Mov(Operand(esp, 0), left); | 2295 X87Mov(Operand(esp, 0), left); |
| 2302 X87Free(right); | 2296 X87Free(right); |
| 2303 ASSERT(left.is(result)); | 2297 ASSERT(left.is(result)); |
| 2304 X87PrepareToWrite(result); | 2298 X87PrepareToWrite(result); |
| 2305 __ CallCFunction( | 2299 __ CallCFunction( |
| 2306 ExternalReference::double_fp_operation(Token::MOD, isolate()), | 2300 ExternalReference::mod_two_doubles_operation(isolate()), |
| 2307 4); | 2301 4); |
| 2308 | 2302 |
| 2309 // Return value is in st(0) on ia32. | 2303 // Return value is in st(0) on ia32. |
| 2310 X87CommitWrite(result); | 2304 X87CommitWrite(result); |
| 2311 break; | 2305 break; |
| 2312 } | 2306 } |
| 2313 default: | 2307 default: |
| 2314 UNREACHABLE(); | 2308 UNREACHABLE(); |
| 2315 break; | 2309 break; |
| 2316 } | 2310 } |
| (...skipping 4052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6369 FixedArray::kHeaderSize - kPointerSize)); | 6363 FixedArray::kHeaderSize - kPointerSize)); |
| 6370 __ bind(&done); | 6364 __ bind(&done); |
| 6371 } | 6365 } |
| 6372 | 6366 |
| 6373 | 6367 |
| 6374 #undef __ | 6368 #undef __ |
| 6375 | 6369 |
| 6376 } } // namespace v8::internal | 6370 } } // namespace v8::internal |
| 6377 | 6371 |
| 6378 #endif // V8_TARGET_ARCH_IA32 | 6372 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |