From 0d97feab211c443285c4e1269964ba3ce32ce26b Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Fri, 21 Jul 2023 19:24:11 +0000 Subject: [PATCH] Bug 1844115 - Part 1: Avoid creating String wrapper objects in Iterator.from. r=allstarschh Update per . Differential Revision: https://phabricator.services.mozilla.com/D183877 UltraBlame original commit: e909fbf5b324f9a1a490c634818c1fea3005f35f --- js/src/builtin/Iterator.js | 57 +++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/js/src/builtin/Iterator.js b/js/src/builtin/Iterator.js index a5f6dbd41cb67..eadf4417b3a89 100644 --- a/js/src/builtin/Iterator.js +++ b/js/src/builtin/Iterator.js @@ -302,8 +302,27 @@ function GetIteratorFlattenable ( obj +rejectStrings ) { +assert +( +typeof +rejectStrings += += += +" +boolean +" +" +rejectStrings +is +a +boolean +" +) +; if ( ! @@ -313,6 +332,21 @@ obj ) ) { +if +( +rejectStrings +| +| +typeof +obj +! += += +" +string +" +) +{ ThrowTypeError ( JSMSG_OBJECT_REQUIRED @@ -331,6 +365,7 @@ obj ) ; } +} var method = @@ -408,32 +443,13 @@ IteratorFrom O ) { -if -( -typeof -O -= -= -= -" -string -" -) -{ -O -= -ToObject -( -O -) -; -} var iterator = GetIteratorFlattenable ( O +false ) ; var @@ -1669,6 +1685,7 @@ innerIterator GetIteratorFlattenable ( mapped +true ) ; var