Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 533d32c747427cb9ee3a9aad1d3fb54af98c3b62..2ef4501258fd473c643dd668eaf48168a2ac7d37 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -1337,7 +1337,18 @@ void LCodeGen::DoCmpMapAndBranch(LCmpMapAndBranch* instr) { |
void LCodeGen::DoInstanceOf(LInstanceOf* instr) { |
- Abort("DoInstanceOf unimplemented."); |
+ // we expect object and function in registers r1 and r0. |
Søren Thygesen Gjesse
2010/12/20 13:07:10
Please start comment with uppercase letter.
Karl Klose
2010/12/21 08:56:37
Done.
|
+ InstanceofStub stub(InstanceofStub::kArgsInRegisters); |
+ CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
+ |
+ Label true_value, done; |
+ __ tst(r0, r0); |
Søren Thygesen Gjesse
2010/12/20 13:07:10
I think this can be done with conditional moves an
Karl Klose
2010/12/21 08:56:37
Done.
|
+ __ b(eq, &true_value); |
+ __ mov(r0, Operand(Factory::false_value())); |
+ __ b(&done); |
+ __ bind(&true_value); |
+ __ mov(r0, Operand(Factory::true_value())); |
+ __ bind(&done); |
} |