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; |