| //@ skip if not $jitTests |
| |
| 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); |
| } |
| let proto = Object.getPrototypeOf(obj); |
| while (proto && proto != Object.prototype) { |
| Object.getOwnPropertyNames(proto).forEach(name => { |
| }); |
| proto = Object.getPrototypeOf(proto); |
| } |
| return properties; |
| } |
| function* __getObjects(root = this, level = 0) { |
| if (level > 4) return; |
| let obj_names = __getProperties(root, 'object'); |
| for (let obj_name of obj_names) { |
| let obj = root[obj_name]; |
| yield* __getObjects(obj, level + 1); |
| } |
| } |
| function __getRandomObject() { |
| for (let obj of __getObjects()) { |
| } |
| } |
| var theClass = class { |
| constructor() { |
| if (242487 != null && typeof __getRandomObject() == "object") try { |
| } catch (e) {} |
| } |
| }; |
| var childClass = class Class extends theClass { |
| constructor() { |
| var arrow = () => { |
| try { |
| super(); |
| } catch (e) {} |
| this.idValue |
| }; |
| arrow()()(); |
| } |
| }; |
| for (var counter = 0; counter < 1000; counter++) { |
| try { |
| new childClass(); |
| } catch (e) {} |
| } |