| Index: src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| diff --git a/src/full-codegen/mips64/full-codegen-mips64.cc b/src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| index 1cb2f1066bd7edb9165563db2eb9f9c00e7151c9..e8a46c3facdb05fa1a21db1194c3398473ccb6e9 100644
 | 
| --- a/src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| +++ b/src/full-codegen/mips64/full-codegen-mips64.cc
 | 
| @@ -3337,6 +3337,27 @@
 | 
|    PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
 | 
|    __ SmiTst(v0, a4);
 | 
|    Split(eq, a4, Operand(zero_reg), if_true, if_false, fall_through);
 | 
| +
 | 
| +  context()->Plug(if_true, if_false);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void FullCodeGenerator::EmitIsNonNegativeSmi(CallRuntime* expr) {
 | 
| +  ZoneList<Expression*>* args = expr->arguments();
 | 
| +  DCHECK(args->length() == 1);
 | 
| +
 | 
| +  VisitForAccumulatorValue(args->at(0));
 | 
| +
 | 
| +  Label materialize_true, materialize_false;
 | 
| +  Label* if_true = NULL;
 | 
| +  Label* if_false = NULL;
 | 
| +  Label* fall_through = NULL;
 | 
| +  context()->PrepareTest(&materialize_true, &materialize_false,
 | 
| +                         &if_true, &if_false, &fall_through);
 | 
| +
 | 
| +  PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
 | 
| +  __ NonNegativeSmiTst(v0, at);
 | 
| +  Split(eq, at, Operand(zero_reg), if_true, if_false, fall_through);
 | 
|  
 | 
|    context()->Plug(if_true, if_false);
 | 
|  }
 | 
| @@ -5092,7 +5113,7 @@
 | 
|    switch (op) {
 | 
|      case Token::IN:
 | 
|        VisitForStackValue(expr->right());
 | 
| -      __ CallRuntime(Runtime::kHasProperty, 2);
 | 
| +      __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION);
 | 
|        PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
 | 
|        __ LoadRoot(a4, Heap::kTrueValueRootIndex);
 | 
|        Split(eq, v0, Operand(a4), if_true, if_false, fall_through);
 | 
| 
 |