| Index: src/hydrogen.cc
 | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
 | 
| index e956947495ebdebb7da03741ce57dc1d97f31173..cb8ade3d97edb42874e8ccde792e84643869dd93 100644
 | 
| --- a/src/hydrogen.cc
 | 
| +++ b/src/hydrogen.cc
 | 
| @@ -11459,6 +11459,29 @@ void HOptimizedGraphBuilder::GenerateIsObject(CallRuntime* call) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +void HOptimizedGraphBuilder::GenerateIsJSProxy(CallRuntime* call) {
 | 
| +  DCHECK(call->arguments()->length() == 1);
 | 
| +  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
 | 
| +  HValue* value = Pop();
 | 
| +  HIfContinuation continuation;
 | 
| +  IfBuilder if_proxy(this);
 | 
| +
 | 
| +  HValue* smicheck = if_proxy.IfNot<HIsSmiAndBranch>(value);
 | 
| +  if_proxy.And();
 | 
| +  HValue* map = Add<HLoadNamedField>(value, smicheck, HObjectAccess::ForMap());
 | 
| +  HValue* instance_type = Add<HLoadNamedField>(
 | 
| +      map, static_cast<HValue*>(NULL), HObjectAccess::ForMapInstanceType());
 | 
| +  if_proxy.If<HCompareNumericAndBranch>(
 | 
| +      instance_type, Add<HConstant>(FIRST_JS_PROXY_TYPE), Token::GTE);
 | 
| +  if_proxy.And();
 | 
| +  if_proxy.If<HCompareNumericAndBranch>(
 | 
| +      instance_type, Add<HConstant>(LAST_JS_PROXY_TYPE), Token::LTE);
 | 
| +
 | 
| +  if_proxy.CaptureContinuation(&continuation);
 | 
| +  return ast_context()->ReturnContinuation(&continuation, call->id());
 | 
| +}
 | 
| +
 | 
| +
 | 
|  void HOptimizedGraphBuilder::GenerateIsNonNegativeSmi(CallRuntime* call) {
 | 
|    return Bailout(kInlinedRuntimeFunctionIsNonNegativeSmi);
 | 
|  }
 | 
| 
 |