Skip to content

Commit c997133

Browse files
LiedtkeV8-internal LUCI CQ
authored andcommitted
[environment] Register AsyncDisposableStack and its properties, methods and instance types
See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncDisposableStack Bug: 487347678 Change-Id: I6a0506f0e09c8597c8f24a22833083a99c0c4472 Reviewed-on: https://chrome-internal-review.googlesource.com/c/v8/fuzzilli/+/9051797 Reviewed-by: Rezvan Mahdavi Hezaveh <rezvan@google.com> Commit-Queue: Matthias Liedtke <mliedtke@google.com>
1 parent 01ae8ac commit c997133

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

Sources/Fuzzilli/Environment/JavaScriptEnvironment.swift

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,9 @@ public class JavaScriptEnvironment: ComponentBase {
346346
registerObjectGroup(.jsDisposableStacks)
347347
registerObjectGroup(.jsDisposableStackPrototype)
348348
registerObjectGroup(.jsDisposableStackConstructor)
349+
registerObjectGroup(.jsAsyncDisposableStacks)
350+
registerObjectGroup(.jsAsyncDisposableStackPrototype)
351+
registerObjectGroup(.jsAsyncDisposableStackConstructor)
349352
registerObjectGroup(.jsArrayBuffers)
350353
registerObjectGroup(.jsSharedArrayBuffers)
351354
for variant in ["Uint8Array", "Int8Array", "Uint16Array", "Int16Array", "Uint32Array", "Int32Array", "Float16Array", "Float32Array", "Float64Array", "Uint8ClampedArray", "BigInt64Array", "BigUint64Array"] {
@@ -600,6 +603,7 @@ public class JavaScriptEnvironment: ComponentBase {
600603
registerBuiltin("WeakRef", ofType: .jsWeakRefConstructor)
601604
registerBuiltin("FinalizationRegistry", ofType: .jsFinalizationRegistryConstructor)
602605
registerBuiltin("DisposableStack", ofType: .jsDisposableStackConstructor)
606+
registerBuiltin("AsyncDisposableStack", ofType: .jsAsyncDisposableStackConstructor)
603607
registerBuiltin("Math", ofType: .jsMathObject)
604608
registerBuiltin("JSON", ofType: .jsJSONObject)
605609
registerBuiltin("Reflect", ofType: .jsReflectObject)
@@ -1070,6 +1074,9 @@ public extension ILType {
10701074
/// Type of a JavaScript DisposableStack object.
10711075
static let jsDisposableStack = ILType.object(ofGroup: "DisposableStack", withProperties: ["disposed"], withMethods: ["dispose", "use", "adopt", "defer", "move"])
10721076

1077+
/// Type of a JavaScript AsyncDisposableStack object.
1078+
static let jsAsyncDisposableStack = ILType.object(ofGroup: "AsyncDisposableStack", withProperties: ["disposed"], withMethods: ["disposeAsync", "use", "adopt", "defer", "move"])
1079+
10731080
/// Type of a JavaScript ArrayBuffer object.
10741081
static let jsArrayBuffer = ILType.object(ofGroup: "ArrayBuffer", withProperties: ["byteLength", "maxByteLength", "resizable"], withMethods: ["resize", "slice", "transfer", "transferToFixedLength", "transferToImmutable"])
10751082

@@ -1177,6 +1184,9 @@ public extension ILType {
11771184
/// Type of the JavaScript DisposableStack constructor builtin.
11781185
static let jsDisposableStackConstructor = ILType.constructor([] => .jsDisposableStack) + .object(ofGroup: "DisposableStackConstructor", withProperties: ["prototype"])
11791186

1187+
/// Type of the JavaScript AsyncDisposableStack constructor builtin.
1188+
static let jsAsyncDisposableStackConstructor = ILType.constructor([] => .jsAsyncDisposableStack) + .object(ofGroup: "AsyncDisposableStackConstructor", withProperties: ["prototype"])
1189+
11801190
/// Type of the JavaScript Math constructor builtin.
11811191
static let jsMathObject = ILType.object(ofGroup: "Math", withProperties: ["E", "PI"], withMethods: ["abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "ceil", "cbrt", "expm1", "clz32", "cos", "cosh", "exp", "floor", "fround", "f16round", "hypot", "imul", "log", "log1p", "log2", "log10", "max", "min", "pow", "random", "round", "sign", "sin", "sinh", "sqrt", "sumPrecise", "tan", "tanh", "trunc"])
11821192

@@ -1705,6 +1715,35 @@ public extension ObjectGroup {
17051715
methods: [:]
17061716
)
17071717

1718+
/// ObjectGroup modelling JavaScript AsyncDisposableStack objects
1719+
static let jsAsyncDisposableStacks = ObjectGroup(
1720+
name: "AsyncDisposableStack",
1721+
instanceType: .jsAsyncDisposableStack,
1722+
properties: [
1723+
"disposed" : .boolean
1724+
],
1725+
methods: [
1726+
"disposeAsync" : [] => .jsPromise,
1727+
"use" : [.jsAnything] => .jsAnything,
1728+
"adopt" : [.jsAnything, .function()] => .jsAnything,
1729+
"defer" : [.function()] => .undefined,
1730+
"move" : [] => .jsAsyncDisposableStack,
1731+
]
1732+
)
1733+
1734+
static let jsAsyncDisposableStackPrototype = createPrototypeObjectGroup(jsAsyncDisposableStacks,
1735+
constructor: .jsAsyncDisposableStackConstructor)
1736+
1737+
static let jsAsyncDisposableStackConstructor = ObjectGroup(
1738+
name: "AsyncDisposableStackConstructor",
1739+
constructorPath: "AsyncDisposableStack",
1740+
instanceType: .jsAsyncDisposableStackConstructor,
1741+
properties: [
1742+
"prototype" : jsAsyncDisposableStackPrototype.instanceType
1743+
],
1744+
methods: [:]
1745+
)
1746+
17081747
/// ObjectGroup modelling JavaScript ArrayBuffer objects
17091748
static let jsArrayBuffers = ObjectGroup(
17101749
name: "ArrayBuffer",

0 commit comments

Comments
 (0)