ARM: use existing transcendental cache stub for tagged inputs.

Review URL: http://codereview.chromium.org/6167004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6261 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
ager@chromium.org 2011-01-11 11:54:37 +00:00
parent 544d941b09
commit b3d4ea357c
2 changed files with 13 additions and 5 deletions

View File

@ -445,6 +445,10 @@ class LCallStub: public LInstruction {
public: public:
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
DECLARE_HYDROGEN_ACCESSOR(CallStub) DECLARE_HYDROGEN_ACCESSOR(CallStub)
TranscendentalCache::Type transcendental_type() {
return hydrogen()->transcendental_type();
}
}; };

View File

@ -771,7 +771,9 @@ void LCodeGen::DoCallStub(LCallStub* instr) {
break; break;
} }
case CodeStub::TranscendentalCache: { case CodeStub::TranscendentalCache: {
Abort("TranscendentalCache unimplemented."); __ ldr(r0, MemOperand(sp, 0));
TranscendentalCacheStub stub(instr->transcendental_type());
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
break; break;
} }
default: default:
@ -1482,9 +1484,11 @@ void LCodeGen::DoCmpT(LCmpT* instr) {
condition = ReverseCondition(condition); condition = ReverseCondition(condition);
} }
__ cmp(r0, Operand(0)); __ cmp(r0, Operand(0));
__ LoadRoot(ToRegister(instr->result()), Heap::kTrueValueRootIndex, __ LoadRoot(ToRegister(instr->result()),
Heap::kTrueValueRootIndex,
condition); condition);
__ LoadRoot(ToRegister(instr->result()), Heap::kFalseValueRootIndex, __ LoadRoot(ToRegister(instr->result()),
Heap::kFalseValueRootIndex,
NegateCondition(condition)); NegateCondition(condition));
} }