| Index: src/arm/lithium-codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/lithium-codegen-arm.cc (revision 6095)
|
| +++ src/arm/lithium-codegen-arm.cc (working copy)
|
| @@ -1213,6 +1213,26 @@
|
| }
|
|
|
|
|
| +Condition LCodeGen::EmitIsObject(Register input,
|
| + Register temp1,
|
| + Register temp2,
|
| + Label* is_not_object,
|
| + Label* is_object) {
|
| + Abort("EmitIsObject unimplemented.");
|
| + return ne;
|
| +}
|
| +
|
| +
|
| +void LCodeGen::DoIsObject(LIsObject* instr) {
|
| + Abort("DoIsObject unimplemented.");
|
| +}
|
| +
|
| +
|
| +void LCodeGen::DoIsObjectAndBranch(LIsObjectAndBranch* instr) {
|
| + Abort("DoIsObjectAndBranch unimplemented.");
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoIsSmi(LIsSmi* instr) {
|
| ASSERT(instr->hydrogen()->value()->representation().IsTagged());
|
| Register result = ToRegister(instr->result());
|
| @@ -1317,7 +1337,14 @@
|
|
|
|
|
| void LCodeGen::DoInstanceOf(LInstanceOf* instr) {
|
| - Abort("DoInstanceOf unimplemented.");
|
| + // We expect object and function in registers r1 and r0.
|
| + InstanceofStub stub(InstanceofStub::kArgsInRegisters);
|
| + CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
| +
|
| + Label true_value, done;
|
| + __ tst(r0, r0);
|
| + __ mov(r0, Operand(Factory::false_value()), LeaveCC, eq);
|
| + __ mov(r0, Operand(Factory::true_value()), LeaveCC, ne);
|
| }
|
|
|
|
|
| @@ -1527,7 +1554,7 @@
|
|
|
|
|
| void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) {
|
| - Abort("LUnaryMathOperation unimplemented.");
|
| + Abort("DoMathAbs unimplemented.");
|
| }
|
|
|
|
|
| @@ -1542,9 +1569,6 @@
|
|
|
|
|
| void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
|
| - ASSERT(instr->op() == kMathFloor ||
|
| - instr->op() == kMathAbs);
|
| -
|
| switch (instr->op()) {
|
| case kMathAbs:
|
| DoMathAbs(instr);
|
| @@ -1556,6 +1580,7 @@
|
| DoMathSqrt(instr);
|
| break;
|
| default:
|
| + Abort("Unimplemented type of LUnaryMathOperation.");
|
| UNREACHABLE();
|
| }
|
| }
|
|
|