Index: src/full-codegen/arm/full-codegen-arm.cc |
diff --git a/src/full-codegen/arm/full-codegen-arm.cc b/src/full-codegen/arm/full-codegen-arm.cc |
index 1dc925842b4144ace32b8b2ce4bff537ac1117f8..e5f82948ab8d90ff126cbcc278a4c3338e85be2e 100644 |
--- a/src/full-codegen/arm/full-codegen-arm.cc |
+++ b/src/full-codegen/arm/full-codegen-arm.cc |
@@ -2853,6 +2853,23 @@ |
// All done. |
__ bind(&done); |
+ context()->Plug(r0); |
+} |
+ |
+ |
+void FullCodeGenerator::EmitValueOf(CallRuntime* expr) { |
+ ZoneList<Expression*>* args = expr->arguments(); |
+ DCHECK(args->length() == 1); |
+ VisitForAccumulatorValue(args->at(0)); // Load the object. |
+ |
+ Label done; |
+ // If the object is a smi return the object. |
+ __ JumpIfSmi(r0, &done); |
+ // If the object is not a value type, return the object. |
+ __ CompareObjectType(r0, r1, r1, JS_VALUE_TYPE); |
+ __ ldr(r0, FieldMemOperand(r0, JSValue::kValueOffset), eq); |
+ |
+ __ bind(&done); |
context()->Plug(r0); |
} |