Files
Kmake/deps/v8/test/mjsunit/regress/regress-crbug-335704358.js
2026-05-26 23:36:42 -07:00

54 lines
1.5 KiB
JavaScript

// Copyright 2024 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --expose-gc --verify-heap
function __isPropertyOfType(obj, name, type) {
desc = Object.getOwnPropertyDescriptor(obj, name);
return typeof type === 'undefined' || typeof desc.value === type;
}
function __getProperties(obj, type) {
let properties = [];
for (let name of Object.getOwnPropertyNames(obj)) {
if (__isPropertyOfType(obj, name, type)) properties.push(name);
}
return properties;
}
function* __getObjects(root = this, level = 0) {
let obj_names = __getProperties(root, 'object');
for (let obj_name of obj_names) {
let obj = root[obj_name];
if (obj === root) continue;
yield obj;
yield* __getObjects(obj, level + 1);
}
}
function __getRandomObject(seed) {
let objects = [];
for (let obj of __getObjects()) {
objects.push(obj);
}
return objects[seed % objects.length];
}
function __getRandomProperty(obj, seed) {
let properties = __getProperties(obj);
return properties[seed % properties.length];
}
(function () {
__callGC = function () {
gc();
};
})();
let __v_0 = [ false, "test", Symbol()];
for (let __v_4 of __v_0) {
let __v_5 = Object.__v_4;
let __v_6 = new Proxy({}, {
});
try {
__v_5 = __getRandomObject(926762), __callGC();
} catch (e) {}
Object.setPrototypeOf(__v_5, __v_6);
__v_5[__getRandomProperty(__v_5, 799353)] = __callGC();
}