Skip to content

Commit 72b7bb4

Browse files
LiedtkeV8-internal LUCI CQ
authored andcommitted
[environment] Add multiple missing builtins
- <Error>.name for all builtin error types - <Error>.prototype.mesage and <Error>.prototype.name for all builtin error types - ArrayBuffer.prototype.sliceToImmutable - Date.prototype.toLocaleDateString - Date.prototype.toLocaleTimeString Bug: 487347678 Change-Id: I766290ca1e2ced9556448bf31dbbd4d8f6656576 Reviewed-on: https://chrome-internal-review.googlesource.com/c/v8/fuzzilli/+/9064298 Commit-Queue: Matthias Liedtke <mliedtke@google.com> Reviewed-by: Danylo Mocherniuk <mdanylo@google.com>
1 parent 887dfa7 commit 72b7bb4

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

Sources/Fuzzilli/Environment/JavaScriptEnvironment.swift

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ public extension ILType {
11501150
static let jsAsyncDisposableStack = ILType.object(ofGroup: "AsyncDisposableStack", withProperties: ["disposed"], withMethods: ["disposeAsync", "use", "adopt", "defer", "move"])
11511151

11521152
/// Type of a JavaScript ArrayBuffer object.
1153-
static let jsArrayBuffer = ILType.object(ofGroup: "ArrayBuffer", withProperties: ["byteLength", "maxByteLength", "resizable"], withMethods: ["resize", "slice", "transfer", "transferToFixedLength", "transferToImmutable"])
1153+
static let jsArrayBuffer = ILType.object(ofGroup: "ArrayBuffer", withProperties: ["byteLength", "maxByteLength", "resizable"], withMethods: ["resize", "slice", "sliceToImmutable", "transfer", "transferToFixedLength", "transferToImmutable"])
11541154

11551155
/// Type of a JavaScript SharedArrayBuffer object.
11561156
static let jsSharedArrayBuffer = ILType.object(ofGroup: "SharedArrayBuffer", withProperties: ["byteLength", "maxByteLength", "growable"], withMethods: ["grow", "slice"])
@@ -1219,7 +1219,7 @@ public extension ILType {
12191219
return .functionAndConstructor(signature)
12201220
+ .object(
12211221
ofGroup: "\(variant)Constructor",
1222-
withProperties: ["prototype", "stackTraceLimit"],
1222+
withProperties: ["name", "prototype", "stackTraceLimit"],
12231223
withMethods: ["isError", "captureStackTrace"])
12241224
}
12251225

@@ -1280,7 +1280,7 @@ public extension ILType {
12801280
static let jsAtomicsObject = ILType.object(ofGroup: "Atomics", withProperties: [], withMethods: ["add", "and", "compareExchange", "exchange", "isLockFree", "load", "notify", "or", "pause", "store", "sub", "wait", "waitAsync", "xor"])
12811281

12821282
/// Type of the JavaScript Date object
1283-
static let jsDate = ILType.object(ofGroup: "Date", withMethods: ["toISOString", "toDateString", "toTimeString", "toLocaleString", "getTime", "getFullYear", "getUTCFullYear", "getMonth", "getUTCMonth", "getDate", "getUTCDate", "getDay", "getUTCDay", "getHours", "getUTCHours", "getMinutes", "getUTCMinutes", "getSeconds", "getUTCSeconds", "getMilliseconds", "getUTCMilliseconds", "getTimezoneOffset", "getYear", "setTime", "setMilliseconds", "setUTCMilliseconds", "setSeconds", "setUTCSeconds", "setMinutes", "setUTCMinutes", "setHours", "setUTCHours", "setDate", "setUTCDate", "setMonth", "setUTCMonth", "setFullYear", "setUTCFullYear", "setYear", "toJSON", "toUTCString", "toGMTString", "toTemporalInstant"])
1283+
static let jsDate = ILType.object(ofGroup: "Date", withMethods: ["toISOString", "toDateString", "toTimeString", "toLocaleString", "toLocaleDateString", "toLocaleTimeString", "getTime", "getFullYear", "getUTCFullYear", "getMonth", "getUTCMonth", "getDate", "getUTCDate", "getDay", "getUTCDay", "getHours", "getUTCHours", "getMinutes", "getUTCMinutes", "getSeconds", "getUTCSeconds", "getMilliseconds", "getUTCMilliseconds", "getTimezoneOffset", "getYear", "setTime", "setMilliseconds", "setUTCMilliseconds", "setSeconds", "setUTCSeconds", "setMinutes", "setUTCMinutes", "setHours", "setUTCHours", "setDate", "setUTCDate", "setMonth", "setUTCMonth", "setFullYear", "setUTCFullYear", "setYear", "toJSON", "toUTCString", "toGMTString", "toTemporalInstant"])
12841284

12851285
/// Type of the JavaScript Date constructor builtin
12861286
static let jsDateConstructor = ILType.functionAndConstructor([.opt(.string | .number)] => .jsDate) + .object(ofGroup: "DateConstructor", withProperties: ["prototype"], withMethods: ["UTC", "now", "parse"])
@@ -1946,10 +1946,11 @@ public extension ObjectGroup {
19461946
],
19471947
methods: [
19481948
"resize" : [.integer] => .undefined,
1949-
"slice" : [.integer, .opt(.integer)] => .jsArrayBuffer,
1949+
"slice" : [.opt(.integer), .opt(.integer)] => .jsArrayBuffer,
1950+
"sliceToImmutable" : [.opt(.integer), .opt(.integer)] => .jsArrayBuffer,
19501951
"transfer" : [.opt(.integer)] => .jsArrayBuffer,
19511952
"transferToFixedLength" : [.opt(.integer)] => .jsArrayBuffer,
1952-
"transferToImmutable" : [] => .jsArrayBuffer,
1953+
"transferToImmutable" : [.opt(.integer)] => .jsArrayBuffer,
19531954
]
19541955
)
19551956

@@ -2131,9 +2132,9 @@ public extension ObjectGroup {
21312132
"toISOString" : [] => .jsString,
21322133
"toDateString" : [] => .jsString,
21332134
"toTimeString" : [] => .jsString,
2134-
"toLocaleString" : [] => .jsString,
2135-
//"toLocaleDateString" : [.localeObject] => .jsString,
2136-
//"toLocaleTimeString" : [.localeObject] => .jsString,
2135+
"toLocaleString" : [.opt(.jsIntlLocaleLike), .opt(OptionsBag.jsIntlDateTimeFormatSettings.group.instanceType)] => .jsString,
2136+
"toLocaleDateString" : [.opt(.jsIntlLocaleLike), .opt(OptionsBag.jsIntlDateTimeFormatSettings.group.instanceType)] => .jsString,
2137+
"toLocaleTimeString" : [.opt(.jsIntlLocaleLike), .opt(OptionsBag.jsIntlDateTimeFormatSettings.group.instanceType)] => .jsString,
21372138
"getTime" : [] => .number,
21382139
"getFullYear" : [] => .number,
21392140
"getUTCFullYear" : [] => .number,
@@ -2536,7 +2537,13 @@ public extension ObjectGroup {
25362537
}
25372538

25382539
static func jsErrorPrototype(_ variant: String) -> ObjectGroup {
2539-
return createPrototypeObjectGroup(jsError(variant), constructor: .jsErrorConstructor(variant))
2540+
return createPrototypeObjectGroup(
2541+
jsError(variant),
2542+
constructor: .jsErrorConstructor(variant),
2543+
additionalProperties: [
2544+
"message": .jsString,
2545+
"name": .jsString,
2546+
])
25402547
}
25412548

25422549
static func jsErrorConstructor(_ variant: String) -> ObjectGroup {
@@ -2545,6 +2552,7 @@ public extension ObjectGroup {
25452552
constructorPath: variant,
25462553
instanceType: .jsErrorConstructor(variant),
25472554
properties: [
2555+
"name": .jsString,
25482556
"prototype": jsErrorPrototype(variant).instanceType,
25492557
"stackTraceLimit": .integer,
25502558
],

0 commit comments

Comments
 (0)