| Index: src/x64/stub-cache-x64.cc | 
| diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc | 
| index 973fece32ad01f8b809d627df9dad0e9144ab929..c27e1b8c42addcd2c527541a7044a3c5360e0525 100644 | 
| --- a/src/x64/stub-cache-x64.cc | 
| +++ b/src/x64/stub-cache-x64.cc | 
| @@ -2060,8 +2060,9 @@ MaybeObject* CallStubCompiler::CompileCallConstant(Object* object, | 
| break; | 
|  | 
| case STRING_CHECK: | 
| -      if (!function->IsBuiltin()) { | 
| -        // Calling non-builtins with a value as receiver requires boxing. | 
| +      if (!function->IsBuiltin() && !function_info->strict_mode()) { | 
| +        // Calling non-strict non-builtins with a value as the receiver | 
| +        // requires boxing. | 
| __ jmp(&miss); | 
| } else { | 
| // Check that the object is a two-byte string or a symbol. | 
| @@ -2076,8 +2077,9 @@ MaybeObject* CallStubCompiler::CompileCallConstant(Object* object, | 
| break; | 
|  | 
| case NUMBER_CHECK: { | 
| -      if (!function->IsBuiltin()) { | 
| -        // Calling non-builtins with a value as receiver requires boxing. | 
| +      if (!function->IsBuiltin() && !function_info->strict_mode()) { | 
| +        // Calling non-strict non-builtins with a value as the receiver | 
| +        // requires boxing. | 
| __ jmp(&miss); | 
| } else { | 
| Label fast; | 
| @@ -2096,8 +2098,9 @@ MaybeObject* CallStubCompiler::CompileCallConstant(Object* object, | 
| } | 
|  | 
| case BOOLEAN_CHECK: { | 
| -      if (!function->IsBuiltin()) { | 
| -        // Calling non-builtins with a value as receiver requires boxing. | 
| +      if (!function->IsBuiltin() && !function_info->strict_mode()) { | 
| +        // Calling non-strict non-builtins with a value as the receiver | 
| +        // requires boxing. | 
| __ jmp(&miss); | 
| } else { | 
| Label fast; | 
|  |