@@ -101,7 +101,7 @@ PseudoHandle<JSObject> JSObject::create(
101
101
Runtime &runtime,
102
102
Handle <HiddenClass> clazz) {
103
103
auto obj = JSObject::create (runtime, clazz->getNumProperties ());
104
- obj->clazz_ .setNonNull (runtime, *clazz, runtime.getHeap ());
104
+ obj->clazz_ .setNonNull (runtime, *clazz, runtime.getHeap (), obj. get () );
105
105
// If the hidden class has index like property, we need to clear the fast path
106
106
// flag.
107
107
if (LLVM_UNLIKELY (
@@ -115,7 +115,7 @@ PseudoHandle<JSObject> JSObject::create(
115
115
Handle <JSObject> parentHandle,
116
116
Handle <HiddenClass> clazz) {
117
117
PseudoHandle<JSObject> obj = JSObject::create (runtime, clazz);
118
- obj->parent_ .set (runtime, parentHandle.get (), runtime.getHeap ());
118
+ obj->parent_ .set (runtime, parentHandle.get (), runtime.getHeap (), obj. get () );
119
119
return obj;
120
120
}
121
121
@@ -224,7 +224,7 @@ CallResult<bool> JSObject::setParent(
224
224
}
225
225
}
226
226
// 9.
227
- self->parent_ .set (runtime, parent, runtime.getHeap ());
227
+ self->parent_ .set (runtime, parent, runtime.getHeap (), self );
228
228
// 10.
229
229
return true ;
230
230
}
@@ -252,7 +252,7 @@ void JSObject::allocateNewSlotStorage(
252
252
auto arrRes = runtime.ignoreAllocationFailure (
253
253
PropStorage::create (runtime, DEFAULT_PROPERTY_CAPACITY));
254
254
selfHandle->propStorage_ .setNonNull (
255
- runtime, vmcast<PropStorage>(arrRes), runtime.getHeap ());
255
+ runtime, vmcast<PropStorage>(arrRes), runtime.getHeap (), *selfHandle );
256
256
} else if (LLVM_UNLIKELY (
257
257
newSlotIndex >=
258
258
selfHandle->propStorage_ .getNonNull (runtime)->capacity ())) {
@@ -262,7 +262,8 @@ void JSObject::allocateNewSlotStorage(
262
262
" allocated slot must be at end" );
263
263
auto hnd = runtime.makeMutableHandle (selfHandle->propStorage_ );
264
264
PropStorage::resize (hnd, runtime, newSlotIndex + 1 );
265
- selfHandle->propStorage_ .setNonNull (runtime, *hnd, runtime.getHeap ());
265
+ selfHandle->propStorage_ .setNonNull (
266
+ runtime, *hnd, runtime.getHeap (), *selfHandle);
266
267
}
267
268
268
269
{
@@ -1924,7 +1925,8 @@ CallResult<bool> JSObject::deleteNamed(
1924
1925
// Perform the actual deletion.
1925
1926
auto newClazz = HiddenClass::deleteProperty (
1926
1927
runtime.makeHandle (selfHandle->clazz_ ), runtime, *pos);
1927
- selfHandle->clazz_ .setNonNull (runtime, *newClazz, runtime.getHeap ());
1928
+ selfHandle->clazz_ .setNonNull (
1929
+ runtime, *newClazz, runtime.getHeap (), *selfHandle);
1928
1930
1929
1931
return true ;
1930
1932
}
@@ -2024,7 +2026,8 @@ CallResult<bool> JSObject::deleteComputed(
2024
2026
// Remove the property descriptor.
2025
2027
auto newClazz = HiddenClass::deleteProperty (
2026
2028
runtime.makeHandle (selfHandle->clazz_ ), runtime, *pos);
2027
- selfHandle->clazz_ .setNonNull (runtime, *newClazz, runtime.getHeap ());
2029
+ selfHandle->clazz_ .setNonNull (
2030
+ runtime, *newClazz, runtime.getHeap (), *selfHandle);
2028
2031
} else if (LLVM_UNLIKELY (selfHandle->flags_ .proxyObject )) {
2029
2032
CallResult<Handle <>> key = toPropertyKey (runtime, nameValPrimitiveHandle);
2030
2033
if (key == ExecutionStatus::EXCEPTION)
@@ -2613,7 +2616,8 @@ ExecutionStatus JSObject::seal(Handle<JSObject> selfHandle, Runtime &runtime) {
2613
2616
2614
2617
auto newClazz = HiddenClass::makeAllNonConfigurable (
2615
2618
runtime.makeHandle (selfHandle->clazz_ ), runtime);
2616
- selfHandle->clazz_ .setNonNull (runtime, *newClazz, runtime.getHeap ());
2619
+ selfHandle->clazz_ .setNonNull (
2620
+ runtime, *newClazz, runtime.getHeap (), *selfHandle);
2617
2621
2618
2622
selfHandle->flags_ .sealed = true ;
2619
2623
@@ -2638,7 +2642,8 @@ ExecutionStatus JSObject::freeze(
2638
2642
2639
2643
auto newClazz = HiddenClass::makeAllReadOnly (
2640
2644
runtime.makeHandle (selfHandle->clazz_ ), runtime);
2641
- selfHandle->clazz_ .setNonNull (runtime, *newClazz, runtime.getHeap ());
2645
+ selfHandle->clazz_ .setNonNull (
2646
+ runtime, *newClazz, runtime.getHeap (), *selfHandle);
2642
2647
2643
2648
selfHandle->flags_ .frozen = true ;
2644
2649
selfHandle->flags_ .sealed = true ;
@@ -2658,7 +2663,8 @@ void JSObject::updatePropertyFlagsWithoutTransitions(
2658
2663
flagsToClear,
2659
2664
flagsToSet,
2660
2665
props);
2661
- selfHandle->clazz_ .setNonNull (runtime, *newClazz, runtime.getHeap ());
2666
+ selfHandle->clazz_ .setNonNull (
2667
+ runtime, *newClazz, runtime.getHeap (), *selfHandle);
2662
2668
}
2663
2669
2664
2670
CallResult<bool > JSObject::isExtensible (
@@ -2783,7 +2789,8 @@ ExecutionStatus JSObject::addOwnPropertyImpl(
2783
2789
if (LLVM_UNLIKELY (addResult == ExecutionStatus::EXCEPTION)) {
2784
2790
return ExecutionStatus::EXCEPTION;
2785
2791
}
2786
- selfHandle->clazz_ .setNonNull (runtime, *addResult->first , runtime.getHeap ());
2792
+ selfHandle->clazz_ .setNonNull (
2793
+ runtime, *addResult->first , runtime.getHeap (), *selfHandle);
2787
2794
2788
2795
allocateNewSlotStorage (
2789
2796
selfHandle, runtime, addResult->second , valueOrAccessor);
@@ -2826,7 +2833,8 @@ CallResult<bool> JSObject::updateOwnProperty(
2826
2833
runtime,
2827
2834
propertyPos,
2828
2835
desc.flags );
2829
- selfHandle->clazz_ .setNonNull (runtime, *newClazz, runtime.getHeap ());
2836
+ selfHandle->clazz_ .setNonNull (
2837
+ runtime, *newClazz, runtime.getHeap (), *selfHandle);
2830
2838
}
2831
2839
2832
2840
if (updateStatus->first == PropertyUpdateStatus::done)
0 commit comments