| Index: src/ia32/full-codegen-ia32.cc | 
| diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc | 
| index ad838b97951fdaea9feb144ab3b49200b8d87474..2dba03bd5a95afb2440da67ca34839ac130efe97 100644 | 
| --- a/src/ia32/full-codegen-ia32.cc | 
| +++ b/src/ia32/full-codegen-ia32.cc | 
| @@ -3338,6 +3338,31 @@ void FullCodeGenerator::EmitIsRegExp(CallRuntime* expr) { | 
| } | 
|  | 
|  | 
| +void FullCodeGenerator::EmitIsJSProxy(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); | 
| + | 
| +  __ JumpIfSmi(eax, if_false); | 
| +  Register map = ebx; | 
| +  __ mov(map, FieldOperand(eax, HeapObject::kMapOffset)); | 
| +  __ CmpInstanceType(map, FIRST_JS_PROXY_TYPE); | 
| +  __ j(less, if_false); | 
| +  __ CmpInstanceType(map, LAST_JS_PROXY_TYPE); | 
| +  PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); | 
| +  Split(less_equal, if_true, if_false, fall_through); | 
| + | 
| +  context()->Plug(if_true, if_false); | 
| +} | 
| + | 
|  | 
| void FullCodeGenerator::EmitIsConstructCall(CallRuntime* expr) { | 
| DCHECK(expr->arguments()->length() == 0); | 
|  |