File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed
Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -3317,6 +3317,7 @@ Handle<Object> TranslatedState::MaterializeCapturedObjectAt(
33173317 case JS_SET_VALUE_ITERATOR_TYPE: {
33183318 Handle<JSSetIterator> object = Handle<JSSetIterator>::cast (
33193319 isolate_->factory ()->NewJSObjectFromMap (map, NOT_TENURED));
3320+ slot->value_ = object;
33203321 Handle<Object> properties = materializer.FieldAt (value_index);
33213322 Handle<Object> elements = materializer.FieldAt (value_index);
33223323 Handle<Object> table = materializer.FieldAt (value_index);
@@ -3332,6 +3333,7 @@ Handle<Object> TranslatedState::MaterializeCapturedObjectAt(
33323333 case JS_MAP_VALUE_ITERATOR_TYPE: {
33333334 Handle<JSMapIterator> object = Handle<JSMapIterator>::cast (
33343335 isolate_->factory ()->NewJSObjectFromMap (map, NOT_TENURED));
3336+ slot->value_ = object;
33353337 Handle<Object> properties = materializer.FieldAt (value_index);
33363338 Handle<Object> elements = materializer.FieldAt (value_index);
33373339 Handle<Object> table = materializer.FieldAt (value_index);
Original file line number Diff line number Diff line change 1+ // Copyright 2017 the V8 project authors. All rights reserved.
2+ // Use of this source code is governed by a BSD-style license that can be
3+ // found in the LICENSE file.
4+
5+ // Flags: --allow-natives-syntax
6+
7+ function opt ( b ) {
8+ let iterator = new Set ( ) . values ( ) ;
9+ iterator . x = 0 ;
10+
11+ let arr = [ iterator , iterator ] ;
12+ if ( b )
13+ return arr . slice ( ) ;
14+ }
15+
16+ opt ( false ) ;
17+ opt ( false ) ;
18+ % OptimizeFunctionOnNextCall ( opt ) ;
19+
20+ let res = opt ( true ) ;
21+ let a = res [ 0 ] ;
22+ let b = res [ 1 ] ;
23+
24+ assertTrue ( a === b ) ;
25+ a . x = 7 ;
26+ assertEquals ( 7 , b . x ) ;
You can’t perform that action at this time.
0 commit comments