Chromium Code Reviews

Side by Side Diff: src/x64/lithium-codegen-x64.cc

Issue 6580032: X64 Crankshaft: Add untagged version of TranscendentalCacheStub to x64, enabl... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
« src/x64/full-codegen-x64.cc ('K') | « src/x64/full-codegen-x64.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 693 matching lines...)
704 StringAddStub stub(NO_STRING_ADD_FLAGS); 704 StringAddStub stub(NO_STRING_ADD_FLAGS);
705 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); 705 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
706 break; 706 break;
707 } 707 }
708 case CodeStub::StringCompare: { 708 case CodeStub::StringCompare: {
709 StringCompareStub stub; 709 StringCompareStub stub;
710 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); 710 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
711 break; 711 break;
712 } 712 }
713 case CodeStub::TranscendentalCache: { 713 case CodeStub::TranscendentalCache: {
714 TranscendentalCacheStub stub(instr->transcendental_type()); 714 TranscendentalCacheStub stub(instr->transcendental_type(),
715 TranscendentalCacheStub::TAGGED);
715 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); 716 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
716 break; 717 break;
717 } 718 }
718 default: 719 default:
719 UNREACHABLE(); 720 UNREACHABLE();
720 } 721 }
721 } 722 }
722 723
723 724
724 void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) { 725 void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
(...skipping 1721 matching lines...)
2446 __ sqrtsd(input_reg, input_reg); 2447 __ sqrtsd(input_reg, input_reg);
2447 } 2448 }
2448 2449
2449 2450
2450 void LCodeGen::DoPower(LPower* instr) { 2451 void LCodeGen::DoPower(LPower* instr) {
2451 Abort("Unimplemented: %s", "DoPower"); 2452 Abort("Unimplemented: %s", "DoPower");
2452 } 2453 }
2453 2454
2454 2455
2455 void LCodeGen::DoMathLog(LUnaryMathOperation* instr) { 2456 void LCodeGen::DoMathLog(LUnaryMathOperation* instr) {
2456 Abort("Unimplemented: %s", "DoMathLog"); 2457 ASSERT(ToDoubleRegister(instr->result()).is(xmm1));
2458 TranscendentalCacheStub stub(TranscendentalCache::LOG,
2459 TranscendentalCacheStub::UNTAGGED);
2460 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
2457 } 2461 }
2458 2462
2459 2463
2460 void LCodeGen::DoMathCos(LUnaryMathOperation* instr) { 2464 void LCodeGen::DoMathCos(LUnaryMathOperation* instr) {
2461 Abort("Unimplemented: %s", "DoMathCos"); 2465 ASSERT(ToDoubleRegister(instr->result()).is(xmm1));
2466 TranscendentalCacheStub stub(TranscendentalCache::LOG,
2467 TranscendentalCacheStub::UNTAGGED);
2468 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
2462 } 2469 }
2463 2470
2464 2471
2465 void LCodeGen::DoMathSin(LUnaryMathOperation* instr) { 2472 void LCodeGen::DoMathSin(LUnaryMathOperation* instr) {
2466 Abort("Unimplemented: %s", "DoMathSin"); 2473 ASSERT(ToDoubleRegister(instr->result()).is(xmm1));
2474 TranscendentalCacheStub stub(TranscendentalCache::LOG,
2475 TranscendentalCacheStub::UNTAGGED);
2476 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
2467 } 2477 }
2468 2478
2469 2479
2470 void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) { 2480 void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
2471 switch (instr->op()) { 2481 switch (instr->op()) {
2472 case kMathAbs: 2482 case kMathAbs:
2473 DoMathAbs(instr); 2483 DoMathAbs(instr);
2474 break; 2484 break;
2475 case kMathFloor: 2485 case kMathFloor:
2476 DoMathFloor(instr); 2486 DoMathFloor(instr);
(...skipping 1051 matching lines...)
3528 RegisterEnvironmentForDeoptimization(environment); 3538 RegisterEnvironmentForDeoptimization(environment);
3529 ASSERT(osr_pc_offset_ == -1); 3539 ASSERT(osr_pc_offset_ == -1);
3530 osr_pc_offset_ = masm()->pc_offset(); 3540 osr_pc_offset_ = masm()->pc_offset();
3531 } 3541 }
3532 3542
3533 #undef __ 3543 #undef __
3534 3544
3535 } } // namespace v8::internal 3545 } } // namespace v8::internal
3536 3546
3537 #endif // V8_TARGET_ARCH_X64 3547 #endif // V8_TARGET_ARCH_X64
OLDNEW
« src/x64/full-codegen-x64.cc ('K') | « src/x64/full-codegen-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine