Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 0b19edd683084bd92d7f67ebdff57ec6f3d43d12..0c23096c5bfef0f986dc4b874c2e61f12a9596aa 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -4977,10 +4977,11 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
__ jmp(&stub_call, Label::kNear); |
__ bind(&slow); |
} |
- |
- ToNumberStub convert_stub(isolate()); |
- __ CallStub(&convert_stub); |
- PrepareForBailoutForId(expr->ToNumberId(), TOS_REG); |
+ if (!is_strong(language_mode())) { |
+ ToNumberStub convert_stub(isolate()); |
+ __ CallStub(&convert_stub); |
+ PrepareForBailoutForId(expr->ToNumberId(), TOS_REG); |
+ } |
// Save result for postfix expressions. |
if (expr->is_postfix()) { |
@@ -5021,6 +5022,9 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
patch_site.EmitPatchInfo(); |
__ bind(&done); |
+ if (is_strong(language_mode())) { |
+ PrepareForBailoutForId(expr->ToNumberId(), TOS_REG); |
+ } |
// Store the value returned in rax. |
switch (assign_type) { |
case VARIABLE: |