diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index e796bff07..8997890eb 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -29,7 +29,8 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 25-nightly - + - name: Swift Version + run: swift --version # Is it failing to run tests b/c we're overriding # what swift binary to use? - name: Setup Swift for Ubuntu @@ -43,6 +44,13 @@ jobs: - uses: actions/checkout@v2 - name: Build run: swift build -c ${{ matrix.kind }} -v + - name: Install protobuf + # Install protoc so the presubmit can also validate the generated *.pb.swift files. + if: ${{ matrix.os == 'ubuntu-latest' && matrix.kind == 'debug' }} + run: sudo apt install -y protobuf-compiler + - name: Run presubmit checks + if: ${{ matrix.os == 'ubuntu-latest' && matrix.kind == 'debug' }} + run: python3 Tools/presubmit.py - name: Run tests with Node.js run: swift test -c ${{ matrix.kind }} -v - name: Install jsvu diff --git a/OWNERS b/OWNERS index de83baf0b..f5ef171a5 100755 --- a/OWNERS +++ b/OWNERS @@ -1,5 +1,9 @@ cffsmith@google.com +machenbach@google.com +mdanylo@google.com mliedtke@google.com +pawkra@google.com saelo@google.com +tacet@google.com per-file WHITESPACE=* diff --git a/Package.swift b/Package.swift index 7abdceb91..ac7c9b21b 100755 --- a/Package.swift +++ b/Package.swift @@ -25,7 +25,7 @@ let package = Package( .library(name: "Fuzzilli",targets: ["Fuzzilli"]), ], dependencies: [ - .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), + .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.32.0"), .package( url: "https://github.com/apple/swift-collections.git", .upToNextMinor(from: "1.2.0") diff --git a/README.md b/README.md index f199899d7..1540cdc64 100755 --- a/README.md +++ b/README.md @@ -2,10 +2,6 @@ A (coverage-)guided fuzzer for dynamic language interpreters based on a custom intermediate language ("FuzzIL") which can be mutated and translated to JavaScript. -Fuzzilli is developed and maintained by: -- Samuel Groß, -- Carl Smith, - ## Usage The basic steps to use this fuzzer are: diff --git a/Sources/FuzzILTool/main.swift b/Sources/FuzzILTool/main.swift index b9ed54deb..a8a3b6009 100755 --- a/Sources/FuzzILTool/main.swift +++ b/Sources/FuzzILTool/main.swift @@ -95,7 +95,7 @@ func loadProgramOrExit(from path: String) -> Program { let args = Arguments.parse(from: CommandLine.arguments) -if args["-h"] != nil || args["--help"] != nil || args.numPositionalArguments != 1 || args.numOptionalArguments > 2 { +if args["-h"] != nil || args["--help"] != nil || args.numPositionalArguments != 1 { print(""" Usage: \(args.programName) options path @@ -108,6 +108,7 @@ if args["-h"] != nil || args["--help"] != nil || args.numPositionalArguments != --dumpProgram : Dumps the internal representation of the program stored in the given protobuf file --checkCorpus : Attempts to load all .fzil files in a directory and checks if they are statically valid --compile : Compile the given JavaScript program to a FuzzIL program. Requires node.js + --outputPathJS : If given, --compile will write the lifted JS file to the given path after compilation. --generate : Generate a random program using Fuzzilli's code generators and save it to the specified path. --forDifferentialFuzzing : Enable additional features for better support of external differential fuzzing. """) @@ -186,17 +187,27 @@ else if args.has("--compile") { exit(-1) } - print(fuzzILLifter.lift(program)) - print() - print(jsLifter.lift(program)) + if let js_path = args["--outputPathJS"] { + let content = jsLifter.lift(program) + do { + try content.write(to: URL(fileURLWithPath: js_path), atomically: false, encoding: String.Encoding.utf8) + } catch { + print("Failed to write file \(js_path): \(error)") + exit(-1) + } + } else { + print(fuzzILLifter.lift(program)) + print() + print(jsLifter.lift(program)) - do { - let outputPath = URL(fileURLWithPath: path).deletingPathExtension().appendingPathExtension("fzil") - try program.asProtobuf().serializedData().write(to: outputPath) - print("FuzzIL program written to \(outputPath.relativePath)") - } catch { - print("Failed to store output program to disk: \(error)") - exit(-1) + do { + let outputPath = URL(fileURLWithPath: path).deletingPathExtension().appendingPathExtension("fzil") + try program.asProtobuf().serializedData().write(to: outputPath) + print("FuzzIL program written to \(outputPath.relativePath)") + } catch { + print("Failed to store output program to disk: \(error)") + exit(-1) + } } } diff --git a/Sources/Fuzzilli/Base/ProgramBuilder.swift b/Sources/Fuzzilli/Base/ProgramBuilder.swift index e8990e253..940b8d4af 100755 --- a/Sources/Fuzzilli/Base/ProgramBuilder.swift +++ b/Sources/Fuzzilli/Base/ProgramBuilder.swift @@ -19,6 +19,38 @@ import Foundation /// This provides methods for constructing and appending random /// instances of the different kinds of operations in a program. public class ProgramBuilder { + + /// Runtime data used by code generators to share data between different stubs inside the same + /// code generator. It is strictly required that all pushed values are also popped again in the + /// same code generator. + public class GeneratorRuntimeData { + private var data = [String : Stack]() + + public func push(_ key: String, _ value: Variable) { + data[key, default: .init()].push(value) + } + + public func pop(_ key: String) -> Variable { + assert(data[key] != nil) + return data[key]!.pop() + } + + // Fetch the most recent value for this key and push it back. + public func popAndPush(_ key: String) -> Variable { + assert(data[key] != nil) + return data[key]!.top + } + + func reset() { + #if DEBUG + for (key, value) in data { + assert(value.isEmpty, "Stale entries for runtime data '\(key)'") + } + #endif + data.removeAll(keepingCapacity: false) + } + } + /// The fuzzer instance for which this builder is active. public let fuzzer: Fuzzer @@ -147,6 +179,9 @@ public class ProgramBuilder { /// The remaining CodeGenerators to call as part of a building / CodeGen step, these will "clean up" the state and fix the contexts. public var scheduled: Stack = Stack() + // Runtime data that can be shared between different stubs within a CodeGenerator. + var runtimeData = GeneratorRuntimeData() + /// Stack of active switch blocks. private var activeSwitchBlocks = Stack() @@ -214,6 +249,7 @@ public class ProgramBuilder { activeObjectLiterals.removeAll() activeClassDefinitions.removeAll() buildLog?.reset() + runtimeData.reset() } /// Finalizes and returns the constructed program, then resets this builder so it can be reused for building another program. @@ -483,6 +519,36 @@ public class ProgramBuilder { return probability(0.5) ? randomBuiltinMethodName() : randomCustomMethodName() } + private static func generateConstrained( + _ generator: () -> T, + notIn: any Collection, + fallback: () -> T) -> T { + var result: T + var attempts = 0 + repeat { + if attempts >= 10 { + return fallback() + } + result = generator() + attempts += 1 + } while notIn.contains(result) + return result + } + + // Generate a string not already contained in `notIn` using the provided `generator`. If it fails + // repeatedly, return a random string instead. + public func generateString(_ generator: () -> String, notIn: any Collection) -> String { + Self.generateConstrained(generator, notIn: notIn, + fallback: {String.random(ofLength: Int.random(in: 1...5))}) + } + + // Find a random variable to use as a string that isn't contained in `notIn`. If it fails + // repeatedly, create a random string literal instead. + public func findOrGenerateStringLikeVariable(notIn: any Collection) -> Variable { + return Self.generateConstrained(randomJsVariable, notIn: notIn, + fallback: {loadString(String.random(ofLength: Int.random(in: 1...5)))}) + } + // Settings and constants controlling the behavior of randomParameters() below. // This determines how many variables of a given type need to be visible before // that type is considered a candidate for a parameter type. For example, if this @@ -500,7 +566,7 @@ public class ProgramBuilder { // // This will attempt to find a parameter types for which at least a few variables of a compatible types are // currently available to (potentially) later be used as arguments for calling the generated subroutine. - public func randomParameters(n wantedNumberOfParameters: Int? = nil) -> SubroutineDescriptor { + public func randomParameters(n wantedNumberOfParameters: Int? = nil, withRestParameterProbability restProbability: Double = 0.2) -> SubroutineDescriptor { assert(probabilityOfUsingAnythingAsParameterTypeIfAvoidable >= 0 && probabilityOfUsingAnythingAsParameterTypeIfAvoidable <= 1) // If the caller didn't specify how many parameters to generated, find an appropriate @@ -508,7 +574,7 @@ public class ProgramBuilder { // therefore later be used as arguments for calling the new function). let n: Int if let requestedN = wantedNumberOfParameters { - assert(requestedN > 0) + assert(requestedN >= 0) n = requestedN } else { switch numberOfVisibleVariables { @@ -537,15 +603,27 @@ public class ProgramBuilder { } var params = ParameterList() - for _ in 0.. 0 && probability(restProbability) + let numPlainParams = generateRestParameter ? n - 1 : n + + func randomParamType() -> ILType { if probability(probabilityOfUsingAnythingAsParameterTypeIfAvoidable) { - params.append(.jsAnything) + return .jsAnything } else { - params.append(.plain(chooseUniform(from: candidates))) + return chooseUniform(from: candidates) } } - // TODO: also generate rest parameters and maybe even optional ones sometimes? + for _ in 0.. Variable { - let inputTypes = if elementType == .wasmFuncRef { - Array(repeating: .wasmFunctionDef() | .function(), count: definedEntries.count) - } else { - [ILType]() - } + let inputTypes = Array(repeating: getEntryTypeForTable(elementType: elementType), count: definedEntries.count) return b.emit(WasmDefineTable(elementType: elementType, limits: Limits(min: minSize, max: maxSize), definedEntries: definedEntries, isTable64: isTable64), withInputs: definedEntryValues, types: inputTypes).output } @discardableResult - public func addElementSegment(elementsType: ILType, elements: [Variable]) -> Variable { - let inputTypes = Array(repeating: elementsType, count: elements.count) + public func addElementSegment(elements: [Variable]) -> Variable { + let inputTypes = Array(repeating: getEntryTypeForTable(elementType: ILType.wasmFuncRef), count: elements.count) return b.emit(WasmDefineElementSegment(size: UInt32(elements.count)), withInputs: elements, types: inputTypes).output } + public func getEntryTypeForTable(elementType: ILType) -> ILType { + switch elementType { + case .wasmFuncRef: + return .wasmFunctionDef() | .function() + default: + return .object() + } + } + + // This result can be ignored right now, as we can only define one memory per module // Also this should be tracked like a global / table. @discardableResult diff --git a/Sources/Fuzzilli/CodeGen/CodeGenerator.swift b/Sources/Fuzzilli/CodeGen/CodeGenerator.swift index 08b3ff5b8..07be36f35 100755 --- a/Sources/Fuzzilli/CodeGen/CodeGenerator.swift +++ b/Sources/Fuzzilli/CodeGen/CodeGenerator.swift @@ -381,4 +381,4 @@ extension CodeGenerator: CustomStringConvertible { let names = self.parts.map { $0.name } return names.joined(separator: ",") } -} \ No newline at end of file +} diff --git a/Sources/Fuzzilli/CodeGen/CodeGeneratorWeights.swift b/Sources/Fuzzilli/CodeGen/CodeGeneratorWeights.swift index 79543bb19..c5e030303 100755 --- a/Sources/Fuzzilli/CodeGen/CodeGeneratorWeights.swift +++ b/Sources/Fuzzilli/CodeGen/CodeGeneratorWeights.swift @@ -192,7 +192,6 @@ public let codeGeneratorWeights = [ "PrototypeOverwriteGenerator": 10, "CallbackPropertyGenerator": 10, "MethodCallWithDifferentThisGenerator": 5, - "WeirdClassGenerator": 10, "ProxyGenerator": 10, "LengthChangeGenerator": 5, "ElementKindChangeGenerator": 5, diff --git a/Sources/Fuzzilli/CodeGen/CodeGenerators.swift b/Sources/Fuzzilli/CodeGen/CodeGenerators.swift index 6611acdef..c31dfab81 100755 --- a/Sources/Fuzzilli/CodeGen/CodeGenerators.swift +++ b/Sources/Fuzzilli/CodeGen/CodeGenerators.swift @@ -12,6 +12,54 @@ // See the License for the specific language governing permissions and // limitations under the License. +// Generator stubs for disposable and async-disposable variables. +func disposableVariableGeneratorStubs( + inContext contextRequirement : Context, + withSymbol symbolProperty : String, + genDisposableVariable : @escaping (ProgramBuilder, Variable) -> Void) -> [GeneratorStub] { + return [ + GeneratorStub( + "DisposableObjectLiteralBeginGenerator", + inContext: .single(contextRequirement), + provides: [.objectLiteral] + ) { b in + // Ensure we have the desired symbol below. + b.createSymbolProperty(symbolProperty) + b.emit(BeginObjectLiteral()) + }, + GeneratorStub( + "DisposableObjectLiteralComputedMethodBeginGenerator", + inContext: .single(.objectLiteral), + provides: [.javascript, .subroutine, .method] + ) { b in + // It should be safe to assume that we find at least the + // desired symbol we created above. + let symbol = b.randomVariable(forUseAs: .jsSymbol) + let parameters = b.randomParameters() + b.setParameterTypesForNextSubroutine(parameters.parameterTypes) + b.emit( + BeginObjectLiteralComputedMethod( + parameters: parameters.parameters), + withInputs: [symbol]) + }, + GeneratorStub( + "DisposableObjectLiteralComputedMethodEndGenerator", + inContext: .single([.javascript, .subroutine, .method]), + provides: [.objectLiteral] + ) { b in + b.maybeReturnRandomJsVariable(0.9) + b.emit(EndObjectLiteralComputedMethod()) + }, + GeneratorStub( + "DisposableObjectLiteralEndGenerator", + inContext: .single(.objectLiteral) + ) { b in + let disposableVariable = b.emit(EndObjectLiteral()).output + genDisposableVariable(b, disposableVariable) + }, + ] +} + // // Code generators. // @@ -319,39 +367,46 @@ public let CodeGenerators: [CodeGenerator] = [ } }, - CodeGenerator("ClassDefinitionGenerator", produces: [.constructor()]) { b in - // Possibly pick a superclass. The superclass must be a constructor (or null), otherwise a type error will be raised at runtime. - var superclass: Variable? = nil - if probability(0.5) && b.hasVisibleVariables { - superclass = b.randomVariable(ofType: .constructor()) - } - - // If there are no visible variables, create some random number- or string values first, so they can be used for example as property values. - if !b.hasVisibleVariables { - for _ in 0..<3 { - withEqualProbability( - { - b.loadInt(b.randomInt()) - }, - { - b.loadFloat(b.randomFloat()) - }, - { - b.loadString(b.randomString()) - }) - } - } - - // Create the class. - let c = b.buildClassDefinition(withSuperclass: superclass, isExpression: probability(0.3)) { cls in - b.buildRecursive(n: defaultCodeGenerationAmount) - } + CodeGenerator( + "ClassDefinitionGenerator", + [ + GeneratorStub( + "ClassDefinitionBeginGenerator", + produces: [.constructor()], + provides: [.classDefinition] + ) { b in + // Possibly pick a superclass. + // The superclass must be a constructor (or null). + var superclass: Variable? = nil + if probability(0.4) && b.hasVisibleVariables { + superclass = b.randomVariable(ofType: .constructor()) + } else if probability(0.2) { + superclass = b.buildPlainFunction(with: .parameters(n: 1)) { + args in + b.doReturn(b.randomJsVariable()) + } + } + let inputs = superclass != nil ? [superclass!] : [] + let cls = b.emit(BeginClassDefinition( + hasSuperclass: superclass != nil, + isExpression: probability(0.3)), + withInputs: inputs).output + b.runtimeData.push("class", cls) + }, + GeneratorStub( + "ClassDefinitionEndGenerator", + inContext: .single(.classDefinition) + ) { b in + b.emit(EndClassDefinition()) - // And construct a few instances of it. - for _ in 0..= 10 { - propertyName = String.random(ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentObjectLiteral.properties.contains(propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentObjectLiteral.properties) b.currentObjectLiteral.addProperty( propertyName, as: b.randomJsVariable()) }, @@ -492,10 +520,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator( "ObjectLiteralElementGenerator", inContext: .single(.objectLiteral), inputs: .one ) { b, value in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // Select an element that hasn't already been added to this literal. var index = b.randomIndex() while b.currentObjectLiteral.elements.contains(index) { @@ -510,10 +534,6 @@ public let CodeGenerators: [CodeGenerator] = [ "ObjectLiteralComputedPropertyGenerator", inContext: .single(.objectLiteral), inputs: .one ) { b, value in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // Try to find a computed property that hasn't already been added to this literal. var propertyName: Variable var attempts = 0 @@ -526,7 +546,6 @@ public let CodeGenerators: [CodeGenerator] = [ propertyName = b.randomJsVariable() attempts += 1 } while b.currentObjectLiteral.computedProperties.contains(propertyName) - b.currentObjectLiteral.addComputedProperty(propertyName, as: value) }, @@ -534,18 +553,11 @@ public let CodeGenerators: [CodeGenerator] = [ "ObjectLiteralCopyPropertiesGenerator", inContext: .single(.objectLiteral), inputs: .preferred(.object()) ) { b, object in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) b.currentObjectLiteral.copyProperties(from: object) }, CodeGenerator("ObjectLiteralPrototypeGenerator", inContext: .single(.objectLiteral)) { b in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // There should only be one __proto__ field in an object literal. guard !b.currentObjectLiteral.hasPrototype else { return } @@ -560,22 +572,9 @@ public let CodeGenerators: [CodeGenerator] = [ "ObjectLiteralMethodBeginGenerator", inContext: .single(.objectLiteral), provides: [.javascript, .subroutine, .method] ) { b in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // Try to find a method that hasn't already been added to this literal. - var methodName: String - var attempts = 0 - repeat { - if attempts >= 10 { - methodName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - methodName = b.randomCustomMethodName() - attempts += 1 - } while b.currentObjectLiteral.methods.contains(methodName) + let methodName = b.generateString(b.randomCustomMethodName, + notIn: b.currentObjectLiteral.methods) let randomParameters = b.randomParameters() b.setParameterTypesForNextSubroutine( @@ -598,20 +597,17 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.objectLiteral), provides: [.javascript, .subroutine, .method] ) { b in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // Try to find a computed method name that hasn't already been added to this literal. + var methodName: Variable var attempts = 0 repeat { + methodName = b.randomJsVariable() if attempts >= 10 { - methodName = b.loadString( - String.random(ofLength: Int.random(in: 1...5))) + // This might lead to having two computed methods with the same name (so one + // will overwrite the other). break } - methodName = b.randomJsVariable() attempts += 1 } while b.currentObjectLiteral.computedMethods.contains( methodName) @@ -641,25 +637,9 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.objectLiteral), provides: [.javascript, .subroutine, .method] ) { b in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added and for which a getter has not yet been installed. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - // We should not fail here but also don't produce a syntax error. - propertyName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentObjectLiteral.properties.contains(propertyName) - || b.currentObjectLiteral.getters.contains(propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentObjectLiteral.properties + b.currentObjectLiteral.getters) b.emit(BeginObjectLiteralGetter(propertyName: propertyName)) }, @@ -681,25 +661,9 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.objectLiteral), provides: [.javascript, .subroutine, .method] ) { b in - assert( - b.context.contains(.objectLiteral) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added and for which a setter has not yet been installed. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - // We should not fail here but also don't produce a syntax error. - propertyName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentObjectLiteral.properties.contains(propertyName) - || b.currentObjectLiteral.setters.contains(propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentObjectLiteral.properties + b.currentObjectLiteral.setters) b.emit(BeginObjectLiteralSetter(propertyName: propertyName)) }, GeneratorStub( @@ -718,9 +682,6 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) guard !b.currentClassDefinition.hasConstructor else { // There must only be one constructor @@ -765,19 +726,9 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator("ClassInstancePropertyGenerator", inContext: .single(.classDefinition)) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added to this literal. - var propertyName: String - var attempts = 0 - repeat { - guard attempts < 10 else { return } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.instanceProperties.contains( - propertyName) + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.instanceProperties) var value: Variable? = probability(0.5) ? b.randomJsVariable() : nil b.currentClassDefinition.addInstanceProperty(propertyName, value: value) @@ -785,10 +736,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator("ClassInstanceElementGenerator", inContext: .single(.classDefinition)) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Select an element that hasn't already been added to this literal. var index = b.randomIndex() while b.currentClassDefinition.instanceElements.contains(index) { @@ -803,10 +750,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator( "ClassInstanceComputedPropertyGenerator", inContext: .single(.classDefinition) ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a computed property that hasn't already been added to this literal. var propertyName: Variable var attempts = 0 @@ -830,23 +773,9 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a method that hasn't already been added to this class. - var methodName: String - var attempts = 0 - repeat { - if attempts >= 10 { - methodName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - methodName = b.randomCustomMethodName() - attempts += 1 - } while b.currentClassDefinition.instanceMethods.contains( - methodName) + let methodName = b.generateString(b.randomCustomMethodName, + notIn: b.currentClassDefinition.instanceMethods) let parameters = b.randomParameters() b.setParameterTypesForNextSubroutine(parameters.parameterTypes) @@ -872,10 +801,6 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a method that hasn't already been added to this class. var methodName = b.randomJsVariable() var attempts = 0 @@ -910,26 +835,10 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added and for which a getter has not yet been installed. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - propertyName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.instanceProperties.contains( - propertyName) - || b.currentClassDefinition.instanceGetters.contains( - propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.instanceProperties + + b.currentClassDefinition.instanceGetters) b.emit(BeginClassInstanceGetter(propertyName: propertyName)) }, GeneratorStub( @@ -948,26 +857,10 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added and for which a setter has not yet been installed. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - propertyName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.instanceProperties.contains( - propertyName) - || b.currentClassDefinition.instanceSetters.contains( - propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.instanceProperties + + b.currentClassDefinition.instanceSetters) b.emit(BeginClassInstanceSetter(propertyName: propertyName)) }, GeneratorStub( @@ -981,22 +874,9 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator("ClassStaticPropertyGenerator", inContext: .single(.classDefinition)) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added to this literal. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - propertyName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.staticProperties.contains(propertyName) + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.staticProperties) var value: Variable? = probability(0.5) ? b.randomJsVariable() : nil b.currentClassDefinition.addStaticProperty(propertyName, value: value) @@ -1004,10 +884,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator("ClassStaticElementGenerator", inContext: .single(.classDefinition)) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Select an element that hasn't already been added to this literal. var index = b.randomIndex() while b.currentClassDefinition.staticElements.contains(index) { @@ -1022,10 +898,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator( "ClassStaticComputedPropertyGenerator", inContext: .single(.classDefinition) ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a computed property that hasn't already been added to this literal. var propertyName: Variable var attempts = 0 @@ -1052,10 +924,6 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - b.emit(BeginClassStaticInitializer()) }, GeneratorStub( @@ -1074,24 +942,9 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .method, .subroutine, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a method that hasn't already been added to this class. - var methodName: String - var attempts = 0 - repeat { - if attempts >= 10 { - methodName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - methodName = b.randomCustomMethodName() - attempts += 1 - } while b.currentClassDefinition.staticMethods.contains( - methodName) - + let methodName = b.generateString(b.randomCustomMethodName, + notIn: b.currentClassDefinition.staticMethods) let parameters = b.randomParameters() b.setParameterTypesForNextSubroutine(parameters.parameterTypes) @@ -1118,10 +971,6 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a method that hasn't already been added to this class. var methodName = b.randomJsVariable() var attempts = 0 @@ -1156,26 +1005,10 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added and for which a getter has not yet been installed. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - propertyName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.staticProperties.contains( - propertyName) - || b.currentClassDefinition.staticGetters.contains( - propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.staticProperties + + b.currentClassDefinition.staticGetters) b.emit(BeginClassStaticGetter(propertyName: propertyName)) }, GeneratorStub( @@ -1195,27 +1028,11 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a property that hasn't already been added and for which a setter has not yet been installed. - var propertyName: String - var attempts = 0 - repeat { - if attempts >= 10 { - propertyName = String.random(ofLength: Int.random(in: 1...5)) - break - } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.staticProperties.contains( - propertyName) - || b.currentClassDefinition.staticSetters.contains( - propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.staticProperties + + b.currentClassDefinition.staticSetters) b.emit(BeginClassStaticSetter(propertyName: propertyName)) - }, GeneratorStub( "ClassStaticSetterEndGenerator", @@ -1228,18 +1045,9 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator( "ClassPrivateInstancePropertyGenerator", inContext: .single(.classDefinition) ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a private field that hasn't already been added to this literal. - var propertyName: String - var attempts = 0 - repeat { - guard attempts < 10 else { return } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.privateFields.contains(propertyName) + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.privateFields) var value = probability(0.5) ? b.randomJsVariable() : nil b.currentClassDefinition.addPrivateInstanceProperty( @@ -1254,23 +1062,9 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a private field that hasn't already been added to this class. - var methodName: String - var attempts = 0 - repeat { - if attempts >= 10 { - methodName = String.random(ofLength: Int.random(in: 1...5)) - break - } - methodName = b.randomCustomMethodName() - attempts += 1 - } while b.currentClassDefinition.privateFields.contains( - methodName) - + let methodName = b.generateString(b.randomCustomMethodName, + notIn: b.currentClassDefinition.privateFields) let parameters = b.randomParameters() b.emit( BeginClassPrivateInstanceMethod( @@ -1289,19 +1083,9 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator( "ClassPrivateStaticPropertyGenerator", inContext: .single(.classDefinition) ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a private field that hasn't already been added to this literal. - var propertyName: String - var attempts = 0 - repeat { - guard attempts < 10 else { return } - propertyName = b.randomCustomPropertyName() - attempts += 1 - } while b.currentClassDefinition.privateFields.contains(propertyName) - + let propertyName = b.generateString(b.randomCustomPropertyName, + notIn: b.currentClassDefinition.privateFields) var value = probability(0.5) ? b.randomJsVariable() : nil b.currentClassDefinition.addPrivateStaticProperty( propertyName, value: value) @@ -1315,24 +1099,9 @@ public let CodeGenerators: [CodeGenerator] = [ inContext: .single(.classDefinition), provides: [.javascript, .subroutine, .method, .classMethod] ) { b in - assert( - b.context.contains(.classDefinition) - && !b.context.contains(.javascript)) - // Try to find a private field that hasn't already been added to this class. - var methodName: String - var attempts = 0 - repeat { - if attempts >= 10 { - methodName = String.random( - ofLength: Int.random(in: 1...5)) - break - } - methodName = b.randomCustomMethodName() - attempts += 1 - } while b.currentClassDefinition.privateFields.contains( - methodName) - + let methodName = b.generateString(b.randomCustomMethodName, + notIn: b.currentClassDefinition.privateFields) let parameters = b.randomParameters() b.emit( BeginClassPrivateStaticMethod( @@ -1965,7 +1734,6 @@ public let CodeGenerators: [CodeGenerator] = [ c, withArgs: arguments, spreading: spreads, guard: needGuard) }, - // TODO(mliedtke): Improve generateTypeInternal to support .unboundFunction() CodeGenerator("UnboundFunctionCallGenerator", inputs: .preferred(.unboundFunction())) { b, f in let (arguments, argsMatch) = b.randomArguments(forCallingGuardableFunction: f) let fctType = b.type(of: f) @@ -1976,7 +1744,6 @@ public let CodeGenerators: [CodeGenerator] = [ b.callMethod("call", on: f, withArgs: [receiver] + arguments, guard: needGuard) }, - // TODO(mliedtke): Improve generateTypeInternal to support .unboundFunction() CodeGenerator("UnboundFunctionApplyGenerator", inputs: .preferred(.unboundFunction())) { b, f in let (arguments, argsMatch) = b.randomArguments(forCallingGuardableFunction: f) let fctType = b.type(of: f) @@ -1987,7 +1754,6 @@ public let CodeGenerators: [CodeGenerator] = [ b.callMethod("apply", on: f, withArgs: [receiver, b.createArray(with: arguments)], guard: needGuard) }, - // TODO(mliedtke): Improve generateTypeInternal to support .unboundFunction() CodeGenerator("UnboundFunctionBindGenerator", inputs: .required(.unboundFunction())) { b, f in let arguments = b.randomArguments(forCalling: f) let fctType = b.type(of: f) @@ -2007,7 +1773,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator( "SubroutineReturnGenerator", inContext: .single(.subroutine), inputs: .one ) { b, val in - assert(b.context.contains(.subroutine)) if probability(0.9) { b.doReturn(val) } else { @@ -2017,7 +1782,6 @@ public let CodeGenerators: [CodeGenerator] = [ CodeGenerator("YieldGenerator", inContext: .single(.generatorFunction), inputs: .one) { b, val in - assert(b.context.contains(.generatorFunction)) if probability(0.9) { b.yield(val) } else { @@ -2029,13 +1793,11 @@ public let CodeGenerators: [CodeGenerator] = [ "YieldEachGenerator", inContext: .single(.generatorFunction), inputs: .required(.iterable) ) { b, val in - assert(b.context.contains(.generatorFunction)) b.yieldEach(val) }, CodeGenerator("AwaitGenerator", inContext: .single(.asyncFunction), inputs: .one) { b, val in - assert(b.context.contains(.asyncFunction)) b.await(val) }, @@ -2572,7 +2334,6 @@ public let CodeGenerators: [CodeGenerator] = [ }, CodeGenerator("ContinueGenerator", inContext: .single(.loop)) { b in - assert(b.context.contains(.loop)) b.loopContinue() }, @@ -2731,31 +2492,6 @@ public let CodeGenerators: [CodeGenerator] = [ b.callMethod("construct", on: reflect, withArgs: arguments) }, - CodeGenerator( - "WeirdClassGenerator", - [ - GeneratorStub( - "WeirdClassBeginGenerator", - provides: [.classDefinition] - ) { b in - // See basically https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields#examples - let base = b.buildPlainFunction(with: .parameters(n: 1)) { - args in - b.doReturn(b.randomJsVariable()) - } - b.emit( - BeginClassDefinition(hasSuperclass: true, isExpression: probability(0.3)), - withInputs: [base]) - }, - GeneratorStub( - "WeirdClassGenerator", - inContext: .single(.classDefinition) - ) { b in - b.emit(EndClassDefinition()) - }, - ] - ), - CodeGenerator("ProxyGenerator", inputs: .preferred(.object())) { b, target in var candidates = Set([ @@ -3099,7 +2835,6 @@ public let CodeGenerators: [CodeGenerator] = [ }, CodeGenerator("LoadNewTargetGenerator", inContext: .single(.subroutine)) { b in - assert(b.context.contains(.subroutine)) b.loadNewTarget() }, diff --git a/Sources/Fuzzilli/CodeGen/WasmCodeGenerators.swift b/Sources/Fuzzilli/CodeGen/WasmCodeGenerators.swift index 685cb0c0f..f63a168e5 100755 --- a/Sources/Fuzzilli/CodeGen/WasmCodeGenerators.swift +++ b/Sources/Fuzzilli/CodeGen/WasmCodeGenerators.swift @@ -632,9 +632,7 @@ public let WasmCodeGenerators: [CodeGenerator] = [ // For funcref tables, we need to look for functions to populate the entries. // These are going to be either wasm function definitions (.wasmFunctionDef()) or JS functions (.function()). // TODO(manoskouk): When we have support for constant expressions, consider looking for .wasmFuncRef instead. - let expectedEntryType = - elementType == .wasmFuncRef - ? .wasmFunctionDef() | .function() : .object() + let expectedEntryType = module.getEntryTypeForTable(elementType: elementType) // Currently, only generate entries for funcref tables. // TODO(manoskouk): Generalize this. @@ -667,13 +665,13 @@ public let WasmCodeGenerators: [CodeGenerator] = [ }, CodeGenerator("WasmDefineElementSegmentGenerator", inContext: .single(.wasm)) { b in - let elementsType: ILType = .wasmFunctionDef() | .function() - if b.randomVariable(ofType: elementsType) == nil { + let expectedEntryType = b.currentWasmModule.getEntryTypeForTable(elementType: ILType.wasmFuncRef) + if b.randomVariable(ofType: expectedEntryType) == nil { return } - var elements: [Variable] = (0...Int.random(in: 0...8)).map {_ in b.randomVariable(ofType: elementsType)!} - b.currentWasmModule.addElementSegment(elementsType: elementsType, elements: elements) + var elements: [Variable] = (0...Int.random(in: 0...8)).map {_ in b.randomVariable(ofType: expectedEntryType)!} + b.currentWasmModule.addElementSegment(elements: elements) }, CodeGenerator("WasmDropElementSegmentGenerator", inContext: .single(.wasmFunction), inputs: .required(.wasmElementSegment())) { b, elementSegment in @@ -1279,25 +1277,34 @@ public let WasmCodeGenerators: [CodeGenerator] = [ }, ]), - // TODO: think about how we can turn this into a mulit-part Generator - CodeGenerator("WasmLoopGenerator", inContext: .single(.wasmFunction)) { b in - let function = b.currentWasmModule.currentWasmFunction - let loopCtr = function.consti32(10) - - function.wasmBuildLoop(with: [] => []) { label, args in - let result = function.wasmi32BinOp( + CodeGenerator( + "WasmLoopGenerator", + [ + GeneratorStub( + "WasmBeginLoopGenerator", + inContext: .single(.wasmFunction), + provides: [.wasmFunction] + ) { b in + let function = b.currentWasmModule.currentWasmFunction + let loopCtr = function.consti32(10) + b.runtimeData.push("loopCounter", loopCtr) + b.emit(WasmBeginLoop(with: [] => [])) + // Increase loop counter. + let result = function.wasmi32BinOp( loopCtr, function.consti32(1), binOpKind: .Sub) - function.wasmReassign(variable: loopCtr, to: result) - - b.buildRecursive(n: defaultCodeGenerationAmount) - - // Backedge of loop, we continue if it is not equal to zero. - let isNotZero = function.wasmi32CompareOp( - loopCtr, function.consti32(0), using: .Ne) - function.wasmBranchIf( - isNotZero, to: label, hint: b.randomWasmBranchHint()) - } - }, + function.wasmReassign(variable: loopCtr, to: result) + }, + GeneratorStub( + "WasmEndLoopGenerator", + inContext: .single(.wasmFunction) + ) { b in + let function = b.currentWasmModule.currentWasmFunction + let loopCtr = b.runtimeData.pop("loopCounter") + // Backedge of loop, we continue if it is not equal to zero. + let isNotZero = function.wasmi32CompareOp(loopCtr, function.consti32(0), using: .Ne) + b.emit(WasmEndLoop(outputTypes: [])) + }, + ]), CodeGenerator("WasmLoopWithSignatureGenerator", inContext: .single(.wasmFunction)) { b in diff --git a/Sources/Fuzzilli/Configuration.swift b/Sources/Fuzzilli/Configuration.swift index 63496c7cf..121e9cbb8 100755 --- a/Sources/Fuzzilli/Configuration.swift +++ b/Sources/Fuzzilli/Configuration.swift @@ -17,7 +17,7 @@ public struct Configuration { public let arguments: [String] /// Timeout in milliseconds after which child processes will be killed. - public let timeout: UInt32 + public var timeout: UInt32 /// Log level to use. public let logLevel: LogLevel diff --git a/Sources/Fuzzilli/Environment/JavaScriptEnvironment.swift b/Sources/Fuzzilli/Environment/JavaScriptEnvironment.swift index 488c1cdd3..17888b9f1 100755 --- a/Sources/Fuzzilli/Environment/JavaScriptEnvironment.swift +++ b/Sources/Fuzzilli/Environment/JavaScriptEnvironment.swift @@ -618,12 +618,12 @@ public class JavaScriptEnvironment: ComponentBase { // Log detailed information about the environment here so users are aware of it and can modify things if they like. logger.info("Initialized static JS environment model") - logger.info("Have \(builtins.count) available builtins: \(builtins)") - logger.info("Have \(groups.count) different object groups: \(groups.keys)") - logger.info("Have \(builtinProperties.count) builtin property names: \(builtinProperties)") - logger.info("Have \(builtinMethods.count) builtin method names: \(builtinMethods)") - logger.info("Have \(customProperties.count) custom property names: \(customProperties)") - logger.info("Have \(customMethods.count) custom method names: \(customMethods)") + logger.info("Have \(builtins.count) available builtins: \(builtins.sorted())") + logger.info("Have \(groups.count) different object groups: \(groups.keys.sorted())") + logger.info("Have \(builtinProperties.count) builtin property names: \(builtinProperties.sorted())") + logger.info("Have \(builtinMethods.count) builtin method names: \(builtinMethods.sorted())") + logger.info("Have \(customProperties.count) custom property names: \(customProperties.sorted())") + logger.info("Have \(customMethods.count) custom method names: \(customMethods.sorted())") } func checkConstructorAvailability() { @@ -830,8 +830,8 @@ public class JavaScriptEnvironment: ComponentBase { if let signatures = group.methods[propertyName] { return .unboundFunction(signatures.first, receiver: baseType) } - } else { - // This shouldn't happen, probably forgot to register the object group + } else if !baseType.isEnumerationOrNamedString { + // This shouldn't happen, probably forgot to register the object group. logger.warning("No type information for object group \(groupName) available") } } @@ -845,7 +845,7 @@ public class JavaScriptEnvironment: ComponentBase { if let signatures = group.methods[methodName] { return signatures } - } else { + } else if !baseType.isEnumerationOrNamedString { // This shouldn't happen, probably forgot to register the object group logger.warning("No type information for object group \(groupName) available") } diff --git a/Sources/Fuzzilli/Execution/REPRL.swift b/Sources/Fuzzilli/Execution/REPRL.swift index ae7d117e2..5958bec30 100755 --- a/Sources/Fuzzilli/Execution/REPRL.swift +++ b/Sources/Fuzzilli/Execution/REPRL.swift @@ -24,8 +24,8 @@ public class REPRL: ComponentBase, ScriptRunner { /// Commandline arguments for the executable public private(set) var processArguments: [String] - /// Environment variables for the child process - private var env = [String]() + /// Environment variables for the child process. Shape: [(key, value)] + public private(set) var env = [(String, String)]() /// Number of script executions since start of child process private var execsSinceReset = 0 @@ -53,7 +53,7 @@ public class REPRL: ComponentBase, ScriptRunner { super.init(name: "REPRL") for (key, value) in processEnvironment { - env.append(key + "=" + value) + env.append((key, value)) } } @@ -64,7 +64,7 @@ public class REPRL: ComponentBase, ScriptRunner { } let argv = convertToCArray(processArguments) - let envp = convertToCArray(env) + let envp = convertToCArray(env.map({ $0 + "=" + $1 })) if reprl_initialize_context(reprlContext, argv, envp, /* capture stdout */ 1, /* capture stderr: */ 1) != 0 { logger.fatal("Failed to initialize REPRL context: \(String(cString: reprl_get_last_error(reprlContext)))") @@ -84,7 +84,7 @@ public class REPRL: ComponentBase, ScriptRunner { } public func setEnvironmentVariable(_ key: String, to value: String) { - env.append(key + "=" + value) + env.append((key, value)) } public func run(_ script: String, withTimeout timeout: UInt32) -> Execution { diff --git a/Sources/Fuzzilli/Execution/ScriptRunner.swift b/Sources/Fuzzilli/Execution/ScriptRunner.swift index 36bccf7e8..fcd408d1d 100755 --- a/Sources/Fuzzilli/Execution/ScriptRunner.swift +++ b/Sources/Fuzzilli/Execution/ScriptRunner.swift @@ -14,6 +14,7 @@ public protocol ScriptRunner: Component { var processArguments: [String] { get } + var env: [(String, String)] { get } /// Executes a script, waits for it to complete, and returns the result. func run(_ script: String, withTimeout timeout: UInt32) -> Execution diff --git a/Sources/Fuzzilli/FuzzIL/JSTyper.swift b/Sources/Fuzzilli/FuzzIL/JSTyper.swift index 6157ea39d..2ce2730fa 100755 --- a/Sources/Fuzzilli/FuzzIL/JSTyper.swift +++ b/Sources/Fuzzilli/FuzzIL/JSTyper.swift @@ -728,8 +728,9 @@ public struct JSTyper: Analyzer { type(of: instr.input(0)).wasmElementSegmentType!.markAsDropped() case .wasmTableInit(_), .wasmTableCopy(_): - // TODO(427115604): - implement both init and copy instructions. - break + let definingInstruction = defUseAnalyzer.definition(of: instr.input(0)) + dynamicObjectGroupManager.addWasmTable(withType: type(of: instr.input(0)), forDefinition: definingInstruction, forVariable: instr.input(0)) + // Ignore changed function signatures - it is too hard to reason about them statically. case .wasmDefineMemory(let op): setType(of: instr.output, to: op.wasmMemory) registerWasmMemoryUse(for: instr.output) @@ -1117,7 +1118,11 @@ public struct JSTyper: Analyzer { dynamicObjectGroupManager.createNewClass(withSuperType: superType, propertyMap: propertySuperTypeMap, methodMap: methodSuperTypeMap, superConstructorType: superConstructorType, forOutput: instr.output) - set(instr.output, .jsAnything) // Treat the class variable as unknown until we have fully analyzed the class definition + // We only know here that this is going to be a constructor() type. + // On endClassDefinition below, the exact type is refined. But we + // need to already set this broader type here, so that begin- + // generator stubs can claim they produce a constructor(). + set(instr.output, .constructor()) case .endClassDefinition: let (instanceType, classDefinition) = dynamicObjectGroupManager.finalizeClass() set(classDefinition.output, classDefinition.objectGroup.instanceType + .constructor(classDefinition.constructorParameters => instanceType)) diff --git a/Sources/Fuzzilli/FuzzIL/Opcodes.swift b/Sources/Fuzzilli/FuzzIL/Opcodes.swift index 44bca30d2..f9fda2f00 100755 --- a/Sources/Fuzzilli/FuzzIL/Opcodes.swift +++ b/Sources/Fuzzilli/FuzzIL/Opcodes.swift @@ -67,6 +67,8 @@ enum Opcode { case classAddInstanceComputedProperty(ClassAddInstanceComputedProperty) case beginClassInstanceMethod(BeginClassInstanceMethod) case endClassInstanceMethod(EndClassInstanceMethod) + case beginClassInstanceComputedMethod(BeginClassInstanceComputedMethod) + case endClassInstanceComputedMethod(EndClassInstanceComputedMethod) case beginClassInstanceGetter(BeginClassInstanceGetter) case endClassInstanceGetter(EndClassInstanceGetter) case beginClassInstanceSetter(BeginClassInstanceSetter) @@ -78,6 +80,8 @@ enum Opcode { case endClassStaticInitializer(EndClassStaticInitializer) case beginClassStaticMethod(BeginClassStaticMethod) case endClassStaticMethod(EndClassStaticMethod) + case beginClassStaticComputedMethod(BeginClassStaticComputedMethod) + case endClassStaticComputedMethod(EndClassStaticComputedMethod) case beginClassStaticGetter(BeginClassStaticGetter) case endClassStaticGetter(EndClassStaticGetter) case beginClassStaticSetter(BeginClassStaticSetter) @@ -359,8 +363,4 @@ enum Opcode { case wasmDefineSignatureType(WasmDefineSignatureType) case createNamedDisposableVariable(CreateNamedDisposableVariable) case createNamedAsyncDisposableVariable(CreateNamedAsyncDisposableVariable) - case beginClassInstanceComputedMethod(BeginClassInstanceComputedMethod) - case endClassInstanceComputedMethod(EndClassInstanceComputedMethod) - case beginClassStaticComputedMethod(BeginClassStaticComputedMethod) - case endClassStaticComputedMethod(EndClassStaticComputedMethod) } diff --git a/Sources/Fuzzilli/FuzzIL/TypeSystem.swift b/Sources/Fuzzilli/FuzzIL/TypeSystem.swift index c0e81beaf..be22285c9 100755 --- a/Sources/Fuzzilli/FuzzIL/TypeSystem.swift +++ b/Sources/Fuzzilli/FuzzIL/TypeSystem.swift @@ -23,6 +23,7 @@ // a variable of type .object() as input because only that can have methods. Also, when generating function // calls it can be necessary to find variables of the types that the function expects as arguments. This task // is solved by defining a "Is a" relationship between types which can then be used to find suitable variables. +// Notice that the relationship is not symmetric. Think of it as "Is contained by" or <=. // 2. to determine possible actions that can be performed on a value. E.g. when having a reference to something // that is known to be a function, a function call can be performed. Also, the method call code generator will // want to know the available methods that it can call on an object, which it can query from the type system. @@ -251,6 +252,7 @@ public struct ILType: Hashable { public static let wasmFuncRef = ILType.wasmRef(.Abstract(.WasmFunc), nullability: true) public static let wasmExnRef = ILType.wasmRef(.Abstract(.WasmExn), nullability: true) public static let wasmI31Ref = ILType.wasmRef(.Abstract(.WasmI31), nullability: true) + public static let wasmRefI31 = ILType.wasmRef(.Abstract(.WasmI31), nullability: false) public static let wasmAnyRef = ILType.wasmRef(.Abstract(.WasmAny), nullability: true) public static let wasmRefAny = ILType.wasmRef(.Abstract(.WasmAny), nullability: false) public static let wasmNullRef = ILType.wasmRef(.Abstract(.WasmNone), nullability: true) @@ -259,7 +261,6 @@ public struct ILType: Hashable { public static let wasmEqRef = ILType.wasmRef(.Abstract(.WasmEq), nullability: true) public static let wasmStructRef = ILType.wasmRef(.Abstract(.WasmStruct), nullability: true) public static let wasmArrayRef = ILType.wasmRef(.Abstract(.WasmArray), nullability: true) - public static let wasmRefI31 = ILType.wasmRef(.Abstract(.WasmI31), nullability: false) public static let wasmSimd128 = ILType(definiteType: .wasmSimd128) public static let wasmGenericRef = ILType(definiteType: .wasmRef) @@ -323,7 +324,7 @@ public struct ILType: Hashable { return !(lhs == rhs) } - /// Returns true if this type subsumes the given type, i.e. every instance of other is also an instance of this type. + /// Returns true if other type subsumes this type, i.e. every instance of this is also an instance of other type. public func Is(_ other: ILType) -> Bool { return other.subsumes(self) } @@ -492,10 +493,14 @@ public struct ILType: Hashable { return Is(.constructor()) ? ext?.signature : nil } - public var isEnumeration : Bool { + public var isEnumeration: Bool { return Is(.string) && ext != nil && !ext!.properties.isEmpty } + public var isEnumerationOrNamedString: Bool { + return Is(.string) && ext != nil && group != nil + } + public var group: String? { return ext?.group } diff --git a/Sources/Fuzzilli/FuzzIL/WasmOperations.swift b/Sources/Fuzzilli/FuzzIL/WasmOperations.swift index c05115eba..bed8bd6ae 100755 --- a/Sources/Fuzzilli/FuzzIL/WasmOperations.swift +++ b/Sources/Fuzzilli/FuzzIL/WasmOperations.swift @@ -813,7 +813,7 @@ final class WasmDefineTable: WasmOperation { final class WasmDefineElementSegment: WasmOperation { override var opcode: Opcode { .wasmDefineElementSegment(self) } - public let size: UInt32 + let size: UInt32 init(size: UInt32) { self.size = size diff --git a/Sources/Fuzzilli/Fuzzer.swift b/Sources/Fuzzilli/Fuzzer.swift index b8b335ddc..33b2a4243 100755 --- a/Sources/Fuzzilli/Fuzzer.swift +++ b/Sources/Fuzzilli/Fuzzer.swift @@ -14,6 +14,23 @@ import Foundation +/// Timeouts are configured either by a single value, then this value will be +/// used, or by an interval, in which case a value will be determined on +/// start-up. Timeouts are in milliseconds. +public enum Timeout { + case value(UInt32) + case interval(UInt32, UInt32) + + public func maxTimeout() -> UInt32{ + switch self { + case .value(let value): + return value + case .interval(_, let max): + return max + } + } +} + public class Fuzzer { /// Id of this fuzzer. public let id: UUID @@ -25,7 +42,7 @@ public class Fuzzer { public private(set) var isStopped = false /// The configuration used by this fuzzer. - public let config: Configuration + public var config: Configuration /// The list of events that can be dispatched on this fuzzer instance. public let events: Events @@ -944,7 +961,8 @@ public class Fuzzer { } /// Runs a number of startup tests to check whether everything is configured correctly. - public func runStartupTests() { + /// Returns a recommended timeout. + public func runStartupTests(with timeout : Timeout) -> Timeout { assert(isInitialized) // Check if we can execute programs @@ -1010,7 +1028,22 @@ public class Fuzzer { // Determine recommended timeout value (rounded up to nearest multiple of 10ms) let maxExecutionTimeMs = (Int(maxExecutionTime * 1000 + 9) / 10) * 10 - let recommendedTimeout = 10 * maxExecutionTimeMs + let recommendedTimeout = 2 * maxExecutionTimeMs + + // Specify the actual timeout based on an interval if configured. + let actualTimeout : Timeout + if case .interval(let lowerLimit, let upperLimit) = timeout { + let timeout = max(min(UInt32(recommendedTimeout), upperLimit), lowerLimit) + logger.info("Determined a timeout of \(timeout)ms based on the interval [\(lowerLimit), \(upperLimit)]") + actualTimeout = Timeout.value(timeout) + + // Update the configuration used by the main thread. Worker threads + // will be configured based on the timeout we return here. + config.timeout = timeout + } else { + actualTimeout = timeout + } + logger.info("Recommended timeout: at least \(recommendedTimeout)ms. Current timeout: \(config.timeout)ms") // Check if we can receive program output @@ -1024,7 +1057,9 @@ public class Fuzzer { // Wrap the executor in a JavaScriptTestRunner // If we can execute it standalone, it could inform us if any flags that were passed are incorrect, stale or conflicting. - let executor = JavaScriptExecutor(withExecutablePath: runner.processArguments[0], arguments: Array(runner.processArguments[1...])) + let executor = JavaScriptExecutor( + withExecutablePath: runner.processArguments[0], + arguments: Array(runner.processArguments[1...]), env: runner.env) do { let output = try executor.executeScript("", withTimeout: 300).output if output.lengthOfBytes(using: .utf8) > 0 { @@ -1036,6 +1071,7 @@ public class Fuzzer { } logger.info("Startup tests finished successfully") + return actualTimeout } /// A pending corpus import job together with some statistics. diff --git a/Sources/Fuzzilli/Protobuf/program.pb.swift b/Sources/Fuzzilli/Protobuf/program.pb.swift index e13009f1f..bf4e21f82 100755 --- a/Sources/Fuzzilli/Protobuf/program.pb.swift +++ b/Sources/Fuzzilli/Protobuf/program.pb.swift @@ -353,6 +353,22 @@ public struct Fuzzilli_Protobuf_Instruction: Sendable { set {operation = .endClassInstanceMethod(newValue)} } + public var beginClassInstanceComputedMethod: Fuzzilli_Protobuf_BeginClassInstanceComputedMethod { + get { + if case .beginClassInstanceComputedMethod(let v)? = operation {return v} + return Fuzzilli_Protobuf_BeginClassInstanceComputedMethod() + } + set {operation = .beginClassInstanceComputedMethod(newValue)} + } + + public var endClassInstanceComputedMethod: Fuzzilli_Protobuf_EndClassInstanceComputedMethod { + get { + if case .endClassInstanceComputedMethod(let v)? = operation {return v} + return Fuzzilli_Protobuf_EndClassInstanceComputedMethod() + } + set {operation = .endClassInstanceComputedMethod(newValue)} + } + public var beginClassInstanceGetter: Fuzzilli_Protobuf_BeginClassInstanceGetter { get { if case .beginClassInstanceGetter(let v)? = operation {return v} @@ -441,6 +457,22 @@ public struct Fuzzilli_Protobuf_Instruction: Sendable { set {operation = .endClassStaticMethod(newValue)} } + public var beginClassStaticComputedMethod: Fuzzilli_Protobuf_BeginClassStaticComputedMethod { + get { + if case .beginClassStaticComputedMethod(let v)? = operation {return v} + return Fuzzilli_Protobuf_BeginClassStaticComputedMethod() + } + set {operation = .beginClassStaticComputedMethod(newValue)} + } + + public var endClassStaticComputedMethod: Fuzzilli_Protobuf_EndClassStaticComputedMethod { + get { + if case .endClassStaticComputedMethod(let v)? = operation {return v} + return Fuzzilli_Protobuf_EndClassStaticComputedMethod() + } + set {operation = .endClassStaticComputedMethod(newValue)} + } + public var beginClassStaticGetter: Fuzzilli_Protobuf_BeginClassStaticGetter { get { if case .beginClassStaticGetter(let v)? = operation {return v} @@ -2689,38 +2721,6 @@ public struct Fuzzilli_Protobuf_Instruction: Sendable { set {operation = .createNamedAsyncDisposableVariable(newValue)} } - public var beginClassInstanceComputedMethod: Fuzzilli_Protobuf_BeginClassInstanceComputedMethod { - get { - if case .beginClassInstanceComputedMethod(let v)? = operation {return v} - return Fuzzilli_Protobuf_BeginClassInstanceComputedMethod() - } - set {operation = .beginClassInstanceComputedMethod(newValue)} - } - - public var endClassInstanceComputedMethod: Fuzzilli_Protobuf_EndClassInstanceComputedMethod { - get { - if case .endClassInstanceComputedMethod(let v)? = operation {return v} - return Fuzzilli_Protobuf_EndClassInstanceComputedMethod() - } - set {operation = .endClassInstanceComputedMethod(newValue)} - } - - public var beginClassStaticComputedMethod: Fuzzilli_Protobuf_BeginClassStaticComputedMethod { - get { - if case .beginClassStaticComputedMethod(let v)? = operation {return v} - return Fuzzilli_Protobuf_BeginClassStaticComputedMethod() - } - set {operation = .beginClassStaticComputedMethod(newValue)} - } - - public var endClassStaticComputedMethod: Fuzzilli_Protobuf_EndClassStaticComputedMethod { - get { - if case .endClassStaticComputedMethod(let v)? = operation {return v} - return Fuzzilli_Protobuf_EndClassStaticComputedMethod() - } - set {operation = .endClassStaticComputedMethod(newValue)} - } - public var unknownFields = SwiftProtobuf.UnknownStorage() public enum OneOf_Operation: Equatable, Sendable { @@ -2762,6 +2762,8 @@ public struct Fuzzilli_Protobuf_Instruction: Sendable { case classAddInstanceComputedProperty(Fuzzilli_Protobuf_ClassAddInstanceComputedProperty) case beginClassInstanceMethod(Fuzzilli_Protobuf_BeginClassInstanceMethod) case endClassInstanceMethod(Fuzzilli_Protobuf_EndClassInstanceMethod) + case beginClassInstanceComputedMethod(Fuzzilli_Protobuf_BeginClassInstanceComputedMethod) + case endClassInstanceComputedMethod(Fuzzilli_Protobuf_EndClassInstanceComputedMethod) case beginClassInstanceGetter(Fuzzilli_Protobuf_BeginClassInstanceGetter) case endClassInstanceGetter(Fuzzilli_Protobuf_EndClassInstanceGetter) case beginClassInstanceSetter(Fuzzilli_Protobuf_BeginClassInstanceSetter) @@ -2773,6 +2775,8 @@ public struct Fuzzilli_Protobuf_Instruction: Sendable { case endClassStaticInitializer(Fuzzilli_Protobuf_EndClassStaticInitializer) case beginClassStaticMethod(Fuzzilli_Protobuf_BeginClassStaticMethod) case endClassStaticMethod(Fuzzilli_Protobuf_EndClassStaticMethod) + case beginClassStaticComputedMethod(Fuzzilli_Protobuf_BeginClassStaticComputedMethod) + case endClassStaticComputedMethod(Fuzzilli_Protobuf_EndClassStaticComputedMethod) case beginClassStaticGetter(Fuzzilli_Protobuf_BeginClassStaticGetter) case endClassStaticGetter(Fuzzilli_Protobuf_EndClassStaticGetter) case beginClassStaticSetter(Fuzzilli_Protobuf_BeginClassStaticSetter) @@ -3054,10 +3058,6 @@ public struct Fuzzilli_Protobuf_Instruction: Sendable { case wasmDefineSignatureType(Fuzzilli_Protobuf_WasmDefineSignatureType) case createNamedDisposableVariable(Fuzzilli_Protobuf_CreateNamedDisposableVariable) case createNamedAsyncDisposableVariable(Fuzzilli_Protobuf_CreateNamedAsyncDisposableVariable) - case beginClassInstanceComputedMethod(Fuzzilli_Protobuf_BeginClassInstanceComputedMethod) - case endClassInstanceComputedMethod(Fuzzilli_Protobuf_EndClassInstanceComputedMethod) - case beginClassStaticComputedMethod(Fuzzilli_Protobuf_BeginClassStaticComputedMethod) - case endClassStaticComputedMethod(Fuzzilli_Protobuf_EndClassStaticComputedMethod) } @@ -3106,7 +3106,7 @@ fileprivate let _protobuf_package = "fuzzilli.protobuf" extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { public static let protoMessageName: String = _protobuf_package + ".Instruction" - public static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}inouts\0\u{1}opIdx\0\u{1}nop\0\u{1}loadInteger\0\u{1}loadBigInt\0\u{1}loadFloat\0\u{1}loadString\0\u{1}loadBoolean\0\u{1}loadUndefined\0\u{1}loadNull\0\u{1}loadThis\0\u{1}loadArguments\0\u{1}createNamedVariable\0\u{1}loadDisposableVariable\0\u{1}loadAsyncDisposableVariable\0\u{1}loadRegExp\0\u{1}beginObjectLiteral\0\u{1}objectLiteralAddProperty\0\u{1}objectLiteralAddElement\0\u{1}objectLiteralAddComputedProperty\0\u{1}objectLiteralCopyProperties\0\u{1}objectLiteralSetPrototype\0\u{1}beginObjectLiteralMethod\0\u{1}endObjectLiteralMethod\0\u{1}beginObjectLiteralComputedMethod\0\u{1}endObjectLiteralComputedMethod\0\u{1}beginObjectLiteralGetter\0\u{1}endObjectLiteralGetter\0\u{1}beginObjectLiteralSetter\0\u{1}endObjectLiteralSetter\0\u{1}endObjectLiteral\0\u{1}beginClassDefinition\0\u{1}beginClassConstructor\0\u{1}endClassConstructor\0\u{1}classAddInstanceProperty\0\u{1}classAddInstanceElement\0\u{1}classAddInstanceComputedProperty\0\u{1}beginClassInstanceMethod\0\u{1}endClassInstanceMethod\0\u{1}beginClassInstanceGetter\0\u{1}endClassInstanceGetter\0\u{1}beginClassInstanceSetter\0\u{1}endClassInstanceSetter\0\u{1}classAddStaticProperty\0\u{1}classAddStaticElement\0\u{1}classAddStaticComputedProperty\0\u{1}beginClassStaticInitializer\0\u{1}endClassStaticInitializer\0\u{1}beginClassStaticMethod\0\u{1}endClassStaticMethod\0\u{1}beginClassStaticGetter\0\u{1}endClassStaticGetter\0\u{1}beginClassStaticSetter\0\u{1}endClassStaticSetter\0\u{1}classAddPrivateInstanceProperty\0\u{1}beginClassPrivateInstanceMethod\0\u{1}endClassPrivateInstanceMethod\0\u{1}classAddPrivateStaticProperty\0\u{1}beginClassPrivateStaticMethod\0\u{1}endClassPrivateStaticMethod\0\u{1}endClassDefinition\0\u{1}createArray\0\u{1}createIntArray\0\u{1}createFloatArray\0\u{1}createArrayWithSpread\0\u{1}createTemplateString\0\u{1}getProperty\0\u{1}setProperty\0\u{1}updateProperty\0\u{1}deleteProperty\0\u{1}configureProperty\0\u{1}getElement\0\u{1}setElement\0\u{1}updateElement\0\u{1}deleteElement\0\u{1}configureElement\0\u{1}getComputedProperty\0\u{1}setComputedProperty\0\u{1}updateComputedProperty\0\u{1}deleteComputedProperty\0\u{1}configureComputedProperty\0\u{1}typeOf\0\u{1}void\0\u{1}testInstanceOf\0\u{1}testIn\0\u{1}beginPlainFunction\0\u{1}endPlainFunction\0\u{1}beginArrowFunction\0\u{1}endArrowFunction\0\u{1}beginGeneratorFunction\0\u{1}endGeneratorFunction\0\u{1}beginAsyncFunction\0\u{1}endAsyncFunction\0\u{1}beginAsyncArrowFunction\0\u{1}endAsyncArrowFunction\0\u{1}beginAsyncGeneratorFunction\0\u{1}endAsyncGeneratorFunction\0\u{1}beginConstructor\0\u{1}endConstructor\0\u{1}directive\0\u{1}return\0\u{1}yield\0\u{1}yieldEach\0\u{1}await\0\u{1}callFunction\0\u{1}callFunctionWithSpread\0\u{1}construct\0\u{1}constructWithSpread\0\u{1}callMethod\0\u{1}callMethodWithSpread\0\u{1}callComputedMethod\0\u{1}callComputedMethodWithSpread\0\u{1}unaryOperation\0\u{1}binaryOperation\0\u{1}ternaryOperation\0\u{1}update\0\u{1}dup\0\u{1}reassign\0\u{1}destructArray\0\u{1}destructArrayAndReassign\0\u{1}destructObject\0\u{1}destructObjectAndReassign\0\u{1}compare\0\u{1}eval\0\u{1}beginWith\0\u{1}endWith\0\u{1}callSuperConstructor\0\u{1}callSuperMethod\0\u{1}getPrivateProperty\0\u{1}setPrivateProperty\0\u{1}updatePrivateProperty\0\u{1}callPrivateMethod\0\u{1}getSuperProperty\0\u{1}setSuperProperty\0\u{1}getComputedSuperProperty\0\u{1}setComputedSuperProperty\0\u{1}updateSuperProperty\0\u{1}beginIf\0\u{1}beginElse\0\u{1}endIf\0\u{1}beginWhileLoopHeader\0\u{1}beginWhileLoopBody\0\u{1}endWhileLoop\0\u{1}beginDoWhileLoopBody\0\u{1}beginDoWhileLoopHeader\0\u{1}endDoWhileLoop\0\u{1}beginForLoopInitializer\0\u{1}beginForLoopCondition\0\u{1}beginForLoopAfterthought\0\u{1}beginForLoopBody\0\u{1}endForLoop\0\u{1}beginForInLoop\0\u{1}endForInLoop\0\u{1}beginForOfLoop\0\u{1}beginForOfLoopWithDestruct\0\u{1}endForOfLoop\0\u{1}beginRepeatLoop\0\u{1}endRepeatLoop\0\u{1}loopBreak\0\u{1}loopContinue\0\u{1}beginTry\0\u{1}beginCatch\0\u{1}beginFinally\0\u{1}endTryCatchFinally\0\u{1}throwException\0\u{1}beginCodeString\0\u{1}endCodeString\0\u{1}beginBlockStatement\0\u{1}endBlockStatement\0\u{1}beginSwitch\0\u{1}beginSwitchCase\0\u{1}beginSwitchDefaultCase\0\u{1}endSwitchCase\0\u{1}endSwitch\0\u{1}switchBreak\0\u{1}loadNewTarget\0\u{1}print\0\u{1}explore\0\u{1}probe\0\u{1}fixup\0\u{1}beginWasmModule\0\u{1}endWasmModule\0\u{1}createWasmGlobal\0\u{1}createWasmMemory\0\u{1}createWasmTable\0\u{1}createWasmJSTag\0\u{1}createWasmTag\0\u{1}wrapPromising\0\u{1}wrapSuspending\0\u{1}bindMethod\0\u{1}bindFunction\0\u{1}consti64\0\u{1}consti32\0\u{1}constf32\0\u{1}constf64\0\u{1}wasmReturn\0\u{1}wasmJsCall\0\u{1}wasmi32CompareOp\0\u{1}wasmi64CompareOp\0\u{1}wasmf32CompareOp\0\u{1}wasmf64CompareOp\0\u{1}wasmi32EqualZero\0\u{1}wasmi64EqualZero\0\u{1}wasmi32BinOp\0\u{1}wasmi64BinOp\0\u{1}wasmi32UnOp\0\u{1}wasmi64UnOp\0\u{1}wasmf32BinOp\0\u{1}wasmf64BinOp\0\u{1}wasmf32UnOp\0\u{1}wasmf64UnOp\0\u{1}wasmWrapi64Toi32\0\u{1}wasmTruncatef32Toi32\0\u{1}wasmTruncatef64Toi32\0\u{1}wasmExtendi32Toi64\0\u{1}wasmTruncatef32Toi64\0\u{1}wasmTruncatef64Toi64\0\u{1}wasmConverti32Tof32\0\u{1}wasmConverti64Tof32\0\u{1}wasmDemotef64Tof32\0\u{1}wasmConverti32Tof64\0\u{1}wasmConverti64Tof64\0\u{1}wasmPromotef32Tof64\0\u{1}wasmReinterpretf32Asi32\0\u{1}wasmReinterpretf64Asi64\0\u{1}wasmReinterpreti32Asf32\0\u{1}wasmReinterpreti64Asf64\0\u{1}wasmSignExtend8Intoi32\0\u{1}wasmSignExtend16Intoi32\0\u{1}wasmSignExtend8Intoi64\0\u{1}wasmSignExtend16Intoi64\0\u{1}wasmSignExtend32Intoi64\0\u{1}wasmTruncateSatf32Toi32\0\u{1}wasmTruncateSatf64Toi32\0\u{1}wasmTruncateSatf32Toi64\0\u{1}wasmTruncateSatf64Toi64\0\u{1}wasmReassign\0\u{1}wasmDefineGlobal\0\u{1}wasmDefineTable\0\u{1}wasmDefineMemory\0\u{1}wasmDefineDataSegment\0\u{1}wasmLoadGlobal\0\u{1}wasmStoreGlobal\0\u{1}wasmTableGet\0\u{1}wasmTableSet\0\u{1}wasmTableSize\0\u{1}wasmTableGrow\0\u{1}wasmCallIndirect\0\u{1}wasmCallDirect\0\u{1}wasmReturnCallDirect\0\u{1}wasmReturnCallIndirect\0\u{1}wasmMemoryLoad\0\u{1}wasmMemoryStore\0\u{1}wasmAtomicLoad\0\u{1}wasmAtomicStore\0\u{1}wasmAtomicRMW\0\u{1}wasmAtomicCmpxchg\0\u{1}wasmMemorySize\0\u{1}wasmMemoryGrow\0\u{1}wasmMemoryFill\0\u{1}wasmMemoryInit\0\u{1}wasmDropDataSegment\0\u{1}beginWasmFunction\0\u{1}endWasmFunction\0\u{1}wasmBeginBlock\0\u{1}wasmEndBlock\0\u{1}wasmBeginLoop\0\u{1}wasmEndLoop\0\u{1}wasmBranch\0\u{1}wasmBranchIf\0\u{1}wasmBranchTable\0\u{1}wasmNop\0\u{1}wasmBeginIf\0\u{1}wasmBeginElse\0\u{1}wasmEndIf\0\u{1}wasmBeginTryTable\0\u{1}wasmEndTryTable\0\u{1}wasmBeginTry\0\u{1}wasmBeginCatchAll\0\u{1}wasmBeginCatch\0\u{1}wasmEndTry\0\u{1}wasmBeginTryDelegate\0\u{1}wasmEndTryDelegate\0\u{1}wasmThrow\0\u{1}wasmRethrow\0\u{1}wasmThrowRef\0\u{1}wasmDefineTag\0\u{1}constSimd128\0\u{1}wasmSimd128Compare\0\u{1}wasmSimd128IntegerUnOp\0\u{1}wasmSimd128IntegerBinOp\0\u{1}wasmSimd128IntegerTernaryOp\0\u{1}wasmSimd128FloatUnOp\0\u{1}wasmSimd128FloatBinOp\0\u{1}wasmSimd128FloatTernaryOp\0\u{1}wasmSimdSplat\0\u{1}wasmSimdExtractLane\0\u{1}wasmSimdReplaceLane\0\u{1}wasmSimdStoreLane\0\u{1}wasmSimdLoadLane\0\u{1}wasmSimdLoad\0\u{1}wasmUnreachable\0\u{1}wasmSelect\0\u{1}wasmBeginTypeGroup\0\u{1}wasmEndTypeGroup\0\u{1}wasmDefineArrayType\0\u{1}wasmDefineStructType\0\u{1}wasmDefineForwardOrSelfReference\0\u{1}wasmResolveForwardReference\0\u{1}wasmArrayNewFixed\0\u{1}wasmArrayNewDefault\0\u{1}wasmArrayLen\0\u{1}wasmArrayGet\0\u{1}wasmArraySet\0\u{1}wasmStructNewDefault\0\u{1}wasmStructGet\0\u{1}wasmStructSet\0\u{1}wasmRefNull\0\u{1}wasmRefIsNull\0\u{1}wasmRefI31\0\u{1}wasmI31Get\0\u{1}wasmAnyConvertExtern\0\u{1}wasmExternConvertAny\0\u{1}wasmMemoryCopy\0\u{1}wasmDefineElementSegment\0\u{1}wasmTableInit\0\u{1}wasmDropElementSegment\0\u{1}wasmTableCopy\0\u{1}wasmDefineSignatureType\0\u{1}createNamedDisposableVariable\0\u{1}createNamedAsyncDisposableVariable\0\u{1}beginClassInstanceComputedMethod\0\u{1}endClassInstanceComputedMethod\0\u{1}beginClassStaticComputedMethod\0\u{1}endClassStaticComputedMethod\0") + public static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}inouts\0\u{1}opIdx\0\u{1}nop\0\u{1}loadInteger\0\u{1}loadBigInt\0\u{1}loadFloat\0\u{1}loadString\0\u{1}loadBoolean\0\u{1}loadUndefined\0\u{1}loadNull\0\u{1}loadThis\0\u{1}loadArguments\0\u{1}createNamedVariable\0\u{1}loadDisposableVariable\0\u{1}loadAsyncDisposableVariable\0\u{1}loadRegExp\0\u{1}beginObjectLiteral\0\u{1}objectLiteralAddProperty\0\u{1}objectLiteralAddElement\0\u{1}objectLiteralAddComputedProperty\0\u{1}objectLiteralCopyProperties\0\u{1}objectLiteralSetPrototype\0\u{1}beginObjectLiteralMethod\0\u{1}endObjectLiteralMethod\0\u{1}beginObjectLiteralComputedMethod\0\u{1}endObjectLiteralComputedMethod\0\u{1}beginObjectLiteralGetter\0\u{1}endObjectLiteralGetter\0\u{1}beginObjectLiteralSetter\0\u{1}endObjectLiteralSetter\0\u{1}endObjectLiteral\0\u{1}beginClassDefinition\0\u{1}beginClassConstructor\0\u{1}endClassConstructor\0\u{1}classAddInstanceProperty\0\u{1}classAddInstanceElement\0\u{1}classAddInstanceComputedProperty\0\u{1}beginClassInstanceMethod\0\u{1}endClassInstanceMethod\0\u{1}beginClassInstanceComputedMethod\0\u{1}endClassInstanceComputedMethod\0\u{1}beginClassInstanceGetter\0\u{1}endClassInstanceGetter\0\u{1}beginClassInstanceSetter\0\u{1}endClassInstanceSetter\0\u{1}classAddStaticProperty\0\u{1}classAddStaticElement\0\u{1}classAddStaticComputedProperty\0\u{1}beginClassStaticInitializer\0\u{1}endClassStaticInitializer\0\u{1}beginClassStaticMethod\0\u{1}endClassStaticMethod\0\u{1}beginClassStaticComputedMethod\0\u{1}endClassStaticComputedMethod\0\u{1}beginClassStaticGetter\0\u{1}endClassStaticGetter\0\u{1}beginClassStaticSetter\0\u{1}endClassStaticSetter\0\u{1}classAddPrivateInstanceProperty\0\u{1}beginClassPrivateInstanceMethod\0\u{1}endClassPrivateInstanceMethod\0\u{1}classAddPrivateStaticProperty\0\u{1}beginClassPrivateStaticMethod\0\u{1}endClassPrivateStaticMethod\0\u{1}endClassDefinition\0\u{1}createArray\0\u{1}createIntArray\0\u{1}createFloatArray\0\u{1}createArrayWithSpread\0\u{1}createTemplateString\0\u{1}getProperty\0\u{1}setProperty\0\u{1}updateProperty\0\u{1}deleteProperty\0\u{1}configureProperty\0\u{1}getElement\0\u{1}setElement\0\u{1}updateElement\0\u{1}deleteElement\0\u{1}configureElement\0\u{1}getComputedProperty\0\u{1}setComputedProperty\0\u{1}updateComputedProperty\0\u{1}deleteComputedProperty\0\u{1}configureComputedProperty\0\u{1}typeOf\0\u{1}void\0\u{1}testInstanceOf\0\u{1}testIn\0\u{1}beginPlainFunction\0\u{1}endPlainFunction\0\u{1}beginArrowFunction\0\u{1}endArrowFunction\0\u{1}beginGeneratorFunction\0\u{1}endGeneratorFunction\0\u{1}beginAsyncFunction\0\u{1}endAsyncFunction\0\u{1}beginAsyncArrowFunction\0\u{1}endAsyncArrowFunction\0\u{1}beginAsyncGeneratorFunction\0\u{1}endAsyncGeneratorFunction\0\u{1}beginConstructor\0\u{1}endConstructor\0\u{1}directive\0\u{1}return\0\u{1}yield\0\u{1}yieldEach\0\u{1}await\0\u{1}callFunction\0\u{1}callFunctionWithSpread\0\u{1}construct\0\u{1}constructWithSpread\0\u{1}callMethod\0\u{1}callMethodWithSpread\0\u{1}callComputedMethod\0\u{1}callComputedMethodWithSpread\0\u{1}unaryOperation\0\u{1}binaryOperation\0\u{1}ternaryOperation\0\u{1}update\0\u{1}dup\0\u{1}reassign\0\u{1}destructArray\0\u{1}destructArrayAndReassign\0\u{1}destructObject\0\u{1}destructObjectAndReassign\0\u{1}compare\0\u{1}eval\0\u{1}beginWith\0\u{1}endWith\0\u{1}callSuperConstructor\0\u{1}callSuperMethod\0\u{1}getPrivateProperty\0\u{1}setPrivateProperty\0\u{1}updatePrivateProperty\0\u{1}callPrivateMethod\0\u{1}getSuperProperty\0\u{1}setSuperProperty\0\u{1}getComputedSuperProperty\0\u{1}setComputedSuperProperty\0\u{1}updateSuperProperty\0\u{1}beginIf\0\u{1}beginElse\0\u{1}endIf\0\u{1}beginWhileLoopHeader\0\u{1}beginWhileLoopBody\0\u{1}endWhileLoop\0\u{1}beginDoWhileLoopBody\0\u{1}beginDoWhileLoopHeader\0\u{1}endDoWhileLoop\0\u{1}beginForLoopInitializer\0\u{1}beginForLoopCondition\0\u{1}beginForLoopAfterthought\0\u{1}beginForLoopBody\0\u{1}endForLoop\0\u{1}beginForInLoop\0\u{1}endForInLoop\0\u{1}beginForOfLoop\0\u{1}beginForOfLoopWithDestruct\0\u{1}endForOfLoop\0\u{1}beginRepeatLoop\0\u{1}endRepeatLoop\0\u{1}loopBreak\0\u{1}loopContinue\0\u{1}beginTry\0\u{1}beginCatch\0\u{1}beginFinally\0\u{1}endTryCatchFinally\0\u{1}throwException\0\u{1}beginCodeString\0\u{1}endCodeString\0\u{1}beginBlockStatement\0\u{1}endBlockStatement\0\u{1}beginSwitch\0\u{1}beginSwitchCase\0\u{1}beginSwitchDefaultCase\0\u{1}endSwitchCase\0\u{1}endSwitch\0\u{1}switchBreak\0\u{1}loadNewTarget\0\u{1}print\0\u{1}explore\0\u{1}probe\0\u{1}fixup\0\u{1}beginWasmModule\0\u{1}endWasmModule\0\u{1}createWasmGlobal\0\u{1}createWasmMemory\0\u{1}createWasmTable\0\u{1}createWasmJSTag\0\u{1}createWasmTag\0\u{1}wrapPromising\0\u{1}wrapSuspending\0\u{1}bindMethod\0\u{1}bindFunction\0\u{1}consti64\0\u{1}consti32\0\u{1}constf32\0\u{1}constf64\0\u{1}wasmReturn\0\u{1}wasmJsCall\0\u{1}wasmi32CompareOp\0\u{1}wasmi64CompareOp\0\u{1}wasmf32CompareOp\0\u{1}wasmf64CompareOp\0\u{1}wasmi32EqualZero\0\u{1}wasmi64EqualZero\0\u{1}wasmi32BinOp\0\u{1}wasmi64BinOp\0\u{1}wasmi32UnOp\0\u{1}wasmi64UnOp\0\u{1}wasmf32BinOp\0\u{1}wasmf64BinOp\0\u{1}wasmf32UnOp\0\u{1}wasmf64UnOp\0\u{1}wasmWrapi64Toi32\0\u{1}wasmTruncatef32Toi32\0\u{1}wasmTruncatef64Toi32\0\u{1}wasmExtendi32Toi64\0\u{1}wasmTruncatef32Toi64\0\u{1}wasmTruncatef64Toi64\0\u{1}wasmConverti32Tof32\0\u{1}wasmConverti64Tof32\0\u{1}wasmDemotef64Tof32\0\u{1}wasmConverti32Tof64\0\u{1}wasmConverti64Tof64\0\u{1}wasmPromotef32Tof64\0\u{1}wasmReinterpretf32Asi32\0\u{1}wasmReinterpretf64Asi64\0\u{1}wasmReinterpreti32Asf32\0\u{1}wasmReinterpreti64Asf64\0\u{1}wasmSignExtend8Intoi32\0\u{1}wasmSignExtend16Intoi32\0\u{1}wasmSignExtend8Intoi64\0\u{1}wasmSignExtend16Intoi64\0\u{1}wasmSignExtend32Intoi64\0\u{1}wasmTruncateSatf32Toi32\0\u{1}wasmTruncateSatf64Toi32\0\u{1}wasmTruncateSatf32Toi64\0\u{1}wasmTruncateSatf64Toi64\0\u{1}wasmReassign\0\u{1}wasmDefineGlobal\0\u{1}wasmDefineTable\0\u{1}wasmDefineMemory\0\u{1}wasmDefineDataSegment\0\u{1}wasmLoadGlobal\0\u{1}wasmStoreGlobal\0\u{1}wasmTableGet\0\u{1}wasmTableSet\0\u{1}wasmTableSize\0\u{1}wasmTableGrow\0\u{1}wasmCallIndirect\0\u{1}wasmCallDirect\0\u{1}wasmReturnCallDirect\0\u{1}wasmReturnCallIndirect\0\u{1}wasmMemoryLoad\0\u{1}wasmMemoryStore\0\u{1}wasmAtomicLoad\0\u{1}wasmAtomicStore\0\u{1}wasmAtomicRMW\0\u{1}wasmAtomicCmpxchg\0\u{1}wasmMemorySize\0\u{1}wasmMemoryGrow\0\u{1}wasmMemoryFill\0\u{1}wasmMemoryInit\0\u{1}wasmDropDataSegment\0\u{1}beginWasmFunction\0\u{1}endWasmFunction\0\u{1}wasmBeginBlock\0\u{1}wasmEndBlock\0\u{1}wasmBeginLoop\0\u{1}wasmEndLoop\0\u{1}wasmBranch\0\u{1}wasmBranchIf\0\u{1}wasmBranchTable\0\u{1}wasmNop\0\u{1}wasmBeginIf\0\u{1}wasmBeginElse\0\u{1}wasmEndIf\0\u{1}wasmBeginTryTable\0\u{1}wasmEndTryTable\0\u{1}wasmBeginTry\0\u{1}wasmBeginCatchAll\0\u{1}wasmBeginCatch\0\u{1}wasmEndTry\0\u{1}wasmBeginTryDelegate\0\u{1}wasmEndTryDelegate\0\u{1}wasmThrow\0\u{1}wasmRethrow\0\u{1}wasmThrowRef\0\u{1}wasmDefineTag\0\u{1}constSimd128\0\u{1}wasmSimd128Compare\0\u{1}wasmSimd128IntegerUnOp\0\u{1}wasmSimd128IntegerBinOp\0\u{1}wasmSimd128IntegerTernaryOp\0\u{1}wasmSimd128FloatUnOp\0\u{1}wasmSimd128FloatBinOp\0\u{1}wasmSimd128FloatTernaryOp\0\u{1}wasmSimdSplat\0\u{1}wasmSimdExtractLane\0\u{1}wasmSimdReplaceLane\0\u{1}wasmSimdStoreLane\0\u{1}wasmSimdLoadLane\0\u{1}wasmSimdLoad\0\u{1}wasmUnreachable\0\u{1}wasmSelect\0\u{1}wasmBeginTypeGroup\0\u{1}wasmEndTypeGroup\0\u{1}wasmDefineArrayType\0\u{1}wasmDefineStructType\0\u{1}wasmDefineForwardOrSelfReference\0\u{1}wasmResolveForwardReference\0\u{1}wasmArrayNewFixed\0\u{1}wasmArrayNewDefault\0\u{1}wasmArrayLen\0\u{1}wasmArrayGet\0\u{1}wasmArraySet\0\u{1}wasmStructNewDefault\0\u{1}wasmStructGet\0\u{1}wasmStructSet\0\u{1}wasmRefNull\0\u{1}wasmRefIsNull\0\u{1}wasmRefI31\0\u{1}wasmI31Get\0\u{1}wasmAnyConvertExtern\0\u{1}wasmExternConvertAny\0\u{1}wasmMemoryCopy\0\u{1}wasmDefineElementSegment\0\u{1}wasmTableInit\0\u{1}wasmDropElementSegment\0\u{1}wasmTableCopy\0\u{1}wasmDefineSignatureType\0\u{1}createNamedDisposableVariable\0\u{1}createNamedAsyncDisposableVariable\0") public mutating func decodeMessage(decoder: inout D) throws { while let fieldNumber = try decoder.nextFieldNumber() { @@ -3605,6 +3605,32 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M } }() case 40: try { + var v: Fuzzilli_Protobuf_BeginClassInstanceComputedMethod? + var hadOneofValue = false + if let current = self.operation { + hadOneofValue = true + if case .beginClassInstanceComputedMethod(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v { + if hadOneofValue {try decoder.handleConflictingOneOf()} + self.operation = .beginClassInstanceComputedMethod(v) + } + }() + case 41: try { + var v: Fuzzilli_Protobuf_EndClassInstanceComputedMethod? + var hadOneofValue = false + if let current = self.operation { + hadOneofValue = true + if case .endClassInstanceComputedMethod(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v { + if hadOneofValue {try decoder.handleConflictingOneOf()} + self.operation = .endClassInstanceComputedMethod(v) + } + }() + case 42: try { var v: Fuzzilli_Protobuf_BeginClassInstanceGetter? var hadOneofValue = false if let current = self.operation { @@ -3617,7 +3643,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassInstanceGetter(v) } }() - case 41: try { + case 43: try { var v: Fuzzilli_Protobuf_EndClassInstanceGetter? var hadOneofValue = false if let current = self.operation { @@ -3630,7 +3656,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassInstanceGetter(v) } }() - case 42: try { + case 44: try { var v: Fuzzilli_Protobuf_BeginClassInstanceSetter? var hadOneofValue = false if let current = self.operation { @@ -3643,7 +3669,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassInstanceSetter(v) } }() - case 43: try { + case 45: try { var v: Fuzzilli_Protobuf_EndClassInstanceSetter? var hadOneofValue = false if let current = self.operation { @@ -3656,7 +3682,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassInstanceSetter(v) } }() - case 44: try { + case 46: try { var v: Fuzzilli_Protobuf_ClassAddStaticProperty? var hadOneofValue = false if let current = self.operation { @@ -3669,7 +3695,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .classAddStaticProperty(v) } }() - case 45: try { + case 47: try { var v: Fuzzilli_Protobuf_ClassAddStaticElement? var hadOneofValue = false if let current = self.operation { @@ -3682,7 +3708,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .classAddStaticElement(v) } }() - case 46: try { + case 48: try { var v: Fuzzilli_Protobuf_ClassAddStaticComputedProperty? var hadOneofValue = false if let current = self.operation { @@ -3695,7 +3721,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .classAddStaticComputedProperty(v) } }() - case 47: try { + case 49: try { var v: Fuzzilli_Protobuf_BeginClassStaticInitializer? var hadOneofValue = false if let current = self.operation { @@ -3708,7 +3734,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassStaticInitializer(v) } }() - case 48: try { + case 50: try { var v: Fuzzilli_Protobuf_EndClassStaticInitializer? var hadOneofValue = false if let current = self.operation { @@ -3721,7 +3747,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassStaticInitializer(v) } }() - case 49: try { + case 51: try { var v: Fuzzilli_Protobuf_BeginClassStaticMethod? var hadOneofValue = false if let current = self.operation { @@ -3734,7 +3760,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassStaticMethod(v) } }() - case 50: try { + case 52: try { var v: Fuzzilli_Protobuf_EndClassStaticMethod? var hadOneofValue = false if let current = self.operation { @@ -3747,7 +3773,33 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassStaticMethod(v) } }() - case 51: try { + case 53: try { + var v: Fuzzilli_Protobuf_BeginClassStaticComputedMethod? + var hadOneofValue = false + if let current = self.operation { + hadOneofValue = true + if case .beginClassStaticComputedMethod(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v { + if hadOneofValue {try decoder.handleConflictingOneOf()} + self.operation = .beginClassStaticComputedMethod(v) + } + }() + case 54: try { + var v: Fuzzilli_Protobuf_EndClassStaticComputedMethod? + var hadOneofValue = false + if let current = self.operation { + hadOneofValue = true + if case .endClassStaticComputedMethod(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v { + if hadOneofValue {try decoder.handleConflictingOneOf()} + self.operation = .endClassStaticComputedMethod(v) + } + }() + case 55: try { var v: Fuzzilli_Protobuf_BeginClassStaticGetter? var hadOneofValue = false if let current = self.operation { @@ -3760,7 +3812,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassStaticGetter(v) } }() - case 52: try { + case 56: try { var v: Fuzzilli_Protobuf_EndClassStaticGetter? var hadOneofValue = false if let current = self.operation { @@ -3773,7 +3825,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassStaticGetter(v) } }() - case 53: try { + case 57: try { var v: Fuzzilli_Protobuf_BeginClassStaticSetter? var hadOneofValue = false if let current = self.operation { @@ -3786,7 +3838,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassStaticSetter(v) } }() - case 54: try { + case 58: try { var v: Fuzzilli_Protobuf_EndClassStaticSetter? var hadOneofValue = false if let current = self.operation { @@ -3799,7 +3851,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassStaticSetter(v) } }() - case 55: try { + case 59: try { var v: Fuzzilli_Protobuf_ClassAddPrivateInstanceProperty? var hadOneofValue = false if let current = self.operation { @@ -3812,7 +3864,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .classAddPrivateInstanceProperty(v) } }() - case 56: try { + case 60: try { var v: Fuzzilli_Protobuf_BeginClassPrivateInstanceMethod? var hadOneofValue = false if let current = self.operation { @@ -3825,7 +3877,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassPrivateInstanceMethod(v) } }() - case 57: try { + case 61: try { var v: Fuzzilli_Protobuf_EndClassPrivateInstanceMethod? var hadOneofValue = false if let current = self.operation { @@ -3838,7 +3890,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassPrivateInstanceMethod(v) } }() - case 58: try { + case 62: try { var v: Fuzzilli_Protobuf_ClassAddPrivateStaticProperty? var hadOneofValue = false if let current = self.operation { @@ -3851,7 +3903,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .classAddPrivateStaticProperty(v) } }() - case 59: try { + case 63: try { var v: Fuzzilli_Protobuf_BeginClassPrivateStaticMethod? var hadOneofValue = false if let current = self.operation { @@ -3864,7 +3916,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginClassPrivateStaticMethod(v) } }() - case 60: try { + case 64: try { var v: Fuzzilli_Protobuf_EndClassPrivateStaticMethod? var hadOneofValue = false if let current = self.operation { @@ -3877,7 +3929,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassPrivateStaticMethod(v) } }() - case 61: try { + case 65: try { var v: Fuzzilli_Protobuf_EndClassDefinition? var hadOneofValue = false if let current = self.operation { @@ -3890,7 +3942,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endClassDefinition(v) } }() - case 62: try { + case 66: try { var v: Fuzzilli_Protobuf_CreateArray? var hadOneofValue = false if let current = self.operation { @@ -3903,7 +3955,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createArray(v) } }() - case 63: try { + case 67: try { var v: Fuzzilli_Protobuf_CreateIntArray? var hadOneofValue = false if let current = self.operation { @@ -3916,7 +3968,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createIntArray(v) } }() - case 64: try { + case 68: try { var v: Fuzzilli_Protobuf_CreateFloatArray? var hadOneofValue = false if let current = self.operation { @@ -3929,7 +3981,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createFloatArray(v) } }() - case 65: try { + case 69: try { var v: Fuzzilli_Protobuf_CreateArrayWithSpread? var hadOneofValue = false if let current = self.operation { @@ -3942,7 +3994,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createArrayWithSpread(v) } }() - case 66: try { + case 70: try { var v: Fuzzilli_Protobuf_CreateTemplateString? var hadOneofValue = false if let current = self.operation { @@ -3955,7 +4007,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createTemplateString(v) } }() - case 67: try { + case 71: try { var v: Fuzzilli_Protobuf_GetProperty? var hadOneofValue = false if let current = self.operation { @@ -3968,7 +4020,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .getProperty(v) } }() - case 68: try { + case 72: try { var v: Fuzzilli_Protobuf_SetProperty? var hadOneofValue = false if let current = self.operation { @@ -3981,7 +4033,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .setProperty(v) } }() - case 69: try { + case 73: try { var v: Fuzzilli_Protobuf_UpdateProperty? var hadOneofValue = false if let current = self.operation { @@ -3994,7 +4046,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .updateProperty(v) } }() - case 70: try { + case 74: try { var v: Fuzzilli_Protobuf_DeleteProperty? var hadOneofValue = false if let current = self.operation { @@ -4007,7 +4059,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .deleteProperty(v) } }() - case 71: try { + case 75: try { var v: Fuzzilli_Protobuf_ConfigureProperty? var hadOneofValue = false if let current = self.operation { @@ -4020,7 +4072,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .configureProperty(v) } }() - case 72: try { + case 76: try { var v: Fuzzilli_Protobuf_GetElement? var hadOneofValue = false if let current = self.operation { @@ -4033,7 +4085,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .getElement(v) } }() - case 73: try { + case 77: try { var v: Fuzzilli_Protobuf_SetElement? var hadOneofValue = false if let current = self.operation { @@ -4046,7 +4098,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .setElement(v) } }() - case 74: try { + case 78: try { var v: Fuzzilli_Protobuf_UpdateElement? var hadOneofValue = false if let current = self.operation { @@ -4059,7 +4111,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .updateElement(v) } }() - case 75: try { + case 79: try { var v: Fuzzilli_Protobuf_DeleteElement? var hadOneofValue = false if let current = self.operation { @@ -4072,7 +4124,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .deleteElement(v) } }() - case 76: try { + case 80: try { var v: Fuzzilli_Protobuf_ConfigureElement? var hadOneofValue = false if let current = self.operation { @@ -4085,7 +4137,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .configureElement(v) } }() - case 77: try { + case 81: try { var v: Fuzzilli_Protobuf_GetComputedProperty? var hadOneofValue = false if let current = self.operation { @@ -4098,7 +4150,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .getComputedProperty(v) } }() - case 78: try { + case 82: try { var v: Fuzzilli_Protobuf_SetComputedProperty? var hadOneofValue = false if let current = self.operation { @@ -4111,7 +4163,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .setComputedProperty(v) } }() - case 79: try { + case 83: try { var v: Fuzzilli_Protobuf_UpdateComputedProperty? var hadOneofValue = false if let current = self.operation { @@ -4124,7 +4176,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .updateComputedProperty(v) } }() - case 80: try { + case 84: try { var v: Fuzzilli_Protobuf_DeleteComputedProperty? var hadOneofValue = false if let current = self.operation { @@ -4137,7 +4189,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .deleteComputedProperty(v) } }() - case 81: try { + case 85: try { var v: Fuzzilli_Protobuf_ConfigureComputedProperty? var hadOneofValue = false if let current = self.operation { @@ -4150,7 +4202,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .configureComputedProperty(v) } }() - case 82: try { + case 86: try { var v: Fuzzilli_Protobuf_TypeOf? var hadOneofValue = false if let current = self.operation { @@ -4163,7 +4215,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .typeOf(v) } }() - case 83: try { + case 87: try { var v: Fuzzilli_Protobuf_Void? var hadOneofValue = false if let current = self.operation { @@ -4176,7 +4228,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .void(v) } }() - case 84: try { + case 88: try { var v: Fuzzilli_Protobuf_TestInstanceOf? var hadOneofValue = false if let current = self.operation { @@ -4189,7 +4241,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .testInstanceOf(v) } }() - case 85: try { + case 89: try { var v: Fuzzilli_Protobuf_TestIn? var hadOneofValue = false if let current = self.operation { @@ -4202,7 +4254,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .testIn(v) } }() - case 86: try { + case 90: try { var v: Fuzzilli_Protobuf_BeginPlainFunction? var hadOneofValue = false if let current = self.operation { @@ -4215,7 +4267,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginPlainFunction(v) } }() - case 87: try { + case 91: try { var v: Fuzzilli_Protobuf_EndPlainFunction? var hadOneofValue = false if let current = self.operation { @@ -4228,7 +4280,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endPlainFunction(v) } }() - case 88: try { + case 92: try { var v: Fuzzilli_Protobuf_BeginArrowFunction? var hadOneofValue = false if let current = self.operation { @@ -4241,7 +4293,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginArrowFunction(v) } }() - case 89: try { + case 93: try { var v: Fuzzilli_Protobuf_EndArrowFunction? var hadOneofValue = false if let current = self.operation { @@ -4254,7 +4306,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endArrowFunction(v) } }() - case 90: try { + case 94: try { var v: Fuzzilli_Protobuf_BeginGeneratorFunction? var hadOneofValue = false if let current = self.operation { @@ -4267,7 +4319,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginGeneratorFunction(v) } }() - case 91: try { + case 95: try { var v: Fuzzilli_Protobuf_EndGeneratorFunction? var hadOneofValue = false if let current = self.operation { @@ -4280,7 +4332,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endGeneratorFunction(v) } }() - case 92: try { + case 96: try { var v: Fuzzilli_Protobuf_BeginAsyncFunction? var hadOneofValue = false if let current = self.operation { @@ -4293,7 +4345,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginAsyncFunction(v) } }() - case 93: try { + case 97: try { var v: Fuzzilli_Protobuf_EndAsyncFunction? var hadOneofValue = false if let current = self.operation { @@ -4306,7 +4358,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endAsyncFunction(v) } }() - case 94: try { + case 98: try { var v: Fuzzilli_Protobuf_BeginAsyncArrowFunction? var hadOneofValue = false if let current = self.operation { @@ -4319,7 +4371,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginAsyncArrowFunction(v) } }() - case 95: try { + case 99: try { var v: Fuzzilli_Protobuf_EndAsyncArrowFunction? var hadOneofValue = false if let current = self.operation { @@ -4332,7 +4384,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endAsyncArrowFunction(v) } }() - case 96: try { + case 100: try { var v: Fuzzilli_Protobuf_BeginAsyncGeneratorFunction? var hadOneofValue = false if let current = self.operation { @@ -4345,7 +4397,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginAsyncGeneratorFunction(v) } }() - case 97: try { + case 101: try { var v: Fuzzilli_Protobuf_EndAsyncGeneratorFunction? var hadOneofValue = false if let current = self.operation { @@ -4358,7 +4410,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endAsyncGeneratorFunction(v) } }() - case 98: try { + case 102: try { var v: Fuzzilli_Protobuf_BeginConstructor? var hadOneofValue = false if let current = self.operation { @@ -4371,7 +4423,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginConstructor(v) } }() - case 99: try { + case 103: try { var v: Fuzzilli_Protobuf_EndConstructor? var hadOneofValue = false if let current = self.operation { @@ -4384,7 +4436,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endConstructor(v) } }() - case 100: try { + case 104: try { var v: Fuzzilli_Protobuf_Directive? var hadOneofValue = false if let current = self.operation { @@ -4397,7 +4449,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .directive(v) } }() - case 101: try { + case 105: try { var v: Fuzzilli_Protobuf_Return? var hadOneofValue = false if let current = self.operation { @@ -4410,7 +4462,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .return(v) } }() - case 102: try { + case 106: try { var v: Fuzzilli_Protobuf_Yield? var hadOneofValue = false if let current = self.operation { @@ -4423,7 +4475,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .yield(v) } }() - case 103: try { + case 107: try { var v: Fuzzilli_Protobuf_YieldEach? var hadOneofValue = false if let current = self.operation { @@ -4436,7 +4488,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .yieldEach(v) } }() - case 104: try { + case 108: try { var v: Fuzzilli_Protobuf_Await? var hadOneofValue = false if let current = self.operation { @@ -4449,7 +4501,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .await(v) } }() - case 105: try { + case 109: try { var v: Fuzzilli_Protobuf_CallFunction? var hadOneofValue = false if let current = self.operation { @@ -4462,7 +4514,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callFunction(v) } }() - case 106: try { + case 110: try { var v: Fuzzilli_Protobuf_CallFunctionWithSpread? var hadOneofValue = false if let current = self.operation { @@ -4475,7 +4527,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callFunctionWithSpread(v) } }() - case 107: try { + case 111: try { var v: Fuzzilli_Protobuf_Construct? var hadOneofValue = false if let current = self.operation { @@ -4488,7 +4540,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .construct(v) } }() - case 108: try { + case 112: try { var v: Fuzzilli_Protobuf_ConstructWithSpread? var hadOneofValue = false if let current = self.operation { @@ -4501,7 +4553,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .constructWithSpread(v) } }() - case 109: try { + case 113: try { var v: Fuzzilli_Protobuf_CallMethod? var hadOneofValue = false if let current = self.operation { @@ -4514,7 +4566,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callMethod(v) } }() - case 110: try { + case 114: try { var v: Fuzzilli_Protobuf_CallMethodWithSpread? var hadOneofValue = false if let current = self.operation { @@ -4527,7 +4579,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callMethodWithSpread(v) } }() - case 111: try { + case 115: try { var v: Fuzzilli_Protobuf_CallComputedMethod? var hadOneofValue = false if let current = self.operation { @@ -4540,7 +4592,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callComputedMethod(v) } }() - case 112: try { + case 116: try { var v: Fuzzilli_Protobuf_CallComputedMethodWithSpread? var hadOneofValue = false if let current = self.operation { @@ -4553,7 +4605,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callComputedMethodWithSpread(v) } }() - case 113: try { + case 117: try { var v: Fuzzilli_Protobuf_UnaryOperation? var hadOneofValue = false if let current = self.operation { @@ -4566,7 +4618,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .unaryOperation(v) } }() - case 114: try { + case 118: try { var v: Fuzzilli_Protobuf_BinaryOperation? var hadOneofValue = false if let current = self.operation { @@ -4579,7 +4631,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .binaryOperation(v) } }() - case 115: try { + case 119: try { var v: Fuzzilli_Protobuf_TernaryOperation? var hadOneofValue = false if let current = self.operation { @@ -4592,7 +4644,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .ternaryOperation(v) } }() - case 116: try { + case 120: try { var v: Fuzzilli_Protobuf_Update? var hadOneofValue = false if let current = self.operation { @@ -4605,7 +4657,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .update(v) } }() - case 117: try { + case 121: try { var v: Fuzzilli_Protobuf_Dup? var hadOneofValue = false if let current = self.operation { @@ -4618,7 +4670,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .dup(v) } }() - case 118: try { + case 122: try { var v: Fuzzilli_Protobuf_Reassign? var hadOneofValue = false if let current = self.operation { @@ -4631,7 +4683,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .reassign(v) } }() - case 119: try { + case 123: try { var v: Fuzzilli_Protobuf_DestructArray? var hadOneofValue = false if let current = self.operation { @@ -4644,7 +4696,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .destructArray(v) } }() - case 120: try { + case 124: try { var v: Fuzzilli_Protobuf_DestructArrayAndReassign? var hadOneofValue = false if let current = self.operation { @@ -4657,7 +4709,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .destructArrayAndReassign(v) } }() - case 121: try { + case 125: try { var v: Fuzzilli_Protobuf_DestructObject? var hadOneofValue = false if let current = self.operation { @@ -4670,7 +4722,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .destructObject(v) } }() - case 122: try { + case 126: try { var v: Fuzzilli_Protobuf_DestructObjectAndReassign? var hadOneofValue = false if let current = self.operation { @@ -4683,7 +4735,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .destructObjectAndReassign(v) } }() - case 123: try { + case 127: try { var v: Fuzzilli_Protobuf_Compare? var hadOneofValue = false if let current = self.operation { @@ -4696,7 +4748,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .compare(v) } }() - case 124: try { + case 128: try { var v: Fuzzilli_Protobuf_Eval? var hadOneofValue = false if let current = self.operation { @@ -4709,7 +4761,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .eval(v) } }() - case 125: try { + case 129: try { var v: Fuzzilli_Protobuf_BeginWith? var hadOneofValue = false if let current = self.operation { @@ -4722,7 +4774,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginWith(v) } }() - case 126: try { + case 130: try { var v: Fuzzilli_Protobuf_EndWith? var hadOneofValue = false if let current = self.operation { @@ -4735,7 +4787,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endWith(v) } }() - case 127: try { + case 131: try { var v: Fuzzilli_Protobuf_CallSuperConstructor? var hadOneofValue = false if let current = self.operation { @@ -4748,7 +4800,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callSuperConstructor(v) } }() - case 128: try { + case 132: try { var v: Fuzzilli_Protobuf_CallSuperMethod? var hadOneofValue = false if let current = self.operation { @@ -4761,7 +4813,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callSuperMethod(v) } }() - case 129: try { + case 133: try { var v: Fuzzilli_Protobuf_GetPrivateProperty? var hadOneofValue = false if let current = self.operation { @@ -4774,7 +4826,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .getPrivateProperty(v) } }() - case 130: try { + case 134: try { var v: Fuzzilli_Protobuf_SetPrivateProperty? var hadOneofValue = false if let current = self.operation { @@ -4787,7 +4839,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .setPrivateProperty(v) } }() - case 131: try { + case 135: try { var v: Fuzzilli_Protobuf_UpdatePrivateProperty? var hadOneofValue = false if let current = self.operation { @@ -4800,7 +4852,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .updatePrivateProperty(v) } }() - case 132: try { + case 136: try { var v: Fuzzilli_Protobuf_CallPrivateMethod? var hadOneofValue = false if let current = self.operation { @@ -4813,7 +4865,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .callPrivateMethod(v) } }() - case 133: try { + case 137: try { var v: Fuzzilli_Protobuf_GetSuperProperty? var hadOneofValue = false if let current = self.operation { @@ -4826,7 +4878,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .getSuperProperty(v) } }() - case 134: try { + case 138: try { var v: Fuzzilli_Protobuf_SetSuperProperty? var hadOneofValue = false if let current = self.operation { @@ -4839,7 +4891,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .setSuperProperty(v) } }() - case 135: try { + case 139: try { var v: Fuzzilli_Protobuf_GetComputedSuperProperty? var hadOneofValue = false if let current = self.operation { @@ -4852,7 +4904,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .getComputedSuperProperty(v) } }() - case 136: try { + case 140: try { var v: Fuzzilli_Protobuf_SetComputedSuperProperty? var hadOneofValue = false if let current = self.operation { @@ -4865,7 +4917,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .setComputedSuperProperty(v) } }() - case 137: try { + case 141: try { var v: Fuzzilli_Protobuf_UpdateSuperProperty? var hadOneofValue = false if let current = self.operation { @@ -4878,7 +4930,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .updateSuperProperty(v) } }() - case 138: try { + case 142: try { var v: Fuzzilli_Protobuf_BeginIf? var hadOneofValue = false if let current = self.operation { @@ -4891,7 +4943,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginIf(v) } }() - case 139: try { + case 143: try { var v: Fuzzilli_Protobuf_BeginElse? var hadOneofValue = false if let current = self.operation { @@ -4904,7 +4956,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginElse(v) } }() - case 140: try { + case 144: try { var v: Fuzzilli_Protobuf_EndIf? var hadOneofValue = false if let current = self.operation { @@ -4917,7 +4969,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endIf(v) } }() - case 141: try { + case 145: try { var v: Fuzzilli_Protobuf_BeginWhileLoopHeader? var hadOneofValue = false if let current = self.operation { @@ -4930,7 +4982,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginWhileLoopHeader(v) } }() - case 142: try { + case 146: try { var v: Fuzzilli_Protobuf_BeginWhileLoopBody? var hadOneofValue = false if let current = self.operation { @@ -4943,7 +4995,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginWhileLoopBody(v) } }() - case 143: try { + case 147: try { var v: Fuzzilli_Protobuf_EndWhileLoop? var hadOneofValue = false if let current = self.operation { @@ -4956,7 +5008,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endWhileLoop(v) } }() - case 144: try { + case 148: try { var v: Fuzzilli_Protobuf_BeginDoWhileLoopBody? var hadOneofValue = false if let current = self.operation { @@ -4969,7 +5021,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginDoWhileLoopBody(v) } }() - case 145: try { + case 149: try { var v: Fuzzilli_Protobuf_BeginDoWhileLoopHeader? var hadOneofValue = false if let current = self.operation { @@ -4982,7 +5034,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginDoWhileLoopHeader(v) } }() - case 146: try { + case 150: try { var v: Fuzzilli_Protobuf_EndDoWhileLoop? var hadOneofValue = false if let current = self.operation { @@ -4995,7 +5047,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endDoWhileLoop(v) } }() - case 147: try { + case 151: try { var v: Fuzzilli_Protobuf_BeginForLoopInitializer? var hadOneofValue = false if let current = self.operation { @@ -5008,7 +5060,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForLoopInitializer(v) } }() - case 148: try { + case 152: try { var v: Fuzzilli_Protobuf_BeginForLoopCondition? var hadOneofValue = false if let current = self.operation { @@ -5021,7 +5073,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForLoopCondition(v) } }() - case 149: try { + case 153: try { var v: Fuzzilli_Protobuf_BeginForLoopAfterthought? var hadOneofValue = false if let current = self.operation { @@ -5034,7 +5086,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForLoopAfterthought(v) } }() - case 150: try { + case 154: try { var v: Fuzzilli_Protobuf_BeginForLoopBody? var hadOneofValue = false if let current = self.operation { @@ -5047,7 +5099,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForLoopBody(v) } }() - case 151: try { + case 155: try { var v: Fuzzilli_Protobuf_EndForLoop? var hadOneofValue = false if let current = self.operation { @@ -5060,7 +5112,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endForLoop(v) } }() - case 152: try { + case 156: try { var v: Fuzzilli_Protobuf_BeginForInLoop? var hadOneofValue = false if let current = self.operation { @@ -5073,7 +5125,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForInLoop(v) } }() - case 153: try { + case 157: try { var v: Fuzzilli_Protobuf_EndForInLoop? var hadOneofValue = false if let current = self.operation { @@ -5086,7 +5138,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endForInLoop(v) } }() - case 154: try { + case 158: try { var v: Fuzzilli_Protobuf_BeginForOfLoop? var hadOneofValue = false if let current = self.operation { @@ -5099,7 +5151,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForOfLoop(v) } }() - case 155: try { + case 159: try { var v: Fuzzilli_Protobuf_BeginForOfLoopWithDestruct? var hadOneofValue = false if let current = self.operation { @@ -5112,7 +5164,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginForOfLoopWithDestruct(v) } }() - case 156: try { + case 160: try { var v: Fuzzilli_Protobuf_EndForOfLoop? var hadOneofValue = false if let current = self.operation { @@ -5125,7 +5177,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endForOfLoop(v) } }() - case 157: try { + case 161: try { var v: Fuzzilli_Protobuf_BeginRepeatLoop? var hadOneofValue = false if let current = self.operation { @@ -5138,7 +5190,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginRepeatLoop(v) } }() - case 158: try { + case 162: try { var v: Fuzzilli_Protobuf_EndRepeatLoop? var hadOneofValue = false if let current = self.operation { @@ -5151,7 +5203,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endRepeatLoop(v) } }() - case 159: try { + case 163: try { var v: Fuzzilli_Protobuf_LoopBreak? var hadOneofValue = false if let current = self.operation { @@ -5164,7 +5216,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .loopBreak(v) } }() - case 160: try { + case 164: try { var v: Fuzzilli_Protobuf_LoopContinue? var hadOneofValue = false if let current = self.operation { @@ -5177,7 +5229,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .loopContinue(v) } }() - case 161: try { + case 165: try { var v: Fuzzilli_Protobuf_BeginTry? var hadOneofValue = false if let current = self.operation { @@ -5190,7 +5242,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginTry(v) } }() - case 162: try { + case 166: try { var v: Fuzzilli_Protobuf_BeginCatch? var hadOneofValue = false if let current = self.operation { @@ -5203,7 +5255,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginCatch(v) } }() - case 163: try { + case 167: try { var v: Fuzzilli_Protobuf_BeginFinally? var hadOneofValue = false if let current = self.operation { @@ -5216,7 +5268,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginFinally(v) } }() - case 164: try { + case 168: try { var v: Fuzzilli_Protobuf_EndTryCatchFinally? var hadOneofValue = false if let current = self.operation { @@ -5229,7 +5281,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endTryCatchFinally(v) } }() - case 165: try { + case 169: try { var v: Fuzzilli_Protobuf_ThrowException? var hadOneofValue = false if let current = self.operation { @@ -5242,7 +5294,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .throwException(v) } }() - case 166: try { + case 170: try { var v: Fuzzilli_Protobuf_BeginCodeString? var hadOneofValue = false if let current = self.operation { @@ -5255,7 +5307,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginCodeString(v) } }() - case 167: try { + case 171: try { var v: Fuzzilli_Protobuf_EndCodeString? var hadOneofValue = false if let current = self.operation { @@ -5268,7 +5320,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endCodeString(v) } }() - case 168: try { + case 172: try { var v: Fuzzilli_Protobuf_BeginBlockStatement? var hadOneofValue = false if let current = self.operation { @@ -5281,7 +5333,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginBlockStatement(v) } }() - case 169: try { + case 173: try { var v: Fuzzilli_Protobuf_EndBlockStatement? var hadOneofValue = false if let current = self.operation { @@ -5294,7 +5346,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endBlockStatement(v) } }() - case 170: try { + case 174: try { var v: Fuzzilli_Protobuf_BeginSwitch? var hadOneofValue = false if let current = self.operation { @@ -5307,7 +5359,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginSwitch(v) } }() - case 171: try { + case 175: try { var v: Fuzzilli_Protobuf_BeginSwitchCase? var hadOneofValue = false if let current = self.operation { @@ -5320,7 +5372,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginSwitchCase(v) } }() - case 172: try { + case 176: try { var v: Fuzzilli_Protobuf_BeginSwitchDefaultCase? var hadOneofValue = false if let current = self.operation { @@ -5333,7 +5385,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginSwitchDefaultCase(v) } }() - case 173: try { + case 177: try { var v: Fuzzilli_Protobuf_EndSwitchCase? var hadOneofValue = false if let current = self.operation { @@ -5346,7 +5398,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endSwitchCase(v) } }() - case 174: try { + case 178: try { var v: Fuzzilli_Protobuf_EndSwitch? var hadOneofValue = false if let current = self.operation { @@ -5359,7 +5411,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endSwitch(v) } }() - case 175: try { + case 179: try { var v: Fuzzilli_Protobuf_SwitchBreak? var hadOneofValue = false if let current = self.operation { @@ -5372,7 +5424,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .switchBreak(v) } }() - case 176: try { + case 180: try { var v: Fuzzilli_Protobuf_LoadNewTarget? var hadOneofValue = false if let current = self.operation { @@ -5385,7 +5437,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .loadNewTarget(v) } }() - case 177: try { + case 181: try { var v: Fuzzilli_Protobuf_Print? var hadOneofValue = false if let current = self.operation { @@ -5398,7 +5450,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .print(v) } }() - case 178: try { + case 182: try { var v: Fuzzilli_Protobuf_Explore? var hadOneofValue = false if let current = self.operation { @@ -5411,7 +5463,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .explore(v) } }() - case 179: try { + case 183: try { var v: Fuzzilli_Protobuf_Probe? var hadOneofValue = false if let current = self.operation { @@ -5424,7 +5476,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .probe(v) } }() - case 180: try { + case 184: try { var v: Fuzzilli_Protobuf_Fixup? var hadOneofValue = false if let current = self.operation { @@ -5437,7 +5489,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .fixup(v) } }() - case 181: try { + case 185: try { var v: Fuzzilli_Protobuf_BeginWasmModule? var hadOneofValue = false if let current = self.operation { @@ -5450,7 +5502,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginWasmModule(v) } }() - case 182: try { + case 186: try { var v: Fuzzilli_Protobuf_EndWasmModule? var hadOneofValue = false if let current = self.operation { @@ -5463,7 +5515,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endWasmModule(v) } }() - case 183: try { + case 187: try { var v: Fuzzilli_Protobuf_CreateWasmGlobal? var hadOneofValue = false if let current = self.operation { @@ -5476,7 +5528,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createWasmGlobal(v) } }() - case 184: try { + case 188: try { var v: Fuzzilli_Protobuf_CreateWasmMemory? var hadOneofValue = false if let current = self.operation { @@ -5489,7 +5541,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createWasmMemory(v) } }() - case 185: try { + case 189: try { var v: Fuzzilli_Protobuf_CreateWasmTable? var hadOneofValue = false if let current = self.operation { @@ -5502,7 +5554,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createWasmTable(v) } }() - case 186: try { + case 190: try { var v: Fuzzilli_Protobuf_CreateWasmJSTag? var hadOneofValue = false if let current = self.operation { @@ -5515,7 +5567,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createWasmJstag(v) } }() - case 187: try { + case 191: try { var v: Fuzzilli_Protobuf_CreateWasmTag? var hadOneofValue = false if let current = self.operation { @@ -5528,7 +5580,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createWasmTag(v) } }() - case 188: try { + case 192: try { var v: Fuzzilli_Protobuf_WrapPromising? var hadOneofValue = false if let current = self.operation { @@ -5541,7 +5593,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wrapPromising(v) } }() - case 189: try { + case 193: try { var v: Fuzzilli_Protobuf_WrapSuspending? var hadOneofValue = false if let current = self.operation { @@ -5554,7 +5606,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wrapSuspending(v) } }() - case 190: try { + case 194: try { var v: Fuzzilli_Protobuf_BindMethod? var hadOneofValue = false if let current = self.operation { @@ -5567,7 +5619,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .bindMethod(v) } }() - case 191: try { + case 195: try { var v: Fuzzilli_Protobuf_BindFunction? var hadOneofValue = false if let current = self.operation { @@ -5580,7 +5632,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .bindFunction(v) } }() - case 192: try { + case 196: try { var v: Fuzzilli_Protobuf_Consti64? var hadOneofValue = false if let current = self.operation { @@ -5593,7 +5645,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .consti64(v) } }() - case 193: try { + case 197: try { var v: Fuzzilli_Protobuf_Consti32? var hadOneofValue = false if let current = self.operation { @@ -5606,7 +5658,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .consti32(v) } }() - case 194: try { + case 198: try { var v: Fuzzilli_Protobuf_Constf32? var hadOneofValue = false if let current = self.operation { @@ -5619,7 +5671,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .constf32(v) } }() - case 195: try { + case 199: try { var v: Fuzzilli_Protobuf_Constf64? var hadOneofValue = false if let current = self.operation { @@ -5632,7 +5684,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .constf64(v) } }() - case 196: try { + case 200: try { var v: Fuzzilli_Protobuf_WasmReturn? var hadOneofValue = false if let current = self.operation { @@ -5645,7 +5697,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReturn(v) } }() - case 197: try { + case 201: try { var v: Fuzzilli_Protobuf_WasmJsCall? var hadOneofValue = false if let current = self.operation { @@ -5658,7 +5710,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmJsCall(v) } }() - case 198: try { + case 202: try { var v: Fuzzilli_Protobuf_Wasmi32CompareOp? var hadOneofValue = false if let current = self.operation { @@ -5671,7 +5723,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi32CompareOp(v) } }() - case 199: try { + case 203: try { var v: Fuzzilli_Protobuf_Wasmi64CompareOp? var hadOneofValue = false if let current = self.operation { @@ -5684,7 +5736,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi64CompareOp(v) } }() - case 200: try { + case 204: try { var v: Fuzzilli_Protobuf_Wasmf32CompareOp? var hadOneofValue = false if let current = self.operation { @@ -5697,7 +5749,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmf32CompareOp(v) } }() - case 201: try { + case 205: try { var v: Fuzzilli_Protobuf_Wasmf64CompareOp? var hadOneofValue = false if let current = self.operation { @@ -5710,7 +5762,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmf64CompareOp(v) } }() - case 202: try { + case 206: try { var v: Fuzzilli_Protobuf_Wasmi32EqualZero? var hadOneofValue = false if let current = self.operation { @@ -5723,7 +5775,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi32EqualZero(v) } }() - case 203: try { + case 207: try { var v: Fuzzilli_Protobuf_Wasmi64EqualZero? var hadOneofValue = false if let current = self.operation { @@ -5736,7 +5788,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi64EqualZero(v) } }() - case 204: try { + case 208: try { var v: Fuzzilli_Protobuf_Wasmi32BinOp? var hadOneofValue = false if let current = self.operation { @@ -5749,7 +5801,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi32BinOp(v) } }() - case 205: try { + case 209: try { var v: Fuzzilli_Protobuf_Wasmi64BinOp? var hadOneofValue = false if let current = self.operation { @@ -5762,7 +5814,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi64BinOp(v) } }() - case 206: try { + case 210: try { var v: Fuzzilli_Protobuf_Wasmi32UnOp? var hadOneofValue = false if let current = self.operation { @@ -5775,7 +5827,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi32UnOp(v) } }() - case 207: try { + case 211: try { var v: Fuzzilli_Protobuf_Wasmi64UnOp? var hadOneofValue = false if let current = self.operation { @@ -5788,7 +5840,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmi64UnOp(v) } }() - case 208: try { + case 212: try { var v: Fuzzilli_Protobuf_Wasmf32BinOp? var hadOneofValue = false if let current = self.operation { @@ -5801,7 +5853,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmf32BinOp(v) } }() - case 209: try { + case 213: try { var v: Fuzzilli_Protobuf_Wasmf64BinOp? var hadOneofValue = false if let current = self.operation { @@ -5814,7 +5866,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmf64BinOp(v) } }() - case 210: try { + case 214: try { var v: Fuzzilli_Protobuf_Wasmf32UnOp? var hadOneofValue = false if let current = self.operation { @@ -5827,7 +5879,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmf32UnOp(v) } }() - case 211: try { + case 215: try { var v: Fuzzilli_Protobuf_Wasmf64UnOp? var hadOneofValue = false if let current = self.operation { @@ -5840,7 +5892,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmf64UnOp(v) } }() - case 212: try { + case 216: try { var v: Fuzzilli_Protobuf_WasmWrapi64Toi32? var hadOneofValue = false if let current = self.operation { @@ -5853,7 +5905,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmWrapi64Toi32(v) } }() - case 213: try { + case 217: try { var v: Fuzzilli_Protobuf_WasmTruncatef32Toi32? var hadOneofValue = false if let current = self.operation { @@ -5866,7 +5918,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncatef32Toi32(v) } }() - case 214: try { + case 218: try { var v: Fuzzilli_Protobuf_WasmTruncatef64Toi32? var hadOneofValue = false if let current = self.operation { @@ -5879,7 +5931,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncatef64Toi32(v) } }() - case 215: try { + case 219: try { var v: Fuzzilli_Protobuf_WasmExtendi32Toi64? var hadOneofValue = false if let current = self.operation { @@ -5892,7 +5944,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmExtendi32Toi64(v) } }() - case 216: try { + case 220: try { var v: Fuzzilli_Protobuf_WasmTruncatef32Toi64? var hadOneofValue = false if let current = self.operation { @@ -5905,7 +5957,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncatef32Toi64(v) } }() - case 217: try { + case 221: try { var v: Fuzzilli_Protobuf_WasmTruncatef64Toi64? var hadOneofValue = false if let current = self.operation { @@ -5918,7 +5970,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncatef64Toi64(v) } }() - case 218: try { + case 222: try { var v: Fuzzilli_Protobuf_WasmConverti32Tof32? var hadOneofValue = false if let current = self.operation { @@ -5931,7 +5983,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmConverti32Tof32(v) } }() - case 219: try { + case 223: try { var v: Fuzzilli_Protobuf_WasmConverti64Tof32? var hadOneofValue = false if let current = self.operation { @@ -5944,7 +5996,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmConverti64Tof32(v) } }() - case 220: try { + case 224: try { var v: Fuzzilli_Protobuf_WasmDemotef64Tof32? var hadOneofValue = false if let current = self.operation { @@ -5957,7 +6009,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDemotef64Tof32(v) } }() - case 221: try { + case 225: try { var v: Fuzzilli_Protobuf_WasmConverti32Tof64? var hadOneofValue = false if let current = self.operation { @@ -5970,7 +6022,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmConverti32Tof64(v) } }() - case 222: try { + case 226: try { var v: Fuzzilli_Protobuf_WasmConverti64Tof64? var hadOneofValue = false if let current = self.operation { @@ -5983,7 +6035,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmConverti64Tof64(v) } }() - case 223: try { + case 227: try { var v: Fuzzilli_Protobuf_WasmPromotef32Tof64? var hadOneofValue = false if let current = self.operation { @@ -5996,7 +6048,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmPromotef32Tof64(v) } }() - case 224: try { + case 228: try { var v: Fuzzilli_Protobuf_WasmReinterpretf32Asi32? var hadOneofValue = false if let current = self.operation { @@ -6009,7 +6061,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReinterpretf32Asi32(v) } }() - case 225: try { + case 229: try { var v: Fuzzilli_Protobuf_WasmReinterpretf64Asi64? var hadOneofValue = false if let current = self.operation { @@ -6022,7 +6074,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReinterpretf64Asi64(v) } }() - case 226: try { + case 230: try { var v: Fuzzilli_Protobuf_WasmReinterpreti32Asf32? var hadOneofValue = false if let current = self.operation { @@ -6035,7 +6087,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReinterpreti32Asf32(v) } }() - case 227: try { + case 231: try { var v: Fuzzilli_Protobuf_WasmReinterpreti64Asf64? var hadOneofValue = false if let current = self.operation { @@ -6048,7 +6100,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReinterpreti64Asf64(v) } }() - case 228: try { + case 232: try { var v: Fuzzilli_Protobuf_WasmSignExtend8Intoi32? var hadOneofValue = false if let current = self.operation { @@ -6061,7 +6113,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSignExtend8Intoi32(v) } }() - case 229: try { + case 233: try { var v: Fuzzilli_Protobuf_WasmSignExtend16Intoi32? var hadOneofValue = false if let current = self.operation { @@ -6074,7 +6126,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSignExtend16Intoi32(v) } }() - case 230: try { + case 234: try { var v: Fuzzilli_Protobuf_WasmSignExtend8Intoi64? var hadOneofValue = false if let current = self.operation { @@ -6087,7 +6139,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSignExtend8Intoi64(v) } }() - case 231: try { + case 235: try { var v: Fuzzilli_Protobuf_WasmSignExtend16Intoi64? var hadOneofValue = false if let current = self.operation { @@ -6100,7 +6152,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSignExtend16Intoi64(v) } }() - case 232: try { + case 236: try { var v: Fuzzilli_Protobuf_WasmSignExtend32Intoi64? var hadOneofValue = false if let current = self.operation { @@ -6113,7 +6165,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSignExtend32Intoi64(v) } }() - case 233: try { + case 237: try { var v: Fuzzilli_Protobuf_WasmTruncateSatf32Toi32? var hadOneofValue = false if let current = self.operation { @@ -6126,7 +6178,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncateSatf32Toi32(v) } }() - case 234: try { + case 238: try { var v: Fuzzilli_Protobuf_WasmTruncateSatf64Toi32? var hadOneofValue = false if let current = self.operation { @@ -6139,7 +6191,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncateSatf64Toi32(v) } }() - case 235: try { + case 239: try { var v: Fuzzilli_Protobuf_WasmTruncateSatf32Toi64? var hadOneofValue = false if let current = self.operation { @@ -6152,7 +6204,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncateSatf32Toi64(v) } }() - case 236: try { + case 240: try { var v: Fuzzilli_Protobuf_WasmTruncateSatf64Toi64? var hadOneofValue = false if let current = self.operation { @@ -6165,7 +6217,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTruncateSatf64Toi64(v) } }() - case 237: try { + case 241: try { var v: Fuzzilli_Protobuf_WasmReassign? var hadOneofValue = false if let current = self.operation { @@ -6178,7 +6230,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReassign(v) } }() - case 238: try { + case 242: try { var v: Fuzzilli_Protobuf_WasmDefineGlobal? var hadOneofValue = false if let current = self.operation { @@ -6191,7 +6243,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineGlobal(v) } }() - case 239: try { + case 243: try { var v: Fuzzilli_Protobuf_WasmDefineTable? var hadOneofValue = false if let current = self.operation { @@ -6204,7 +6256,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineTable(v) } }() - case 240: try { + case 244: try { var v: Fuzzilli_Protobuf_WasmDefineMemory? var hadOneofValue = false if let current = self.operation { @@ -6217,7 +6269,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineMemory(v) } }() - case 241: try { + case 245: try { var v: Fuzzilli_Protobuf_WasmDefineDataSegment? var hadOneofValue = false if let current = self.operation { @@ -6230,7 +6282,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineDataSegment(v) } }() - case 242: try { + case 246: try { var v: Fuzzilli_Protobuf_WasmLoadGlobal? var hadOneofValue = false if let current = self.operation { @@ -6243,7 +6295,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmLoadGlobal(v) } }() - case 243: try { + case 247: try { var v: Fuzzilli_Protobuf_WasmStoreGlobal? var hadOneofValue = false if let current = self.operation { @@ -6256,7 +6308,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmStoreGlobal(v) } }() - case 244: try { + case 248: try { var v: Fuzzilli_Protobuf_WasmTableGet? var hadOneofValue = false if let current = self.operation { @@ -6269,7 +6321,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTableGet(v) } }() - case 245: try { + case 249: try { var v: Fuzzilli_Protobuf_WasmTableSet? var hadOneofValue = false if let current = self.operation { @@ -6282,7 +6334,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTableSet(v) } }() - case 246: try { + case 250: try { var v: Fuzzilli_Protobuf_WasmTableSize? var hadOneofValue = false if let current = self.operation { @@ -6295,7 +6347,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTableSize(v) } }() - case 247: try { + case 251: try { var v: Fuzzilli_Protobuf_WasmTableGrow? var hadOneofValue = false if let current = self.operation { @@ -6308,7 +6360,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTableGrow(v) } }() - case 248: try { + case 252: try { var v: Fuzzilli_Protobuf_WasmCallIndirect? var hadOneofValue = false if let current = self.operation { @@ -6321,7 +6373,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmCallIndirect(v) } }() - case 249: try { + case 253: try { var v: Fuzzilli_Protobuf_WasmCallDirect? var hadOneofValue = false if let current = self.operation { @@ -6334,7 +6386,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmCallDirect(v) } }() - case 250: try { + case 254: try { var v: Fuzzilli_Protobuf_WasmReturnCallDirect? var hadOneofValue = false if let current = self.operation { @@ -6347,7 +6399,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReturnCallDirect(v) } }() - case 251: try { + case 255: try { var v: Fuzzilli_Protobuf_WasmReturnCallIndirect? var hadOneofValue = false if let current = self.operation { @@ -6360,7 +6412,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmReturnCallIndirect(v) } }() - case 252: try { + case 256: try { var v: Fuzzilli_Protobuf_WasmMemoryLoad? var hadOneofValue = false if let current = self.operation { @@ -6373,7 +6425,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemoryLoad(v) } }() - case 253: try { + case 257: try { var v: Fuzzilli_Protobuf_WasmMemoryStore? var hadOneofValue = false if let current = self.operation { @@ -6386,7 +6438,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemoryStore(v) } }() - case 254: try { + case 258: try { var v: Fuzzilli_Protobuf_WasmAtomicLoad? var hadOneofValue = false if let current = self.operation { @@ -6399,7 +6451,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmAtomicLoad(v) } }() - case 255: try { + case 259: try { var v: Fuzzilli_Protobuf_WasmAtomicStore? var hadOneofValue = false if let current = self.operation { @@ -6412,7 +6464,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmAtomicStore(v) } }() - case 256: try { + case 260: try { var v: Fuzzilli_Protobuf_WasmAtomicRMW? var hadOneofValue = false if let current = self.operation { @@ -6425,7 +6477,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmAtomicRmw(v) } }() - case 257: try { + case 261: try { var v: Fuzzilli_Protobuf_WasmAtomicCmpxchg? var hadOneofValue = false if let current = self.operation { @@ -6438,7 +6490,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmAtomicCmpxchg(v) } }() - case 258: try { + case 262: try { var v: Fuzzilli_Protobuf_WasmMemorySize? var hadOneofValue = false if let current = self.operation { @@ -6451,7 +6503,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemorySize(v) } }() - case 259: try { + case 263: try { var v: Fuzzilli_Protobuf_WasmMemoryGrow? var hadOneofValue = false if let current = self.operation { @@ -6464,7 +6516,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemoryGrow(v) } }() - case 260: try { + case 264: try { var v: Fuzzilli_Protobuf_WasmMemoryFill? var hadOneofValue = false if let current = self.operation { @@ -6477,7 +6529,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemoryFill(v) } }() - case 261: try { + case 265: try { var v: Fuzzilli_Protobuf_WasmMemoryInit? var hadOneofValue = false if let current = self.operation { @@ -6490,7 +6542,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemoryInit(v) } }() - case 262: try { + case 266: try { var v: Fuzzilli_Protobuf_WasmDropDataSegment? var hadOneofValue = false if let current = self.operation { @@ -6503,7 +6555,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDropDataSegment(v) } }() - case 263: try { + case 267: try { var v: Fuzzilli_Protobuf_BeginWasmFunction? var hadOneofValue = false if let current = self.operation { @@ -6516,7 +6568,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .beginWasmFunction(v) } }() - case 264: try { + case 268: try { var v: Fuzzilli_Protobuf_EndWasmFunction? var hadOneofValue = false if let current = self.operation { @@ -6529,7 +6581,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .endWasmFunction(v) } }() - case 265: try { + case 269: try { var v: Fuzzilli_Protobuf_WasmBeginBlock? var hadOneofValue = false if let current = self.operation { @@ -6542,7 +6594,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginBlock(v) } }() - case 266: try { + case 270: try { var v: Fuzzilli_Protobuf_WasmEndBlock? var hadOneofValue = false if let current = self.operation { @@ -6555,7 +6607,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndBlock(v) } }() - case 267: try { + case 271: try { var v: Fuzzilli_Protobuf_WasmBeginLoop? var hadOneofValue = false if let current = self.operation { @@ -6568,7 +6620,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginLoop(v) } }() - case 268: try { + case 272: try { var v: Fuzzilli_Protobuf_WasmEndLoop? var hadOneofValue = false if let current = self.operation { @@ -6581,7 +6633,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndLoop(v) } }() - case 269: try { + case 273: try { var v: Fuzzilli_Protobuf_WasmBranch? var hadOneofValue = false if let current = self.operation { @@ -6594,7 +6646,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBranch(v) } }() - case 270: try { + case 274: try { var v: Fuzzilli_Protobuf_WasmBranchIf? var hadOneofValue = false if let current = self.operation { @@ -6607,7 +6659,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBranchIf(v) } }() - case 271: try { + case 275: try { var v: Fuzzilli_Protobuf_WasmBranchTable? var hadOneofValue = false if let current = self.operation { @@ -6620,7 +6672,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBranchTable(v) } }() - case 272: try { + case 276: try { var v: Fuzzilli_Protobuf_WasmNop? var hadOneofValue = false if let current = self.operation { @@ -6633,7 +6685,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmNop(v) } }() - case 273: try { + case 277: try { var v: Fuzzilli_Protobuf_WasmBeginIf? var hadOneofValue = false if let current = self.operation { @@ -6646,7 +6698,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginIf(v) } }() - case 274: try { + case 278: try { var v: Fuzzilli_Protobuf_WasmBeginElse? var hadOneofValue = false if let current = self.operation { @@ -6659,7 +6711,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginElse(v) } }() - case 275: try { + case 279: try { var v: Fuzzilli_Protobuf_WasmEndIf? var hadOneofValue = false if let current = self.operation { @@ -6672,7 +6724,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndIf(v) } }() - case 276: try { + case 280: try { var v: Fuzzilli_Protobuf_WasmBeginTryTable? var hadOneofValue = false if let current = self.operation { @@ -6685,7 +6737,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginTryTable(v) } }() - case 277: try { + case 281: try { var v: Fuzzilli_Protobuf_WasmEndTryTable? var hadOneofValue = false if let current = self.operation { @@ -6698,7 +6750,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndTryTable(v) } }() - case 278: try { + case 282: try { var v: Fuzzilli_Protobuf_WasmBeginTry? var hadOneofValue = false if let current = self.operation { @@ -6711,7 +6763,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginTry(v) } }() - case 279: try { + case 283: try { var v: Fuzzilli_Protobuf_WasmBeginCatchAll? var hadOneofValue = false if let current = self.operation { @@ -6724,7 +6776,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginCatchAll(v) } }() - case 280: try { + case 284: try { var v: Fuzzilli_Protobuf_WasmBeginCatch? var hadOneofValue = false if let current = self.operation { @@ -6737,7 +6789,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginCatch(v) } }() - case 281: try { + case 285: try { var v: Fuzzilli_Protobuf_WasmEndTry? var hadOneofValue = false if let current = self.operation { @@ -6750,7 +6802,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndTry(v) } }() - case 282: try { + case 286: try { var v: Fuzzilli_Protobuf_WasmBeginTryDelegate? var hadOneofValue = false if let current = self.operation { @@ -6763,7 +6815,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginTryDelegate(v) } }() - case 283: try { + case 287: try { var v: Fuzzilli_Protobuf_WasmEndTryDelegate? var hadOneofValue = false if let current = self.operation { @@ -6776,7 +6828,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndTryDelegate(v) } }() - case 284: try { + case 288: try { var v: Fuzzilli_Protobuf_WasmThrow? var hadOneofValue = false if let current = self.operation { @@ -6789,7 +6841,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmThrow(v) } }() - case 285: try { + case 289: try { var v: Fuzzilli_Protobuf_WasmRethrow? var hadOneofValue = false if let current = self.operation { @@ -6802,7 +6854,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmRethrow(v) } }() - case 286: try { + case 290: try { var v: Fuzzilli_Protobuf_WasmThrowRef? var hadOneofValue = false if let current = self.operation { @@ -6815,7 +6867,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmThrowRef(v) } }() - case 287: try { + case 291: try { var v: Fuzzilli_Protobuf_WasmDefineTag? var hadOneofValue = false if let current = self.operation { @@ -6828,7 +6880,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineTag(v) } }() - case 288: try { + case 292: try { var v: Fuzzilli_Protobuf_ConstSimd128? var hadOneofValue = false if let current = self.operation { @@ -6841,7 +6893,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .constSimd128(v) } }() - case 289: try { + case 293: try { var v: Fuzzilli_Protobuf_WasmSimd128Compare? var hadOneofValue = false if let current = self.operation { @@ -6854,7 +6906,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128Compare(v) } }() - case 290: try { + case 294: try { var v: Fuzzilli_Protobuf_WasmSimd128IntegerUnOp? var hadOneofValue = false if let current = self.operation { @@ -6867,7 +6919,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128IntegerUnOp(v) } }() - case 291: try { + case 295: try { var v: Fuzzilli_Protobuf_WasmSimd128IntegerBinOp? var hadOneofValue = false if let current = self.operation { @@ -6880,7 +6932,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128IntegerBinOp(v) } }() - case 292: try { + case 296: try { var v: Fuzzilli_Protobuf_WasmSimd128IntegerTernaryOp? var hadOneofValue = false if let current = self.operation { @@ -6893,7 +6945,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128IntegerTernaryOp(v) } }() - case 293: try { + case 297: try { var v: Fuzzilli_Protobuf_WasmSimd128FloatUnOp? var hadOneofValue = false if let current = self.operation { @@ -6906,7 +6958,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128FloatUnOp(v) } }() - case 294: try { + case 298: try { var v: Fuzzilli_Protobuf_WasmSimd128FloatBinOp? var hadOneofValue = false if let current = self.operation { @@ -6919,7 +6971,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128FloatBinOp(v) } }() - case 295: try { + case 299: try { var v: Fuzzilli_Protobuf_WasmSimd128FloatTernaryOp? var hadOneofValue = false if let current = self.operation { @@ -6932,7 +6984,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimd128FloatTernaryOp(v) } }() - case 296: try { + case 300: try { var v: Fuzzilli_Protobuf_WasmSimdSplat? var hadOneofValue = false if let current = self.operation { @@ -6945,7 +6997,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimdSplat(v) } }() - case 297: try { + case 301: try { var v: Fuzzilli_Protobuf_WasmSimdExtractLane? var hadOneofValue = false if let current = self.operation { @@ -6958,7 +7010,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimdExtractLane(v) } }() - case 298: try { + case 302: try { var v: Fuzzilli_Protobuf_WasmSimdReplaceLane? var hadOneofValue = false if let current = self.operation { @@ -6971,7 +7023,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimdReplaceLane(v) } }() - case 299: try { + case 303: try { var v: Fuzzilli_Protobuf_WasmSimdStoreLane? var hadOneofValue = false if let current = self.operation { @@ -6984,7 +7036,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimdStoreLane(v) } }() - case 300: try { + case 304: try { var v: Fuzzilli_Protobuf_WasmSimdLoadLane? var hadOneofValue = false if let current = self.operation { @@ -6997,7 +7049,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimdLoadLane(v) } }() - case 301: try { + case 305: try { var v: Fuzzilli_Protobuf_WasmSimdLoad? var hadOneofValue = false if let current = self.operation { @@ -7010,7 +7062,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSimdLoad(v) } }() - case 302: try { + case 306: try { var v: Fuzzilli_Protobuf_WasmUnreachable? var hadOneofValue = false if let current = self.operation { @@ -7023,7 +7075,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmUnreachable(v) } }() - case 303: try { + case 307: try { var v: Fuzzilli_Protobuf_WasmSelect? var hadOneofValue = false if let current = self.operation { @@ -7036,7 +7088,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmSelect(v) } }() - case 304: try { + case 308: try { var v: Fuzzilli_Protobuf_WasmBeginTypeGroup? var hadOneofValue = false if let current = self.operation { @@ -7049,7 +7101,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmBeginTypeGroup(v) } }() - case 305: try { + case 309: try { var v: Fuzzilli_Protobuf_WasmEndTypeGroup? var hadOneofValue = false if let current = self.operation { @@ -7062,7 +7114,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmEndTypeGroup(v) } }() - case 306: try { + case 310: try { var v: Fuzzilli_Protobuf_WasmDefineArrayType? var hadOneofValue = false if let current = self.operation { @@ -7075,7 +7127,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineArrayType(v) } }() - case 307: try { + case 311: try { var v: Fuzzilli_Protobuf_WasmDefineStructType? var hadOneofValue = false if let current = self.operation { @@ -7088,7 +7140,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineStructType(v) } }() - case 308: try { + case 312: try { var v: Fuzzilli_Protobuf_WasmDefineForwardOrSelfReference? var hadOneofValue = false if let current = self.operation { @@ -7101,7 +7153,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineForwardOrSelfReference(v) } }() - case 309: try { + case 313: try { var v: Fuzzilli_Protobuf_WasmResolveForwardReference? var hadOneofValue = false if let current = self.operation { @@ -7114,7 +7166,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmResolveForwardReference(v) } }() - case 310: try { + case 314: try { var v: Fuzzilli_Protobuf_WasmArrayNewFixed? var hadOneofValue = false if let current = self.operation { @@ -7127,7 +7179,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmArrayNewFixed(v) } }() - case 311: try { + case 315: try { var v: Fuzzilli_Protobuf_WasmArrayNewDefault? var hadOneofValue = false if let current = self.operation { @@ -7140,7 +7192,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmArrayNewDefault(v) } }() - case 312: try { + case 316: try { var v: Fuzzilli_Protobuf_WasmArrayLen? var hadOneofValue = false if let current = self.operation { @@ -7153,7 +7205,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmArrayLen(v) } }() - case 313: try { + case 317: try { var v: Fuzzilli_Protobuf_WasmArrayGet? var hadOneofValue = false if let current = self.operation { @@ -7166,7 +7218,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmArrayGet(v) } }() - case 314: try { + case 318: try { var v: Fuzzilli_Protobuf_WasmArraySet? var hadOneofValue = false if let current = self.operation { @@ -7179,7 +7231,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmArraySet(v) } }() - case 315: try { + case 319: try { var v: Fuzzilli_Protobuf_WasmStructNewDefault? var hadOneofValue = false if let current = self.operation { @@ -7192,7 +7244,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmStructNewDefault(v) } }() - case 316: try { + case 320: try { var v: Fuzzilli_Protobuf_WasmStructGet? var hadOneofValue = false if let current = self.operation { @@ -7205,7 +7257,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmStructGet(v) } }() - case 317: try { + case 321: try { var v: Fuzzilli_Protobuf_WasmStructSet? var hadOneofValue = false if let current = self.operation { @@ -7218,7 +7270,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmStructSet(v) } }() - case 318: try { + case 322: try { var v: Fuzzilli_Protobuf_WasmRefNull? var hadOneofValue = false if let current = self.operation { @@ -7231,7 +7283,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmRefNull(v) } }() - case 319: try { + case 323: try { var v: Fuzzilli_Protobuf_WasmRefIsNull? var hadOneofValue = false if let current = self.operation { @@ -7244,7 +7296,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmRefIsNull(v) } }() - case 320: try { + case 324: try { var v: Fuzzilli_Protobuf_WasmRefI31? var hadOneofValue = false if let current = self.operation { @@ -7257,7 +7309,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmRefI31(v) } }() - case 321: try { + case 325: try { var v: Fuzzilli_Protobuf_WasmI31Get? var hadOneofValue = false if let current = self.operation { @@ -7270,7 +7322,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmI31Get(v) } }() - case 322: try { + case 326: try { var v: Fuzzilli_Protobuf_WasmAnyConvertExtern? var hadOneofValue = false if let current = self.operation { @@ -7283,7 +7335,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmAnyConvertExtern(v) } }() - case 323: try { + case 327: try { var v: Fuzzilli_Protobuf_WasmExternConvertAny? var hadOneofValue = false if let current = self.operation { @@ -7296,7 +7348,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmExternConvertAny(v) } }() - case 324: try { + case 328: try { var v: Fuzzilli_Protobuf_WasmMemoryCopy? var hadOneofValue = false if let current = self.operation { @@ -7309,7 +7361,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmMemoryCopy(v) } }() - case 325: try { + case 329: try { var v: Fuzzilli_Protobuf_WasmDefineElementSegment? var hadOneofValue = false if let current = self.operation { @@ -7322,7 +7374,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineElementSegment(v) } }() - case 326: try { + case 330: try { var v: Fuzzilli_Protobuf_WasmTableInit? var hadOneofValue = false if let current = self.operation { @@ -7335,7 +7387,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTableInit(v) } }() - case 327: try { + case 331: try { var v: Fuzzilli_Protobuf_WasmDropElementSegment? var hadOneofValue = false if let current = self.operation { @@ -7348,7 +7400,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDropElementSegment(v) } }() - case 328: try { + case 332: try { var v: Fuzzilli_Protobuf_WasmTableCopy? var hadOneofValue = false if let current = self.operation { @@ -7361,7 +7413,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmTableCopy(v) } }() - case 329: try { + case 333: try { var v: Fuzzilli_Protobuf_WasmDefineSignatureType? var hadOneofValue = false if let current = self.operation { @@ -7374,7 +7426,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .wasmDefineSignatureType(v) } }() - case 330: try { + case 334: try { var v: Fuzzilli_Protobuf_CreateNamedDisposableVariable? var hadOneofValue = false if let current = self.operation { @@ -7387,7 +7439,7 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createNamedDisposableVariable(v) } }() - case 331: try { + case 335: try { var v: Fuzzilli_Protobuf_CreateNamedAsyncDisposableVariable? var hadOneofValue = false if let current = self.operation { @@ -7400,58 +7452,6 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M self.operation = .createNamedAsyncDisposableVariable(v) } }() - case 332: try { - var v: Fuzzilli_Protobuf_BeginClassInstanceComputedMethod? - var hadOneofValue = false - if let current = self.operation { - hadOneofValue = true - if case .beginClassInstanceComputedMethod(let m) = current {v = m} - } - try decoder.decodeSingularMessageField(value: &v) - if let v = v { - if hadOneofValue {try decoder.handleConflictingOneOf()} - self.operation = .beginClassInstanceComputedMethod(v) - } - }() - case 333: try { - var v: Fuzzilli_Protobuf_EndClassInstanceComputedMethod? - var hadOneofValue = false - if let current = self.operation { - hadOneofValue = true - if case .endClassInstanceComputedMethod(let m) = current {v = m} - } - try decoder.decodeSingularMessageField(value: &v) - if let v = v { - if hadOneofValue {try decoder.handleConflictingOneOf()} - self.operation = .endClassInstanceComputedMethod(v) - } - }() - case 334: try { - var v: Fuzzilli_Protobuf_BeginClassStaticComputedMethod? - var hadOneofValue = false - if let current = self.operation { - hadOneofValue = true - if case .beginClassStaticComputedMethod(let m) = current {v = m} - } - try decoder.decodeSingularMessageField(value: &v) - if let v = v { - if hadOneofValue {try decoder.handleConflictingOneOf()} - self.operation = .beginClassStaticComputedMethod(v) - } - }() - case 335: try { - var v: Fuzzilli_Protobuf_EndClassStaticComputedMethod? - var hadOneofValue = false - if let current = self.operation { - hadOneofValue = true - if case .endClassStaticComputedMethod(let m) = current {v = m} - } - try decoder.decodeSingularMessageField(value: &v) - if let v = v { - if hadOneofValue {try decoder.handleConflictingOneOf()} - self.operation = .endClassStaticComputedMethod(v) - } - }() default: break } } @@ -7618,1188 +7618,1188 @@ extension Fuzzilli_Protobuf_Instruction: SwiftProtobuf.Message, SwiftProtobuf._M guard case .endClassInstanceMethod(let v)? = self.operation else { preconditionFailure() } try visitor.visitSingularMessageField(value: v, fieldNumber: 39) }() + case .beginClassInstanceComputedMethod?: try { + guard case .beginClassInstanceComputedMethod(let v)? = self.operation else { preconditionFailure() } + try visitor.visitSingularMessageField(value: v, fieldNumber: 40) + }() + case .endClassInstanceComputedMethod?: try { + guard case .endClassInstanceComputedMethod(let v)? = self.operation else { preconditionFailure() } + try visitor.visitSingularMessageField(value: v, fieldNumber: 41) + }() case .beginClassInstanceGetter?: try { guard case .beginClassInstanceGetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 40) + try visitor.visitSingularMessageField(value: v, fieldNumber: 42) }() case .endClassInstanceGetter?: try { guard case .endClassInstanceGetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 41) + try visitor.visitSingularMessageField(value: v, fieldNumber: 43) }() case .beginClassInstanceSetter?: try { guard case .beginClassInstanceSetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 42) + try visitor.visitSingularMessageField(value: v, fieldNumber: 44) }() case .endClassInstanceSetter?: try { guard case .endClassInstanceSetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 43) + try visitor.visitSingularMessageField(value: v, fieldNumber: 45) }() case .classAddStaticProperty?: try { guard case .classAddStaticProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 44) + try visitor.visitSingularMessageField(value: v, fieldNumber: 46) }() case .classAddStaticElement?: try { guard case .classAddStaticElement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 45) + try visitor.visitSingularMessageField(value: v, fieldNumber: 47) }() case .classAddStaticComputedProperty?: try { guard case .classAddStaticComputedProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 46) + try visitor.visitSingularMessageField(value: v, fieldNumber: 48) }() case .beginClassStaticInitializer?: try { guard case .beginClassStaticInitializer(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 47) + try visitor.visitSingularMessageField(value: v, fieldNumber: 49) }() case .endClassStaticInitializer?: try { guard case .endClassStaticInitializer(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 48) + try visitor.visitSingularMessageField(value: v, fieldNumber: 50) }() case .beginClassStaticMethod?: try { guard case .beginClassStaticMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 49) + try visitor.visitSingularMessageField(value: v, fieldNumber: 51) }() case .endClassStaticMethod?: try { guard case .endClassStaticMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 50) + try visitor.visitSingularMessageField(value: v, fieldNumber: 52) + }() + case .beginClassStaticComputedMethod?: try { + guard case .beginClassStaticComputedMethod(let v)? = self.operation else { preconditionFailure() } + try visitor.visitSingularMessageField(value: v, fieldNumber: 53) + }() + case .endClassStaticComputedMethod?: try { + guard case .endClassStaticComputedMethod(let v)? = self.operation else { preconditionFailure() } + try visitor.visitSingularMessageField(value: v, fieldNumber: 54) }() case .beginClassStaticGetter?: try { guard case .beginClassStaticGetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 51) + try visitor.visitSingularMessageField(value: v, fieldNumber: 55) }() case .endClassStaticGetter?: try { guard case .endClassStaticGetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 52) + try visitor.visitSingularMessageField(value: v, fieldNumber: 56) }() case .beginClassStaticSetter?: try { guard case .beginClassStaticSetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 53) + try visitor.visitSingularMessageField(value: v, fieldNumber: 57) }() case .endClassStaticSetter?: try { guard case .endClassStaticSetter(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 54) + try visitor.visitSingularMessageField(value: v, fieldNumber: 58) }() case .classAddPrivateInstanceProperty?: try { guard case .classAddPrivateInstanceProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 55) + try visitor.visitSingularMessageField(value: v, fieldNumber: 59) }() case .beginClassPrivateInstanceMethod?: try { guard case .beginClassPrivateInstanceMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 56) + try visitor.visitSingularMessageField(value: v, fieldNumber: 60) }() case .endClassPrivateInstanceMethod?: try { guard case .endClassPrivateInstanceMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 57) + try visitor.visitSingularMessageField(value: v, fieldNumber: 61) }() case .classAddPrivateStaticProperty?: try { guard case .classAddPrivateStaticProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 58) + try visitor.visitSingularMessageField(value: v, fieldNumber: 62) }() case .beginClassPrivateStaticMethod?: try { guard case .beginClassPrivateStaticMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 59) + try visitor.visitSingularMessageField(value: v, fieldNumber: 63) }() case .endClassPrivateStaticMethod?: try { guard case .endClassPrivateStaticMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 60) + try visitor.visitSingularMessageField(value: v, fieldNumber: 64) }() case .endClassDefinition?: try { guard case .endClassDefinition(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 61) + try visitor.visitSingularMessageField(value: v, fieldNumber: 65) }() case .createArray?: try { guard case .createArray(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 62) + try visitor.visitSingularMessageField(value: v, fieldNumber: 66) }() case .createIntArray?: try { guard case .createIntArray(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 63) + try visitor.visitSingularMessageField(value: v, fieldNumber: 67) }() case .createFloatArray?: try { guard case .createFloatArray(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 64) + try visitor.visitSingularMessageField(value: v, fieldNumber: 68) }() case .createArrayWithSpread?: try { guard case .createArrayWithSpread(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 65) + try visitor.visitSingularMessageField(value: v, fieldNumber: 69) }() case .createTemplateString?: try { guard case .createTemplateString(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 66) + try visitor.visitSingularMessageField(value: v, fieldNumber: 70) }() case .getProperty?: try { guard case .getProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 67) + try visitor.visitSingularMessageField(value: v, fieldNumber: 71) }() case .setProperty?: try { guard case .setProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 68) + try visitor.visitSingularMessageField(value: v, fieldNumber: 72) }() case .updateProperty?: try { guard case .updateProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 69) + try visitor.visitSingularMessageField(value: v, fieldNumber: 73) }() case .deleteProperty?: try { guard case .deleteProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 70) + try visitor.visitSingularMessageField(value: v, fieldNumber: 74) }() case .configureProperty?: try { guard case .configureProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 71) + try visitor.visitSingularMessageField(value: v, fieldNumber: 75) }() case .getElement?: try { guard case .getElement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 72) + try visitor.visitSingularMessageField(value: v, fieldNumber: 76) }() case .setElement?: try { guard case .setElement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 73) + try visitor.visitSingularMessageField(value: v, fieldNumber: 77) }() case .updateElement?: try { guard case .updateElement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 74) + try visitor.visitSingularMessageField(value: v, fieldNumber: 78) }() case .deleteElement?: try { guard case .deleteElement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 75) + try visitor.visitSingularMessageField(value: v, fieldNumber: 79) }() case .configureElement?: try { guard case .configureElement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 76) + try visitor.visitSingularMessageField(value: v, fieldNumber: 80) }() case .getComputedProperty?: try { guard case .getComputedProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 77) + try visitor.visitSingularMessageField(value: v, fieldNumber: 81) }() case .setComputedProperty?: try { guard case .setComputedProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 78) + try visitor.visitSingularMessageField(value: v, fieldNumber: 82) }() case .updateComputedProperty?: try { guard case .updateComputedProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 79) + try visitor.visitSingularMessageField(value: v, fieldNumber: 83) }() case .deleteComputedProperty?: try { guard case .deleteComputedProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 80) + try visitor.visitSingularMessageField(value: v, fieldNumber: 84) }() case .configureComputedProperty?: try { guard case .configureComputedProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 81) + try visitor.visitSingularMessageField(value: v, fieldNumber: 85) }() case .typeOf?: try { guard case .typeOf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 82) + try visitor.visitSingularMessageField(value: v, fieldNumber: 86) }() case .void?: try { guard case .void(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 83) + try visitor.visitSingularMessageField(value: v, fieldNumber: 87) }() case .testInstanceOf?: try { guard case .testInstanceOf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 84) + try visitor.visitSingularMessageField(value: v, fieldNumber: 88) }() case .testIn?: try { guard case .testIn(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 85) + try visitor.visitSingularMessageField(value: v, fieldNumber: 89) }() case .beginPlainFunction?: try { guard case .beginPlainFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 86) + try visitor.visitSingularMessageField(value: v, fieldNumber: 90) }() case .endPlainFunction?: try { guard case .endPlainFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 87) + try visitor.visitSingularMessageField(value: v, fieldNumber: 91) }() case .beginArrowFunction?: try { guard case .beginArrowFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 88) + try visitor.visitSingularMessageField(value: v, fieldNumber: 92) }() case .endArrowFunction?: try { guard case .endArrowFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 89) + try visitor.visitSingularMessageField(value: v, fieldNumber: 93) }() case .beginGeneratorFunction?: try { guard case .beginGeneratorFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 90) + try visitor.visitSingularMessageField(value: v, fieldNumber: 94) }() case .endGeneratorFunction?: try { guard case .endGeneratorFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 91) + try visitor.visitSingularMessageField(value: v, fieldNumber: 95) }() case .beginAsyncFunction?: try { guard case .beginAsyncFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 92) + try visitor.visitSingularMessageField(value: v, fieldNumber: 96) }() case .endAsyncFunction?: try { guard case .endAsyncFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 93) + try visitor.visitSingularMessageField(value: v, fieldNumber: 97) }() case .beginAsyncArrowFunction?: try { guard case .beginAsyncArrowFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 94) + try visitor.visitSingularMessageField(value: v, fieldNumber: 98) }() case .endAsyncArrowFunction?: try { guard case .endAsyncArrowFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 95) + try visitor.visitSingularMessageField(value: v, fieldNumber: 99) }() case .beginAsyncGeneratorFunction?: try { guard case .beginAsyncGeneratorFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 96) + try visitor.visitSingularMessageField(value: v, fieldNumber: 100) }() case .endAsyncGeneratorFunction?: try { guard case .endAsyncGeneratorFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 97) + try visitor.visitSingularMessageField(value: v, fieldNumber: 101) }() case .beginConstructor?: try { guard case .beginConstructor(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 98) + try visitor.visitSingularMessageField(value: v, fieldNumber: 102) }() case .endConstructor?: try { guard case .endConstructor(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 99) + try visitor.visitSingularMessageField(value: v, fieldNumber: 103) }() case .directive?: try { guard case .directive(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 100) + try visitor.visitSingularMessageField(value: v, fieldNumber: 104) }() case .return?: try { guard case .return(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 101) + try visitor.visitSingularMessageField(value: v, fieldNumber: 105) }() case .yield?: try { guard case .yield(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 102) + try visitor.visitSingularMessageField(value: v, fieldNumber: 106) }() case .yieldEach?: try { guard case .yieldEach(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 103) + try visitor.visitSingularMessageField(value: v, fieldNumber: 107) }() case .await?: try { guard case .await(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 104) + try visitor.visitSingularMessageField(value: v, fieldNumber: 108) }() case .callFunction?: try { guard case .callFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 105) + try visitor.visitSingularMessageField(value: v, fieldNumber: 109) }() case .callFunctionWithSpread?: try { guard case .callFunctionWithSpread(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 106) + try visitor.visitSingularMessageField(value: v, fieldNumber: 110) }() case .construct?: try { guard case .construct(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 107) + try visitor.visitSingularMessageField(value: v, fieldNumber: 111) }() case .constructWithSpread?: try { guard case .constructWithSpread(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 108) + try visitor.visitSingularMessageField(value: v, fieldNumber: 112) }() case .callMethod?: try { guard case .callMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 109) + try visitor.visitSingularMessageField(value: v, fieldNumber: 113) }() case .callMethodWithSpread?: try { guard case .callMethodWithSpread(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 110) + try visitor.visitSingularMessageField(value: v, fieldNumber: 114) }() case .callComputedMethod?: try { guard case .callComputedMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 111) + try visitor.visitSingularMessageField(value: v, fieldNumber: 115) }() case .callComputedMethodWithSpread?: try { guard case .callComputedMethodWithSpread(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 112) + try visitor.visitSingularMessageField(value: v, fieldNumber: 116) }() case .unaryOperation?: try { guard case .unaryOperation(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 113) + try visitor.visitSingularMessageField(value: v, fieldNumber: 117) }() case .binaryOperation?: try { guard case .binaryOperation(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 114) + try visitor.visitSingularMessageField(value: v, fieldNumber: 118) }() case .ternaryOperation?: try { guard case .ternaryOperation(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 115) + try visitor.visitSingularMessageField(value: v, fieldNumber: 119) }() case .update?: try { guard case .update(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 116) + try visitor.visitSingularMessageField(value: v, fieldNumber: 120) }() case .dup?: try { guard case .dup(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 117) + try visitor.visitSingularMessageField(value: v, fieldNumber: 121) }() case .reassign?: try { guard case .reassign(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 118) + try visitor.visitSingularMessageField(value: v, fieldNumber: 122) }() case .destructArray?: try { guard case .destructArray(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 119) + try visitor.visitSingularMessageField(value: v, fieldNumber: 123) }() case .destructArrayAndReassign?: try { guard case .destructArrayAndReassign(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 120) + try visitor.visitSingularMessageField(value: v, fieldNumber: 124) }() case .destructObject?: try { guard case .destructObject(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 121) + try visitor.visitSingularMessageField(value: v, fieldNumber: 125) }() case .destructObjectAndReassign?: try { guard case .destructObjectAndReassign(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 122) + try visitor.visitSingularMessageField(value: v, fieldNumber: 126) }() case .compare?: try { guard case .compare(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 123) + try visitor.visitSingularMessageField(value: v, fieldNumber: 127) }() case .eval?: try { guard case .eval(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 124) + try visitor.visitSingularMessageField(value: v, fieldNumber: 128) }() case .beginWith?: try { guard case .beginWith(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 125) + try visitor.visitSingularMessageField(value: v, fieldNumber: 129) }() case .endWith?: try { guard case .endWith(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 126) + try visitor.visitSingularMessageField(value: v, fieldNumber: 130) }() case .callSuperConstructor?: try { guard case .callSuperConstructor(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 127) + try visitor.visitSingularMessageField(value: v, fieldNumber: 131) }() case .callSuperMethod?: try { guard case .callSuperMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 128) + try visitor.visitSingularMessageField(value: v, fieldNumber: 132) }() case .getPrivateProperty?: try { guard case .getPrivateProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 129) + try visitor.visitSingularMessageField(value: v, fieldNumber: 133) }() case .setPrivateProperty?: try { guard case .setPrivateProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 130) + try visitor.visitSingularMessageField(value: v, fieldNumber: 134) }() case .updatePrivateProperty?: try { guard case .updatePrivateProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 131) + try visitor.visitSingularMessageField(value: v, fieldNumber: 135) }() case .callPrivateMethod?: try { guard case .callPrivateMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 132) + try visitor.visitSingularMessageField(value: v, fieldNumber: 136) }() case .getSuperProperty?: try { guard case .getSuperProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 133) + try visitor.visitSingularMessageField(value: v, fieldNumber: 137) }() case .setSuperProperty?: try { guard case .setSuperProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 134) + try visitor.visitSingularMessageField(value: v, fieldNumber: 138) }() case .getComputedSuperProperty?: try { guard case .getComputedSuperProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 135) + try visitor.visitSingularMessageField(value: v, fieldNumber: 139) }() case .setComputedSuperProperty?: try { guard case .setComputedSuperProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 136) + try visitor.visitSingularMessageField(value: v, fieldNumber: 140) }() case .updateSuperProperty?: try { guard case .updateSuperProperty(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 137) + try visitor.visitSingularMessageField(value: v, fieldNumber: 141) }() case .beginIf?: try { guard case .beginIf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 138) + try visitor.visitSingularMessageField(value: v, fieldNumber: 142) }() case .beginElse?: try { guard case .beginElse(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 139) + try visitor.visitSingularMessageField(value: v, fieldNumber: 143) }() case .endIf?: try { guard case .endIf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 140) + try visitor.visitSingularMessageField(value: v, fieldNumber: 144) }() case .beginWhileLoopHeader?: try { guard case .beginWhileLoopHeader(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 141) + try visitor.visitSingularMessageField(value: v, fieldNumber: 145) }() case .beginWhileLoopBody?: try { guard case .beginWhileLoopBody(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 142) + try visitor.visitSingularMessageField(value: v, fieldNumber: 146) }() case .endWhileLoop?: try { guard case .endWhileLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 143) + try visitor.visitSingularMessageField(value: v, fieldNumber: 147) }() case .beginDoWhileLoopBody?: try { guard case .beginDoWhileLoopBody(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 144) + try visitor.visitSingularMessageField(value: v, fieldNumber: 148) }() case .beginDoWhileLoopHeader?: try { guard case .beginDoWhileLoopHeader(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 145) + try visitor.visitSingularMessageField(value: v, fieldNumber: 149) }() case .endDoWhileLoop?: try { guard case .endDoWhileLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 146) + try visitor.visitSingularMessageField(value: v, fieldNumber: 150) }() case .beginForLoopInitializer?: try { guard case .beginForLoopInitializer(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 147) + try visitor.visitSingularMessageField(value: v, fieldNumber: 151) }() case .beginForLoopCondition?: try { guard case .beginForLoopCondition(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 148) + try visitor.visitSingularMessageField(value: v, fieldNumber: 152) }() case .beginForLoopAfterthought?: try { guard case .beginForLoopAfterthought(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 149) + try visitor.visitSingularMessageField(value: v, fieldNumber: 153) }() case .beginForLoopBody?: try { guard case .beginForLoopBody(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 150) + try visitor.visitSingularMessageField(value: v, fieldNumber: 154) }() case .endForLoop?: try { guard case .endForLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 151) + try visitor.visitSingularMessageField(value: v, fieldNumber: 155) }() case .beginForInLoop?: try { guard case .beginForInLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 152) + try visitor.visitSingularMessageField(value: v, fieldNumber: 156) }() case .endForInLoop?: try { guard case .endForInLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 153) + try visitor.visitSingularMessageField(value: v, fieldNumber: 157) }() case .beginForOfLoop?: try { guard case .beginForOfLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 154) + try visitor.visitSingularMessageField(value: v, fieldNumber: 158) }() case .beginForOfLoopWithDestruct?: try { guard case .beginForOfLoopWithDestruct(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 155) + try visitor.visitSingularMessageField(value: v, fieldNumber: 159) }() case .endForOfLoop?: try { guard case .endForOfLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 156) + try visitor.visitSingularMessageField(value: v, fieldNumber: 160) }() case .beginRepeatLoop?: try { guard case .beginRepeatLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 157) + try visitor.visitSingularMessageField(value: v, fieldNumber: 161) }() case .endRepeatLoop?: try { guard case .endRepeatLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 158) + try visitor.visitSingularMessageField(value: v, fieldNumber: 162) }() case .loopBreak?: try { guard case .loopBreak(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 159) + try visitor.visitSingularMessageField(value: v, fieldNumber: 163) }() case .loopContinue?: try { guard case .loopContinue(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 160) + try visitor.visitSingularMessageField(value: v, fieldNumber: 164) }() case .beginTry?: try { guard case .beginTry(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 161) + try visitor.visitSingularMessageField(value: v, fieldNumber: 165) }() case .beginCatch?: try { guard case .beginCatch(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 162) + try visitor.visitSingularMessageField(value: v, fieldNumber: 166) }() case .beginFinally?: try { guard case .beginFinally(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 163) + try visitor.visitSingularMessageField(value: v, fieldNumber: 167) }() case .endTryCatchFinally?: try { guard case .endTryCatchFinally(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 164) + try visitor.visitSingularMessageField(value: v, fieldNumber: 168) }() case .throwException?: try { guard case .throwException(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 165) + try visitor.visitSingularMessageField(value: v, fieldNumber: 169) }() case .beginCodeString?: try { guard case .beginCodeString(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 166) + try visitor.visitSingularMessageField(value: v, fieldNumber: 170) }() case .endCodeString?: try { guard case .endCodeString(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 167) + try visitor.visitSingularMessageField(value: v, fieldNumber: 171) }() case .beginBlockStatement?: try { guard case .beginBlockStatement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 168) + try visitor.visitSingularMessageField(value: v, fieldNumber: 172) }() case .endBlockStatement?: try { guard case .endBlockStatement(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 169) + try visitor.visitSingularMessageField(value: v, fieldNumber: 173) }() case .beginSwitch?: try { guard case .beginSwitch(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 170) + try visitor.visitSingularMessageField(value: v, fieldNumber: 174) }() case .beginSwitchCase?: try { guard case .beginSwitchCase(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 171) + try visitor.visitSingularMessageField(value: v, fieldNumber: 175) }() case .beginSwitchDefaultCase?: try { guard case .beginSwitchDefaultCase(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 172) + try visitor.visitSingularMessageField(value: v, fieldNumber: 176) }() case .endSwitchCase?: try { guard case .endSwitchCase(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 173) + try visitor.visitSingularMessageField(value: v, fieldNumber: 177) }() case .endSwitch?: try { guard case .endSwitch(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 174) + try visitor.visitSingularMessageField(value: v, fieldNumber: 178) }() case .switchBreak?: try { guard case .switchBreak(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 175) + try visitor.visitSingularMessageField(value: v, fieldNumber: 179) }() case .loadNewTarget?: try { guard case .loadNewTarget(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 176) + try visitor.visitSingularMessageField(value: v, fieldNumber: 180) }() case .print?: try { guard case .print(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 177) + try visitor.visitSingularMessageField(value: v, fieldNumber: 181) }() case .explore?: try { guard case .explore(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 178) + try visitor.visitSingularMessageField(value: v, fieldNumber: 182) }() case .probe?: try { guard case .probe(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 179) + try visitor.visitSingularMessageField(value: v, fieldNumber: 183) }() case .fixup?: try { guard case .fixup(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 180) + try visitor.visitSingularMessageField(value: v, fieldNumber: 184) }() case .beginWasmModule?: try { guard case .beginWasmModule(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 181) + try visitor.visitSingularMessageField(value: v, fieldNumber: 185) }() case .endWasmModule?: try { guard case .endWasmModule(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 182) + try visitor.visitSingularMessageField(value: v, fieldNumber: 186) }() case .createWasmGlobal?: try { guard case .createWasmGlobal(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 183) + try visitor.visitSingularMessageField(value: v, fieldNumber: 187) }() case .createWasmMemory?: try { guard case .createWasmMemory(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 184) + try visitor.visitSingularMessageField(value: v, fieldNumber: 188) }() case .createWasmTable?: try { guard case .createWasmTable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 185) + try visitor.visitSingularMessageField(value: v, fieldNumber: 189) }() case .createWasmJstag?: try { guard case .createWasmJstag(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 186) + try visitor.visitSingularMessageField(value: v, fieldNumber: 190) }() case .createWasmTag?: try { guard case .createWasmTag(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 187) + try visitor.visitSingularMessageField(value: v, fieldNumber: 191) }() case .wrapPromising?: try { guard case .wrapPromising(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 188) + try visitor.visitSingularMessageField(value: v, fieldNumber: 192) }() case .wrapSuspending?: try { guard case .wrapSuspending(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 189) + try visitor.visitSingularMessageField(value: v, fieldNumber: 193) }() case .bindMethod?: try { guard case .bindMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 190) + try visitor.visitSingularMessageField(value: v, fieldNumber: 194) }() case .bindFunction?: try { guard case .bindFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 191) + try visitor.visitSingularMessageField(value: v, fieldNumber: 195) }() case .consti64?: try { guard case .consti64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 192) + try visitor.visitSingularMessageField(value: v, fieldNumber: 196) }() case .consti32?: try { guard case .consti32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 193) + try visitor.visitSingularMessageField(value: v, fieldNumber: 197) }() case .constf32?: try { guard case .constf32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 194) + try visitor.visitSingularMessageField(value: v, fieldNumber: 198) }() case .constf64?: try { guard case .constf64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 195) + try visitor.visitSingularMessageField(value: v, fieldNumber: 199) }() case .wasmReturn?: try { guard case .wasmReturn(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 196) + try visitor.visitSingularMessageField(value: v, fieldNumber: 200) }() case .wasmJsCall?: try { guard case .wasmJsCall(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 197) + try visitor.visitSingularMessageField(value: v, fieldNumber: 201) }() case .wasmi32CompareOp?: try { guard case .wasmi32CompareOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 198) + try visitor.visitSingularMessageField(value: v, fieldNumber: 202) }() case .wasmi64CompareOp?: try { guard case .wasmi64CompareOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 199) + try visitor.visitSingularMessageField(value: v, fieldNumber: 203) }() case .wasmf32CompareOp?: try { guard case .wasmf32CompareOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 200) + try visitor.visitSingularMessageField(value: v, fieldNumber: 204) }() case .wasmf64CompareOp?: try { guard case .wasmf64CompareOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 201) + try visitor.visitSingularMessageField(value: v, fieldNumber: 205) }() case .wasmi32EqualZero?: try { guard case .wasmi32EqualZero(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 202) + try visitor.visitSingularMessageField(value: v, fieldNumber: 206) }() case .wasmi64EqualZero?: try { guard case .wasmi64EqualZero(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 203) + try visitor.visitSingularMessageField(value: v, fieldNumber: 207) }() case .wasmi32BinOp?: try { guard case .wasmi32BinOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 204) + try visitor.visitSingularMessageField(value: v, fieldNumber: 208) }() case .wasmi64BinOp?: try { guard case .wasmi64BinOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 205) + try visitor.visitSingularMessageField(value: v, fieldNumber: 209) }() case .wasmi32UnOp?: try { guard case .wasmi32UnOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 206) + try visitor.visitSingularMessageField(value: v, fieldNumber: 210) }() case .wasmi64UnOp?: try { guard case .wasmi64UnOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 207) + try visitor.visitSingularMessageField(value: v, fieldNumber: 211) }() case .wasmf32BinOp?: try { guard case .wasmf32BinOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 208) + try visitor.visitSingularMessageField(value: v, fieldNumber: 212) }() case .wasmf64BinOp?: try { guard case .wasmf64BinOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 209) + try visitor.visitSingularMessageField(value: v, fieldNumber: 213) }() case .wasmf32UnOp?: try { guard case .wasmf32UnOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 210) + try visitor.visitSingularMessageField(value: v, fieldNumber: 214) }() case .wasmf64UnOp?: try { guard case .wasmf64UnOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 211) + try visitor.visitSingularMessageField(value: v, fieldNumber: 215) }() case .wasmWrapi64Toi32?: try { guard case .wasmWrapi64Toi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 212) + try visitor.visitSingularMessageField(value: v, fieldNumber: 216) }() case .wasmTruncatef32Toi32?: try { guard case .wasmTruncatef32Toi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 213) + try visitor.visitSingularMessageField(value: v, fieldNumber: 217) }() case .wasmTruncatef64Toi32?: try { guard case .wasmTruncatef64Toi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 214) + try visitor.visitSingularMessageField(value: v, fieldNumber: 218) }() case .wasmExtendi32Toi64?: try { guard case .wasmExtendi32Toi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 215) + try visitor.visitSingularMessageField(value: v, fieldNumber: 219) }() case .wasmTruncatef32Toi64?: try { guard case .wasmTruncatef32Toi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 216) + try visitor.visitSingularMessageField(value: v, fieldNumber: 220) }() case .wasmTruncatef64Toi64?: try { guard case .wasmTruncatef64Toi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 217) + try visitor.visitSingularMessageField(value: v, fieldNumber: 221) }() case .wasmConverti32Tof32?: try { guard case .wasmConverti32Tof32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 218) + try visitor.visitSingularMessageField(value: v, fieldNumber: 222) }() case .wasmConverti64Tof32?: try { guard case .wasmConverti64Tof32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 219) + try visitor.visitSingularMessageField(value: v, fieldNumber: 223) }() case .wasmDemotef64Tof32?: try { guard case .wasmDemotef64Tof32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 220) + try visitor.visitSingularMessageField(value: v, fieldNumber: 224) }() case .wasmConverti32Tof64?: try { guard case .wasmConverti32Tof64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 221) + try visitor.visitSingularMessageField(value: v, fieldNumber: 225) }() case .wasmConverti64Tof64?: try { guard case .wasmConverti64Tof64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 222) + try visitor.visitSingularMessageField(value: v, fieldNumber: 226) }() case .wasmPromotef32Tof64?: try { guard case .wasmPromotef32Tof64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 223) + try visitor.visitSingularMessageField(value: v, fieldNumber: 227) }() case .wasmReinterpretf32Asi32?: try { guard case .wasmReinterpretf32Asi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 224) + try visitor.visitSingularMessageField(value: v, fieldNumber: 228) }() case .wasmReinterpretf64Asi64?: try { guard case .wasmReinterpretf64Asi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 225) + try visitor.visitSingularMessageField(value: v, fieldNumber: 229) }() case .wasmReinterpreti32Asf32?: try { guard case .wasmReinterpreti32Asf32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 226) + try visitor.visitSingularMessageField(value: v, fieldNumber: 230) }() case .wasmReinterpreti64Asf64?: try { guard case .wasmReinterpreti64Asf64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 227) + try visitor.visitSingularMessageField(value: v, fieldNumber: 231) }() case .wasmSignExtend8Intoi32?: try { guard case .wasmSignExtend8Intoi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 228) + try visitor.visitSingularMessageField(value: v, fieldNumber: 232) }() case .wasmSignExtend16Intoi32?: try { guard case .wasmSignExtend16Intoi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 229) + try visitor.visitSingularMessageField(value: v, fieldNumber: 233) }() case .wasmSignExtend8Intoi64?: try { guard case .wasmSignExtend8Intoi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 230) + try visitor.visitSingularMessageField(value: v, fieldNumber: 234) }() case .wasmSignExtend16Intoi64?: try { guard case .wasmSignExtend16Intoi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 231) + try visitor.visitSingularMessageField(value: v, fieldNumber: 235) }() case .wasmSignExtend32Intoi64?: try { guard case .wasmSignExtend32Intoi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 232) + try visitor.visitSingularMessageField(value: v, fieldNumber: 236) }() case .wasmTruncateSatf32Toi32?: try { guard case .wasmTruncateSatf32Toi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 233) + try visitor.visitSingularMessageField(value: v, fieldNumber: 237) }() case .wasmTruncateSatf64Toi32?: try { guard case .wasmTruncateSatf64Toi32(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 234) + try visitor.visitSingularMessageField(value: v, fieldNumber: 238) }() case .wasmTruncateSatf32Toi64?: try { guard case .wasmTruncateSatf32Toi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 235) + try visitor.visitSingularMessageField(value: v, fieldNumber: 239) }() case .wasmTruncateSatf64Toi64?: try { guard case .wasmTruncateSatf64Toi64(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 236) + try visitor.visitSingularMessageField(value: v, fieldNumber: 240) }() case .wasmReassign?: try { guard case .wasmReassign(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 237) + try visitor.visitSingularMessageField(value: v, fieldNumber: 241) }() case .wasmDefineGlobal?: try { guard case .wasmDefineGlobal(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 238) + try visitor.visitSingularMessageField(value: v, fieldNumber: 242) }() case .wasmDefineTable?: try { guard case .wasmDefineTable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 239) + try visitor.visitSingularMessageField(value: v, fieldNumber: 243) }() case .wasmDefineMemory?: try { guard case .wasmDefineMemory(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 240) + try visitor.visitSingularMessageField(value: v, fieldNumber: 244) }() case .wasmDefineDataSegment?: try { guard case .wasmDefineDataSegment(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 241) + try visitor.visitSingularMessageField(value: v, fieldNumber: 245) }() case .wasmLoadGlobal?: try { guard case .wasmLoadGlobal(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 242) + try visitor.visitSingularMessageField(value: v, fieldNumber: 246) }() case .wasmStoreGlobal?: try { guard case .wasmStoreGlobal(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 243) + try visitor.visitSingularMessageField(value: v, fieldNumber: 247) }() case .wasmTableGet?: try { guard case .wasmTableGet(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 244) + try visitor.visitSingularMessageField(value: v, fieldNumber: 248) }() case .wasmTableSet?: try { guard case .wasmTableSet(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 245) + try visitor.visitSingularMessageField(value: v, fieldNumber: 249) }() case .wasmTableSize?: try { guard case .wasmTableSize(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 246) + try visitor.visitSingularMessageField(value: v, fieldNumber: 250) }() case .wasmTableGrow?: try { guard case .wasmTableGrow(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 247) + try visitor.visitSingularMessageField(value: v, fieldNumber: 251) }() case .wasmCallIndirect?: try { guard case .wasmCallIndirect(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 248) + try visitor.visitSingularMessageField(value: v, fieldNumber: 252) }() case .wasmCallDirect?: try { guard case .wasmCallDirect(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 249) + try visitor.visitSingularMessageField(value: v, fieldNumber: 253) }() case .wasmReturnCallDirect?: try { guard case .wasmReturnCallDirect(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 250) + try visitor.visitSingularMessageField(value: v, fieldNumber: 254) }() case .wasmReturnCallIndirect?: try { guard case .wasmReturnCallIndirect(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 251) + try visitor.visitSingularMessageField(value: v, fieldNumber: 255) }() case .wasmMemoryLoad?: try { guard case .wasmMemoryLoad(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 252) + try visitor.visitSingularMessageField(value: v, fieldNumber: 256) }() case .wasmMemoryStore?: try { guard case .wasmMemoryStore(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 253) + try visitor.visitSingularMessageField(value: v, fieldNumber: 257) }() case .wasmAtomicLoad?: try { guard case .wasmAtomicLoad(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 254) + try visitor.visitSingularMessageField(value: v, fieldNumber: 258) }() case .wasmAtomicStore?: try { guard case .wasmAtomicStore(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 255) + try visitor.visitSingularMessageField(value: v, fieldNumber: 259) }() case .wasmAtomicRmw?: try { guard case .wasmAtomicRmw(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 256) + try visitor.visitSingularMessageField(value: v, fieldNumber: 260) }() case .wasmAtomicCmpxchg?: try { guard case .wasmAtomicCmpxchg(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 257) + try visitor.visitSingularMessageField(value: v, fieldNumber: 261) }() case .wasmMemorySize?: try { guard case .wasmMemorySize(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 258) + try visitor.visitSingularMessageField(value: v, fieldNumber: 262) }() case .wasmMemoryGrow?: try { guard case .wasmMemoryGrow(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 259) + try visitor.visitSingularMessageField(value: v, fieldNumber: 263) }() case .wasmMemoryFill?: try { guard case .wasmMemoryFill(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 260) + try visitor.visitSingularMessageField(value: v, fieldNumber: 264) }() case .wasmMemoryInit?: try { guard case .wasmMemoryInit(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 261) + try visitor.visitSingularMessageField(value: v, fieldNumber: 265) }() case .wasmDropDataSegment?: try { guard case .wasmDropDataSegment(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 262) + try visitor.visitSingularMessageField(value: v, fieldNumber: 266) }() case .beginWasmFunction?: try { guard case .beginWasmFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 263) + try visitor.visitSingularMessageField(value: v, fieldNumber: 267) }() case .endWasmFunction?: try { guard case .endWasmFunction(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 264) + try visitor.visitSingularMessageField(value: v, fieldNumber: 268) }() case .wasmBeginBlock?: try { guard case .wasmBeginBlock(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 265) + try visitor.visitSingularMessageField(value: v, fieldNumber: 269) }() case .wasmEndBlock?: try { guard case .wasmEndBlock(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 266) + try visitor.visitSingularMessageField(value: v, fieldNumber: 270) }() case .wasmBeginLoop?: try { guard case .wasmBeginLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 267) + try visitor.visitSingularMessageField(value: v, fieldNumber: 271) }() case .wasmEndLoop?: try { guard case .wasmEndLoop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 268) + try visitor.visitSingularMessageField(value: v, fieldNumber: 272) }() case .wasmBranch?: try { guard case .wasmBranch(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 269) + try visitor.visitSingularMessageField(value: v, fieldNumber: 273) }() case .wasmBranchIf?: try { guard case .wasmBranchIf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 270) + try visitor.visitSingularMessageField(value: v, fieldNumber: 274) }() case .wasmBranchTable?: try { guard case .wasmBranchTable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 271) + try visitor.visitSingularMessageField(value: v, fieldNumber: 275) }() case .wasmNop?: try { guard case .wasmNop(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 272) + try visitor.visitSingularMessageField(value: v, fieldNumber: 276) }() case .wasmBeginIf?: try { guard case .wasmBeginIf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 273) + try visitor.visitSingularMessageField(value: v, fieldNumber: 277) }() case .wasmBeginElse?: try { guard case .wasmBeginElse(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 274) + try visitor.visitSingularMessageField(value: v, fieldNumber: 278) }() case .wasmEndIf?: try { guard case .wasmEndIf(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 275) + try visitor.visitSingularMessageField(value: v, fieldNumber: 279) }() case .wasmBeginTryTable?: try { guard case .wasmBeginTryTable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 276) + try visitor.visitSingularMessageField(value: v, fieldNumber: 280) }() case .wasmEndTryTable?: try { guard case .wasmEndTryTable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 277) + try visitor.visitSingularMessageField(value: v, fieldNumber: 281) }() case .wasmBeginTry?: try { guard case .wasmBeginTry(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 278) + try visitor.visitSingularMessageField(value: v, fieldNumber: 282) }() case .wasmBeginCatchAll?: try { guard case .wasmBeginCatchAll(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 279) + try visitor.visitSingularMessageField(value: v, fieldNumber: 283) }() case .wasmBeginCatch?: try { guard case .wasmBeginCatch(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 280) + try visitor.visitSingularMessageField(value: v, fieldNumber: 284) }() case .wasmEndTry?: try { guard case .wasmEndTry(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 281) + try visitor.visitSingularMessageField(value: v, fieldNumber: 285) }() case .wasmBeginTryDelegate?: try { guard case .wasmBeginTryDelegate(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 282) + try visitor.visitSingularMessageField(value: v, fieldNumber: 286) }() case .wasmEndTryDelegate?: try { guard case .wasmEndTryDelegate(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 283) + try visitor.visitSingularMessageField(value: v, fieldNumber: 287) }() case .wasmThrow?: try { guard case .wasmThrow(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 284) + try visitor.visitSingularMessageField(value: v, fieldNumber: 288) }() case .wasmRethrow?: try { guard case .wasmRethrow(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 285) + try visitor.visitSingularMessageField(value: v, fieldNumber: 289) }() case .wasmThrowRef?: try { guard case .wasmThrowRef(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 286) + try visitor.visitSingularMessageField(value: v, fieldNumber: 290) }() case .wasmDefineTag?: try { guard case .wasmDefineTag(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 287) + try visitor.visitSingularMessageField(value: v, fieldNumber: 291) }() case .constSimd128?: try { guard case .constSimd128(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 288) + try visitor.visitSingularMessageField(value: v, fieldNumber: 292) }() case .wasmSimd128Compare?: try { guard case .wasmSimd128Compare(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 289) + try visitor.visitSingularMessageField(value: v, fieldNumber: 293) }() case .wasmSimd128IntegerUnOp?: try { guard case .wasmSimd128IntegerUnOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 290) + try visitor.visitSingularMessageField(value: v, fieldNumber: 294) }() case .wasmSimd128IntegerBinOp?: try { guard case .wasmSimd128IntegerBinOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 291) + try visitor.visitSingularMessageField(value: v, fieldNumber: 295) }() case .wasmSimd128IntegerTernaryOp?: try { guard case .wasmSimd128IntegerTernaryOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 292) + try visitor.visitSingularMessageField(value: v, fieldNumber: 296) }() case .wasmSimd128FloatUnOp?: try { guard case .wasmSimd128FloatUnOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 293) + try visitor.visitSingularMessageField(value: v, fieldNumber: 297) }() case .wasmSimd128FloatBinOp?: try { guard case .wasmSimd128FloatBinOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 294) + try visitor.visitSingularMessageField(value: v, fieldNumber: 298) }() case .wasmSimd128FloatTernaryOp?: try { guard case .wasmSimd128FloatTernaryOp(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 295) + try visitor.visitSingularMessageField(value: v, fieldNumber: 299) }() case .wasmSimdSplat?: try { guard case .wasmSimdSplat(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 296) + try visitor.visitSingularMessageField(value: v, fieldNumber: 300) }() case .wasmSimdExtractLane?: try { guard case .wasmSimdExtractLane(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 297) + try visitor.visitSingularMessageField(value: v, fieldNumber: 301) }() case .wasmSimdReplaceLane?: try { guard case .wasmSimdReplaceLane(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 298) + try visitor.visitSingularMessageField(value: v, fieldNumber: 302) }() case .wasmSimdStoreLane?: try { guard case .wasmSimdStoreLane(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 299) + try visitor.visitSingularMessageField(value: v, fieldNumber: 303) }() case .wasmSimdLoadLane?: try { guard case .wasmSimdLoadLane(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 300) + try visitor.visitSingularMessageField(value: v, fieldNumber: 304) }() case .wasmSimdLoad?: try { guard case .wasmSimdLoad(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 301) + try visitor.visitSingularMessageField(value: v, fieldNumber: 305) }() case .wasmUnreachable?: try { guard case .wasmUnreachable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 302) + try visitor.visitSingularMessageField(value: v, fieldNumber: 306) }() case .wasmSelect?: try { guard case .wasmSelect(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 303) + try visitor.visitSingularMessageField(value: v, fieldNumber: 307) }() case .wasmBeginTypeGroup?: try { guard case .wasmBeginTypeGroup(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 304) + try visitor.visitSingularMessageField(value: v, fieldNumber: 308) }() case .wasmEndTypeGroup?: try { guard case .wasmEndTypeGroup(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 305) + try visitor.visitSingularMessageField(value: v, fieldNumber: 309) }() case .wasmDefineArrayType?: try { guard case .wasmDefineArrayType(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 306) + try visitor.visitSingularMessageField(value: v, fieldNumber: 310) }() case .wasmDefineStructType?: try { guard case .wasmDefineStructType(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 307) + try visitor.visitSingularMessageField(value: v, fieldNumber: 311) }() case .wasmDefineForwardOrSelfReference?: try { guard case .wasmDefineForwardOrSelfReference(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 308) + try visitor.visitSingularMessageField(value: v, fieldNumber: 312) }() case .wasmResolveForwardReference?: try { guard case .wasmResolveForwardReference(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 309) + try visitor.visitSingularMessageField(value: v, fieldNumber: 313) }() case .wasmArrayNewFixed?: try { guard case .wasmArrayNewFixed(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 310) + try visitor.visitSingularMessageField(value: v, fieldNumber: 314) }() case .wasmArrayNewDefault?: try { guard case .wasmArrayNewDefault(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 311) + try visitor.visitSingularMessageField(value: v, fieldNumber: 315) }() case .wasmArrayLen?: try { guard case .wasmArrayLen(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 312) + try visitor.visitSingularMessageField(value: v, fieldNumber: 316) }() case .wasmArrayGet?: try { guard case .wasmArrayGet(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 313) + try visitor.visitSingularMessageField(value: v, fieldNumber: 317) }() case .wasmArraySet?: try { guard case .wasmArraySet(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 314) + try visitor.visitSingularMessageField(value: v, fieldNumber: 318) }() case .wasmStructNewDefault?: try { guard case .wasmStructNewDefault(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 315) + try visitor.visitSingularMessageField(value: v, fieldNumber: 319) }() case .wasmStructGet?: try { guard case .wasmStructGet(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 316) + try visitor.visitSingularMessageField(value: v, fieldNumber: 320) }() case .wasmStructSet?: try { guard case .wasmStructSet(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 317) + try visitor.visitSingularMessageField(value: v, fieldNumber: 321) }() case .wasmRefNull?: try { guard case .wasmRefNull(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 318) + try visitor.visitSingularMessageField(value: v, fieldNumber: 322) }() case .wasmRefIsNull?: try { guard case .wasmRefIsNull(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 319) + try visitor.visitSingularMessageField(value: v, fieldNumber: 323) }() case .wasmRefI31?: try { guard case .wasmRefI31(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 320) + try visitor.visitSingularMessageField(value: v, fieldNumber: 324) }() case .wasmI31Get?: try { guard case .wasmI31Get(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 321) + try visitor.visitSingularMessageField(value: v, fieldNumber: 325) }() case .wasmAnyConvertExtern?: try { guard case .wasmAnyConvertExtern(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 322) + try visitor.visitSingularMessageField(value: v, fieldNumber: 326) }() case .wasmExternConvertAny?: try { guard case .wasmExternConvertAny(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 323) + try visitor.visitSingularMessageField(value: v, fieldNumber: 327) }() case .wasmMemoryCopy?: try { guard case .wasmMemoryCopy(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 324) + try visitor.visitSingularMessageField(value: v, fieldNumber: 328) }() case .wasmDefineElementSegment?: try { guard case .wasmDefineElementSegment(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 325) + try visitor.visitSingularMessageField(value: v, fieldNumber: 329) }() case .wasmTableInit?: try { guard case .wasmTableInit(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 326) + try visitor.visitSingularMessageField(value: v, fieldNumber: 330) }() case .wasmDropElementSegment?: try { guard case .wasmDropElementSegment(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 327) + try visitor.visitSingularMessageField(value: v, fieldNumber: 331) }() case .wasmTableCopy?: try { guard case .wasmTableCopy(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 328) + try visitor.visitSingularMessageField(value: v, fieldNumber: 332) }() case .wasmDefineSignatureType?: try { guard case .wasmDefineSignatureType(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 329) + try visitor.visitSingularMessageField(value: v, fieldNumber: 333) }() case .createNamedDisposableVariable?: try { guard case .createNamedDisposableVariable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 330) + try visitor.visitSingularMessageField(value: v, fieldNumber: 334) }() case .createNamedAsyncDisposableVariable?: try { guard case .createNamedAsyncDisposableVariable(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 331) - }() - case .beginClassInstanceComputedMethod?: try { - guard case .beginClassInstanceComputedMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 332) - }() - case .endClassInstanceComputedMethod?: try { - guard case .endClassInstanceComputedMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 333) - }() - case .beginClassStaticComputedMethod?: try { - guard case .beginClassStaticComputedMethod(let v)? = self.operation else { preconditionFailure() } - try visitor.visitSingularMessageField(value: v, fieldNumber: 334) - }() - case .endClassStaticComputedMethod?: try { - guard case .endClassStaticComputedMethod(let v)? = self.operation else { preconditionFailure() } try visitor.visitSingularMessageField(value: v, fieldNumber: 335) }() case nil: break diff --git a/Sources/Fuzzilli/Protobuf/program.proto b/Sources/Fuzzilli/Protobuf/program.proto index 46c3f7a9c..0582386bf 100755 --- a/Sources/Fuzzilli/Protobuf/program.proto +++ b/Sources/Fuzzilli/Protobuf/program.proto @@ -63,302 +63,302 @@ message Instruction { ClassAddInstanceComputedProperty classAddInstanceComputedProperty = 37; BeginClassInstanceMethod beginClassInstanceMethod = 38; EndClassInstanceMethod endClassInstanceMethod = 39; - BeginClassInstanceGetter beginClassInstanceGetter = 40; - EndClassInstanceGetter endClassInstanceGetter = 41; - BeginClassInstanceSetter beginClassInstanceSetter = 42; - EndClassInstanceSetter endClassInstanceSetter = 43; - ClassAddStaticProperty classAddStaticProperty = 44; - ClassAddStaticElement classAddStaticElement = 45; - ClassAddStaticComputedProperty classAddStaticComputedProperty = 46; - BeginClassStaticInitializer beginClassStaticInitializer = 47; - EndClassStaticInitializer endClassStaticInitializer = 48; - BeginClassStaticMethod beginClassStaticMethod = 49; - EndClassStaticMethod endClassStaticMethod = 50; - BeginClassStaticGetter beginClassStaticGetter = 51; - EndClassStaticGetter endClassStaticGetter = 52; - BeginClassStaticSetter beginClassStaticSetter = 53; - EndClassStaticSetter endClassStaticSetter = 54; - ClassAddPrivateInstanceProperty classAddPrivateInstanceProperty = 55; - BeginClassPrivateInstanceMethod beginClassPrivateInstanceMethod = 56; - EndClassPrivateInstanceMethod endClassPrivateInstanceMethod = 57; - ClassAddPrivateStaticProperty classAddPrivateStaticProperty = 58; - BeginClassPrivateStaticMethod beginClassPrivateStaticMethod = 59; - EndClassPrivateStaticMethod endClassPrivateStaticMethod = 60; - EndClassDefinition endClassDefinition = 61; - CreateArray createArray = 62; - CreateIntArray createIntArray = 63; - CreateFloatArray createFloatArray = 64; - CreateArrayWithSpread createArrayWithSpread = 65; - CreateTemplateString createTemplateString = 66; - GetProperty getProperty = 67; - SetProperty setProperty = 68; - UpdateProperty updateProperty = 69; - DeleteProperty deleteProperty = 70; - ConfigureProperty configureProperty = 71; - GetElement getElement = 72; - SetElement setElement = 73; - UpdateElement updateElement = 74; - DeleteElement deleteElement = 75; - ConfigureElement configureElement = 76; - GetComputedProperty getComputedProperty = 77; - SetComputedProperty setComputedProperty = 78; - UpdateComputedProperty updateComputedProperty = 79; - DeleteComputedProperty deleteComputedProperty = 80; - ConfigureComputedProperty configureComputedProperty = 81; - TypeOf typeOf = 82; - Void void = 83; - TestInstanceOf testInstanceOf = 84; - TestIn testIn = 85; - BeginPlainFunction beginPlainFunction = 86; - EndPlainFunction endPlainFunction = 87; - BeginArrowFunction beginArrowFunction = 88; - EndArrowFunction endArrowFunction = 89; - BeginGeneratorFunction beginGeneratorFunction = 90; - EndGeneratorFunction endGeneratorFunction = 91; - BeginAsyncFunction beginAsyncFunction = 92; - EndAsyncFunction endAsyncFunction = 93; - BeginAsyncArrowFunction beginAsyncArrowFunction = 94; - EndAsyncArrowFunction endAsyncArrowFunction = 95; - BeginAsyncGeneratorFunction beginAsyncGeneratorFunction = 96; - EndAsyncGeneratorFunction endAsyncGeneratorFunction = 97; - BeginConstructor beginConstructor = 98; - EndConstructor endConstructor = 99; - Directive directive = 100; - Return return = 101; - Yield yield = 102; - YieldEach yieldEach = 103; - Await await = 104; - CallFunction callFunction = 105; - CallFunctionWithSpread callFunctionWithSpread = 106; - Construct construct = 107; - ConstructWithSpread constructWithSpread = 108; - CallMethod callMethod = 109; - CallMethodWithSpread callMethodWithSpread = 110; - CallComputedMethod callComputedMethod = 111; - CallComputedMethodWithSpread callComputedMethodWithSpread = 112; - UnaryOperation unaryOperation = 113; - BinaryOperation binaryOperation = 114; - TernaryOperation ternaryOperation = 115; - Update update = 116; - Dup dup = 117; - Reassign reassign = 118; - DestructArray destructArray = 119; - DestructArrayAndReassign destructArrayAndReassign = 120; - DestructObject destructObject = 121; - DestructObjectAndReassign destructObjectAndReassign = 122; - Compare compare = 123; - Eval eval = 124; - BeginWith beginWith = 125; - EndWith endWith = 126; - CallSuperConstructor callSuperConstructor = 127; - CallSuperMethod callSuperMethod = 128; - GetPrivateProperty getPrivateProperty = 129; - SetPrivateProperty setPrivateProperty = 130; - UpdatePrivateProperty updatePrivateProperty = 131; - CallPrivateMethod callPrivateMethod = 132; - GetSuperProperty getSuperProperty = 133; - SetSuperProperty setSuperProperty = 134; - GetComputedSuperProperty getComputedSuperProperty = 135; - SetComputedSuperProperty setComputedSuperProperty = 136; - UpdateSuperProperty updateSuperProperty = 137; - BeginIf beginIf = 138; - BeginElse beginElse = 139; - EndIf endIf = 140; - BeginWhileLoopHeader beginWhileLoopHeader = 141; - BeginWhileLoopBody beginWhileLoopBody = 142; - EndWhileLoop endWhileLoop = 143; - BeginDoWhileLoopBody beginDoWhileLoopBody = 144; - BeginDoWhileLoopHeader beginDoWhileLoopHeader = 145; - EndDoWhileLoop endDoWhileLoop = 146; - BeginForLoopInitializer beginForLoopInitializer = 147; - BeginForLoopCondition beginForLoopCondition = 148; - BeginForLoopAfterthought beginForLoopAfterthought = 149; - BeginForLoopBody beginForLoopBody = 150; - EndForLoop endForLoop = 151; - BeginForInLoop beginForInLoop = 152; - EndForInLoop endForInLoop = 153; - BeginForOfLoop beginForOfLoop = 154; - BeginForOfLoopWithDestruct beginForOfLoopWithDestruct = 155; - EndForOfLoop endForOfLoop = 156; - BeginRepeatLoop beginRepeatLoop = 157; - EndRepeatLoop endRepeatLoop = 158; - LoopBreak loopBreak = 159; - LoopContinue loopContinue = 160; - BeginTry beginTry = 161; - BeginCatch beginCatch = 162; - BeginFinally beginFinally = 163; - EndTryCatchFinally endTryCatchFinally = 164; - ThrowException throwException = 165; - BeginCodeString beginCodeString = 166; - EndCodeString endCodeString = 167; - BeginBlockStatement beginBlockStatement = 168; - EndBlockStatement endBlockStatement = 169; - BeginSwitch beginSwitch = 170; - BeginSwitchCase beginSwitchCase = 171; - BeginSwitchDefaultCase beginSwitchDefaultCase = 172; - EndSwitchCase endSwitchCase = 173; - EndSwitch endSwitch = 174; - SwitchBreak switchBreak = 175; - LoadNewTarget loadNewTarget = 176; - Print print = 177; - Explore explore = 178; - Probe probe = 179; - Fixup fixup = 180; - BeginWasmModule beginWasmModule = 181; - EndWasmModule endWasmModule = 182; - CreateWasmGlobal createWasmGlobal = 183; - CreateWasmMemory createWasmMemory = 184; - CreateWasmTable createWasmTable = 185; - CreateWasmJSTag createWasmJSTag = 186; - CreateWasmTag createWasmTag = 187; - WrapPromising wrapPromising = 188; - WrapSuspending wrapSuspending = 189; - BindMethod bindMethod = 190; - BindFunction bindFunction = 191; - Consti64 consti64 = 192; - Consti32 consti32 = 193; - Constf32 constf32 = 194; - Constf64 constf64 = 195; - WasmReturn wasmReturn = 196; - WasmJsCall wasmJsCall = 197; - Wasmi32CompareOp wasmi32CompareOp = 198; - Wasmi64CompareOp wasmi64CompareOp = 199; - Wasmf32CompareOp wasmf32CompareOp = 200; - Wasmf64CompareOp wasmf64CompareOp = 201; - Wasmi32EqualZero wasmi32EqualZero = 202; - Wasmi64EqualZero wasmi64EqualZero = 203; - Wasmi32BinOp wasmi32BinOp = 204; - Wasmi64BinOp wasmi64BinOp = 205; - Wasmi32UnOp wasmi32UnOp = 206; - Wasmi64UnOp wasmi64UnOp = 207; - Wasmf32BinOp wasmf32BinOp = 208; - Wasmf64BinOp wasmf64BinOp = 209; - Wasmf32UnOp wasmf32UnOp = 210; - Wasmf64UnOp wasmf64UnOp = 211; - WasmWrapi64Toi32 wasmWrapi64Toi32 = 212; - WasmTruncatef32Toi32 wasmTruncatef32Toi32 = 213; - WasmTruncatef64Toi32 wasmTruncatef64Toi32 = 214; - WasmExtendi32Toi64 wasmExtendi32Toi64 = 215; - WasmTruncatef32Toi64 wasmTruncatef32Toi64 = 216; - WasmTruncatef64Toi64 wasmTruncatef64Toi64 = 217; - WasmConverti32Tof32 wasmConverti32Tof32 = 218; - WasmConverti64Tof32 wasmConverti64Tof32 = 219; - WasmDemotef64Tof32 wasmDemotef64Tof32 = 220; - WasmConverti32Tof64 wasmConverti32Tof64 = 221; - WasmConverti64Tof64 wasmConverti64Tof64 = 222; - WasmPromotef32Tof64 wasmPromotef32Tof64 = 223; - WasmReinterpretf32Asi32 wasmReinterpretf32Asi32 = 224; - WasmReinterpretf64Asi64 wasmReinterpretf64Asi64 = 225; - WasmReinterpreti32Asf32 wasmReinterpreti32Asf32 = 226; - WasmReinterpreti64Asf64 wasmReinterpreti64Asf64 = 227; - WasmSignExtend8Intoi32 wasmSignExtend8Intoi32 = 228; - WasmSignExtend16Intoi32 wasmSignExtend16Intoi32 = 229; - WasmSignExtend8Intoi64 wasmSignExtend8Intoi64 = 230; - WasmSignExtend16Intoi64 wasmSignExtend16Intoi64 = 231; - WasmSignExtend32Intoi64 wasmSignExtend32Intoi64 = 232; - WasmTruncateSatf32Toi32 wasmTruncateSatf32Toi32 = 233; - WasmTruncateSatf64Toi32 wasmTruncateSatf64Toi32 = 234; - WasmTruncateSatf32Toi64 wasmTruncateSatf32Toi64 = 235; - WasmTruncateSatf64Toi64 wasmTruncateSatf64Toi64 = 236; - WasmReassign wasmReassign = 237; - WasmDefineGlobal wasmDefineGlobal = 238; - WasmDefineTable wasmDefineTable = 239; - WasmDefineMemory wasmDefineMemory = 240; - WasmDefineDataSegment wasmDefineDataSegment = 241; - WasmLoadGlobal wasmLoadGlobal = 242; - WasmStoreGlobal wasmStoreGlobal = 243; - WasmTableGet wasmTableGet = 244; - WasmTableSet wasmTableSet = 245; - WasmTableSize wasmTableSize = 246; - WasmTableGrow wasmTableGrow = 247; - WasmCallIndirect wasmCallIndirect = 248; - WasmCallDirect wasmCallDirect = 249; - WasmReturnCallDirect wasmReturnCallDirect = 250; - WasmReturnCallIndirect wasmReturnCallIndirect = 251; - WasmMemoryLoad wasmMemoryLoad = 252; - WasmMemoryStore wasmMemoryStore = 253; - WasmAtomicLoad wasmAtomicLoad = 254; - WasmAtomicStore wasmAtomicStore = 255; - WasmAtomicRMW wasmAtomicRMW = 256; - WasmAtomicCmpxchg wasmAtomicCmpxchg = 257; - WasmMemorySize wasmMemorySize = 258; - WasmMemoryGrow wasmMemoryGrow = 259; - WasmMemoryFill wasmMemoryFill = 260; - WasmMemoryInit wasmMemoryInit = 261; - WasmDropDataSegment wasmDropDataSegment = 262; - BeginWasmFunction beginWasmFunction = 263; - EndWasmFunction endWasmFunction = 264; - WasmBeginBlock wasmBeginBlock = 265; - WasmEndBlock wasmEndBlock = 266; - WasmBeginLoop wasmBeginLoop = 267; - WasmEndLoop wasmEndLoop = 268; - WasmBranch wasmBranch = 269; - WasmBranchIf wasmBranchIf = 270; - WasmBranchTable wasmBranchTable = 271; - WasmNop wasmNop = 272; - WasmBeginIf wasmBeginIf = 273; - WasmBeginElse wasmBeginElse = 274; - WasmEndIf wasmEndIf = 275; - WasmBeginTryTable wasmBeginTryTable = 276; - WasmEndTryTable wasmEndTryTable = 277; - WasmBeginTry wasmBeginTry = 278; - WasmBeginCatchAll wasmBeginCatchAll = 279; - WasmBeginCatch wasmBeginCatch = 280; - WasmEndTry wasmEndTry = 281; - WasmBeginTryDelegate wasmBeginTryDelegate = 282; - WasmEndTryDelegate wasmEndTryDelegate = 283; - WasmThrow wasmThrow = 284; - WasmRethrow wasmRethrow = 285; - WasmThrowRef wasmThrowRef = 286; - WasmDefineTag wasmDefineTag = 287; - ConstSimd128 constSimd128 = 288; - WasmSimd128Compare wasmSimd128Compare = 289; - WasmSimd128IntegerUnOp wasmSimd128IntegerUnOp = 290; - WasmSimd128IntegerBinOp wasmSimd128IntegerBinOp = 291; - WasmSimd128IntegerTernaryOp wasmSimd128IntegerTernaryOp = 292; - WasmSimd128FloatUnOp wasmSimd128FloatUnOp = 293; - WasmSimd128FloatBinOp wasmSimd128FloatBinOp = 294; - WasmSimd128FloatTernaryOp wasmSimd128FloatTernaryOp = 295; - WasmSimdSplat wasmSimdSplat = 296; - WasmSimdExtractLane wasmSimdExtractLane = 297; - WasmSimdReplaceLane wasmSimdReplaceLane = 298; - WasmSimdStoreLane wasmSimdStoreLane = 299; - WasmSimdLoadLane wasmSimdLoadLane = 300; - WasmSimdLoad wasmSimdLoad = 301; - WasmUnreachable wasmUnreachable = 302; - WasmSelect wasmSelect = 303; - WasmBeginTypeGroup wasmBeginTypeGroup = 304; - WasmEndTypeGroup wasmEndTypeGroup = 305; - WasmDefineArrayType wasmDefineArrayType = 306; - WasmDefineStructType wasmDefineStructType = 307; - WasmDefineForwardOrSelfReference wasmDefineForwardOrSelfReference = 308; - WasmResolveForwardReference wasmResolveForwardReference = 309; - WasmArrayNewFixed wasmArrayNewFixed = 310; - WasmArrayNewDefault wasmArrayNewDefault = 311; - WasmArrayLen wasmArrayLen = 312; - WasmArrayGet wasmArrayGet = 313; - WasmArraySet wasmArraySet = 314; - WasmStructNewDefault wasmStructNewDefault = 315; - WasmStructGet wasmStructGet = 316; - WasmStructSet wasmStructSet = 317; - WasmRefNull wasmRefNull = 318; - WasmRefIsNull wasmRefIsNull = 319; - WasmRefI31 wasmRefI31 = 320; - WasmI31Get wasmI31Get = 321; - WasmAnyConvertExtern wasmAnyConvertExtern = 322; - WasmExternConvertAny wasmExternConvertAny = 323; - WasmMemoryCopy wasmMemoryCopy = 324; - WasmDefineElementSegment wasmDefineElementSegment = 325; - WasmTableInit wasmTableInit = 326; - WasmDropElementSegment wasmDropElementSegment = 327; - WasmTableCopy wasmTableCopy = 328; - WasmDefineSignatureType wasmDefineSignatureType = 329; - CreateNamedDisposableVariable createNamedDisposableVariable = 330; - CreateNamedAsyncDisposableVariable createNamedAsyncDisposableVariable = 331; - BeginClassInstanceComputedMethod beginClassInstanceComputedMethod = 332; - EndClassInstanceComputedMethod endClassInstanceComputedMethod = 333; - BeginClassStaticComputedMethod beginClassStaticComputedMethod = 334; - EndClassStaticComputedMethod endClassStaticComputedMethod = 335; + BeginClassInstanceComputedMethod beginClassInstanceComputedMethod = 40; + EndClassInstanceComputedMethod endClassInstanceComputedMethod = 41; + BeginClassInstanceGetter beginClassInstanceGetter = 42; + EndClassInstanceGetter endClassInstanceGetter = 43; + BeginClassInstanceSetter beginClassInstanceSetter = 44; + EndClassInstanceSetter endClassInstanceSetter = 45; + ClassAddStaticProperty classAddStaticProperty = 46; + ClassAddStaticElement classAddStaticElement = 47; + ClassAddStaticComputedProperty classAddStaticComputedProperty = 48; + BeginClassStaticInitializer beginClassStaticInitializer = 49; + EndClassStaticInitializer endClassStaticInitializer = 50; + BeginClassStaticMethod beginClassStaticMethod = 51; + EndClassStaticMethod endClassStaticMethod = 52; + BeginClassStaticComputedMethod beginClassStaticComputedMethod = 53; + EndClassStaticComputedMethod endClassStaticComputedMethod = 54; + BeginClassStaticGetter beginClassStaticGetter = 55; + EndClassStaticGetter endClassStaticGetter = 56; + BeginClassStaticSetter beginClassStaticSetter = 57; + EndClassStaticSetter endClassStaticSetter = 58; + ClassAddPrivateInstanceProperty classAddPrivateInstanceProperty = 59; + BeginClassPrivateInstanceMethod beginClassPrivateInstanceMethod = 60; + EndClassPrivateInstanceMethod endClassPrivateInstanceMethod = 61; + ClassAddPrivateStaticProperty classAddPrivateStaticProperty = 62; + BeginClassPrivateStaticMethod beginClassPrivateStaticMethod = 63; + EndClassPrivateStaticMethod endClassPrivateStaticMethod = 64; + EndClassDefinition endClassDefinition = 65; + CreateArray createArray = 66; + CreateIntArray createIntArray = 67; + CreateFloatArray createFloatArray = 68; + CreateArrayWithSpread createArrayWithSpread = 69; + CreateTemplateString createTemplateString = 70; + GetProperty getProperty = 71; + SetProperty setProperty = 72; + UpdateProperty updateProperty = 73; + DeleteProperty deleteProperty = 74; + ConfigureProperty configureProperty = 75; + GetElement getElement = 76; + SetElement setElement = 77; + UpdateElement updateElement = 78; + DeleteElement deleteElement = 79; + ConfigureElement configureElement = 80; + GetComputedProperty getComputedProperty = 81; + SetComputedProperty setComputedProperty = 82; + UpdateComputedProperty updateComputedProperty = 83; + DeleteComputedProperty deleteComputedProperty = 84; + ConfigureComputedProperty configureComputedProperty = 85; + TypeOf typeOf = 86; + Void void = 87; + TestInstanceOf testInstanceOf = 88; + TestIn testIn = 89; + BeginPlainFunction beginPlainFunction = 90; + EndPlainFunction endPlainFunction = 91; + BeginArrowFunction beginArrowFunction = 92; + EndArrowFunction endArrowFunction = 93; + BeginGeneratorFunction beginGeneratorFunction = 94; + EndGeneratorFunction endGeneratorFunction = 95; + BeginAsyncFunction beginAsyncFunction = 96; + EndAsyncFunction endAsyncFunction = 97; + BeginAsyncArrowFunction beginAsyncArrowFunction = 98; + EndAsyncArrowFunction endAsyncArrowFunction = 99; + BeginAsyncGeneratorFunction beginAsyncGeneratorFunction = 100; + EndAsyncGeneratorFunction endAsyncGeneratorFunction = 101; + BeginConstructor beginConstructor = 102; + EndConstructor endConstructor = 103; + Directive directive = 104; + Return return = 105; + Yield yield = 106; + YieldEach yieldEach = 107; + Await await = 108; + CallFunction callFunction = 109; + CallFunctionWithSpread callFunctionWithSpread = 110; + Construct construct = 111; + ConstructWithSpread constructWithSpread = 112; + CallMethod callMethod = 113; + CallMethodWithSpread callMethodWithSpread = 114; + CallComputedMethod callComputedMethod = 115; + CallComputedMethodWithSpread callComputedMethodWithSpread = 116; + UnaryOperation unaryOperation = 117; + BinaryOperation binaryOperation = 118; + TernaryOperation ternaryOperation = 119; + Update update = 120; + Dup dup = 121; + Reassign reassign = 122; + DestructArray destructArray = 123; + DestructArrayAndReassign destructArrayAndReassign = 124; + DestructObject destructObject = 125; + DestructObjectAndReassign destructObjectAndReassign = 126; + Compare compare = 127; + Eval eval = 128; + BeginWith beginWith = 129; + EndWith endWith = 130; + CallSuperConstructor callSuperConstructor = 131; + CallSuperMethod callSuperMethod = 132; + GetPrivateProperty getPrivateProperty = 133; + SetPrivateProperty setPrivateProperty = 134; + UpdatePrivateProperty updatePrivateProperty = 135; + CallPrivateMethod callPrivateMethod = 136; + GetSuperProperty getSuperProperty = 137; + SetSuperProperty setSuperProperty = 138; + GetComputedSuperProperty getComputedSuperProperty = 139; + SetComputedSuperProperty setComputedSuperProperty = 140; + UpdateSuperProperty updateSuperProperty = 141; + BeginIf beginIf = 142; + BeginElse beginElse = 143; + EndIf endIf = 144; + BeginWhileLoopHeader beginWhileLoopHeader = 145; + BeginWhileLoopBody beginWhileLoopBody = 146; + EndWhileLoop endWhileLoop = 147; + BeginDoWhileLoopBody beginDoWhileLoopBody = 148; + BeginDoWhileLoopHeader beginDoWhileLoopHeader = 149; + EndDoWhileLoop endDoWhileLoop = 150; + BeginForLoopInitializer beginForLoopInitializer = 151; + BeginForLoopCondition beginForLoopCondition = 152; + BeginForLoopAfterthought beginForLoopAfterthought = 153; + BeginForLoopBody beginForLoopBody = 154; + EndForLoop endForLoop = 155; + BeginForInLoop beginForInLoop = 156; + EndForInLoop endForInLoop = 157; + BeginForOfLoop beginForOfLoop = 158; + BeginForOfLoopWithDestruct beginForOfLoopWithDestruct = 159; + EndForOfLoop endForOfLoop = 160; + BeginRepeatLoop beginRepeatLoop = 161; + EndRepeatLoop endRepeatLoop = 162; + LoopBreak loopBreak = 163; + LoopContinue loopContinue = 164; + BeginTry beginTry = 165; + BeginCatch beginCatch = 166; + BeginFinally beginFinally = 167; + EndTryCatchFinally endTryCatchFinally = 168; + ThrowException throwException = 169; + BeginCodeString beginCodeString = 170; + EndCodeString endCodeString = 171; + BeginBlockStatement beginBlockStatement = 172; + EndBlockStatement endBlockStatement = 173; + BeginSwitch beginSwitch = 174; + BeginSwitchCase beginSwitchCase = 175; + BeginSwitchDefaultCase beginSwitchDefaultCase = 176; + EndSwitchCase endSwitchCase = 177; + EndSwitch endSwitch = 178; + SwitchBreak switchBreak = 179; + LoadNewTarget loadNewTarget = 180; + Print print = 181; + Explore explore = 182; + Probe probe = 183; + Fixup fixup = 184; + BeginWasmModule beginWasmModule = 185; + EndWasmModule endWasmModule = 186; + CreateWasmGlobal createWasmGlobal = 187; + CreateWasmMemory createWasmMemory = 188; + CreateWasmTable createWasmTable = 189; + CreateWasmJSTag createWasmJSTag = 190; + CreateWasmTag createWasmTag = 191; + WrapPromising wrapPromising = 192; + WrapSuspending wrapSuspending = 193; + BindMethod bindMethod = 194; + BindFunction bindFunction = 195; + Consti64 consti64 = 196; + Consti32 consti32 = 197; + Constf32 constf32 = 198; + Constf64 constf64 = 199; + WasmReturn wasmReturn = 200; + WasmJsCall wasmJsCall = 201; + Wasmi32CompareOp wasmi32CompareOp = 202; + Wasmi64CompareOp wasmi64CompareOp = 203; + Wasmf32CompareOp wasmf32CompareOp = 204; + Wasmf64CompareOp wasmf64CompareOp = 205; + Wasmi32EqualZero wasmi32EqualZero = 206; + Wasmi64EqualZero wasmi64EqualZero = 207; + Wasmi32BinOp wasmi32BinOp = 208; + Wasmi64BinOp wasmi64BinOp = 209; + Wasmi32UnOp wasmi32UnOp = 210; + Wasmi64UnOp wasmi64UnOp = 211; + Wasmf32BinOp wasmf32BinOp = 212; + Wasmf64BinOp wasmf64BinOp = 213; + Wasmf32UnOp wasmf32UnOp = 214; + Wasmf64UnOp wasmf64UnOp = 215; + WasmWrapi64Toi32 wasmWrapi64Toi32 = 216; + WasmTruncatef32Toi32 wasmTruncatef32Toi32 = 217; + WasmTruncatef64Toi32 wasmTruncatef64Toi32 = 218; + WasmExtendi32Toi64 wasmExtendi32Toi64 = 219; + WasmTruncatef32Toi64 wasmTruncatef32Toi64 = 220; + WasmTruncatef64Toi64 wasmTruncatef64Toi64 = 221; + WasmConverti32Tof32 wasmConverti32Tof32 = 222; + WasmConverti64Tof32 wasmConverti64Tof32 = 223; + WasmDemotef64Tof32 wasmDemotef64Tof32 = 224; + WasmConverti32Tof64 wasmConverti32Tof64 = 225; + WasmConverti64Tof64 wasmConverti64Tof64 = 226; + WasmPromotef32Tof64 wasmPromotef32Tof64 = 227; + WasmReinterpretf32Asi32 wasmReinterpretf32Asi32 = 228; + WasmReinterpretf64Asi64 wasmReinterpretf64Asi64 = 229; + WasmReinterpreti32Asf32 wasmReinterpreti32Asf32 = 230; + WasmReinterpreti64Asf64 wasmReinterpreti64Asf64 = 231; + WasmSignExtend8Intoi32 wasmSignExtend8Intoi32 = 232; + WasmSignExtend16Intoi32 wasmSignExtend16Intoi32 = 233; + WasmSignExtend8Intoi64 wasmSignExtend8Intoi64 = 234; + WasmSignExtend16Intoi64 wasmSignExtend16Intoi64 = 235; + WasmSignExtend32Intoi64 wasmSignExtend32Intoi64 = 236; + WasmTruncateSatf32Toi32 wasmTruncateSatf32Toi32 = 237; + WasmTruncateSatf64Toi32 wasmTruncateSatf64Toi32 = 238; + WasmTruncateSatf32Toi64 wasmTruncateSatf32Toi64 = 239; + WasmTruncateSatf64Toi64 wasmTruncateSatf64Toi64 = 240; + WasmReassign wasmReassign = 241; + WasmDefineGlobal wasmDefineGlobal = 242; + WasmDefineTable wasmDefineTable = 243; + WasmDefineMemory wasmDefineMemory = 244; + WasmDefineDataSegment wasmDefineDataSegment = 245; + WasmLoadGlobal wasmLoadGlobal = 246; + WasmStoreGlobal wasmStoreGlobal = 247; + WasmTableGet wasmTableGet = 248; + WasmTableSet wasmTableSet = 249; + WasmTableSize wasmTableSize = 250; + WasmTableGrow wasmTableGrow = 251; + WasmCallIndirect wasmCallIndirect = 252; + WasmCallDirect wasmCallDirect = 253; + WasmReturnCallDirect wasmReturnCallDirect = 254; + WasmReturnCallIndirect wasmReturnCallIndirect = 255; + WasmMemoryLoad wasmMemoryLoad = 256; + WasmMemoryStore wasmMemoryStore = 257; + WasmAtomicLoad wasmAtomicLoad = 258; + WasmAtomicStore wasmAtomicStore = 259; + WasmAtomicRMW wasmAtomicRMW = 260; + WasmAtomicCmpxchg wasmAtomicCmpxchg = 261; + WasmMemorySize wasmMemorySize = 262; + WasmMemoryGrow wasmMemoryGrow = 263; + WasmMemoryFill wasmMemoryFill = 264; + WasmMemoryInit wasmMemoryInit = 265; + WasmDropDataSegment wasmDropDataSegment = 266; + BeginWasmFunction beginWasmFunction = 267; + EndWasmFunction endWasmFunction = 268; + WasmBeginBlock wasmBeginBlock = 269; + WasmEndBlock wasmEndBlock = 270; + WasmBeginLoop wasmBeginLoop = 271; + WasmEndLoop wasmEndLoop = 272; + WasmBranch wasmBranch = 273; + WasmBranchIf wasmBranchIf = 274; + WasmBranchTable wasmBranchTable = 275; + WasmNop wasmNop = 276; + WasmBeginIf wasmBeginIf = 277; + WasmBeginElse wasmBeginElse = 278; + WasmEndIf wasmEndIf = 279; + WasmBeginTryTable wasmBeginTryTable = 280; + WasmEndTryTable wasmEndTryTable = 281; + WasmBeginTry wasmBeginTry = 282; + WasmBeginCatchAll wasmBeginCatchAll = 283; + WasmBeginCatch wasmBeginCatch = 284; + WasmEndTry wasmEndTry = 285; + WasmBeginTryDelegate wasmBeginTryDelegate = 286; + WasmEndTryDelegate wasmEndTryDelegate = 287; + WasmThrow wasmThrow = 288; + WasmRethrow wasmRethrow = 289; + WasmThrowRef wasmThrowRef = 290; + WasmDefineTag wasmDefineTag = 291; + ConstSimd128 constSimd128 = 292; + WasmSimd128Compare wasmSimd128Compare = 293; + WasmSimd128IntegerUnOp wasmSimd128IntegerUnOp = 294; + WasmSimd128IntegerBinOp wasmSimd128IntegerBinOp = 295; + WasmSimd128IntegerTernaryOp wasmSimd128IntegerTernaryOp = 296; + WasmSimd128FloatUnOp wasmSimd128FloatUnOp = 297; + WasmSimd128FloatBinOp wasmSimd128FloatBinOp = 298; + WasmSimd128FloatTernaryOp wasmSimd128FloatTernaryOp = 299; + WasmSimdSplat wasmSimdSplat = 300; + WasmSimdExtractLane wasmSimdExtractLane = 301; + WasmSimdReplaceLane wasmSimdReplaceLane = 302; + WasmSimdStoreLane wasmSimdStoreLane = 303; + WasmSimdLoadLane wasmSimdLoadLane = 304; + WasmSimdLoad wasmSimdLoad = 305; + WasmUnreachable wasmUnreachable = 306; + WasmSelect wasmSelect = 307; + WasmBeginTypeGroup wasmBeginTypeGroup = 308; + WasmEndTypeGroup wasmEndTypeGroup = 309; + WasmDefineArrayType wasmDefineArrayType = 310; + WasmDefineStructType wasmDefineStructType = 311; + WasmDefineForwardOrSelfReference wasmDefineForwardOrSelfReference = 312; + WasmResolveForwardReference wasmResolveForwardReference = 313; + WasmArrayNewFixed wasmArrayNewFixed = 314; + WasmArrayNewDefault wasmArrayNewDefault = 315; + WasmArrayLen wasmArrayLen = 316; + WasmArrayGet wasmArrayGet = 317; + WasmArraySet wasmArraySet = 318; + WasmStructNewDefault wasmStructNewDefault = 319; + WasmStructGet wasmStructGet = 320; + WasmStructSet wasmStructSet = 321; + WasmRefNull wasmRefNull = 322; + WasmRefIsNull wasmRefIsNull = 323; + WasmRefI31 wasmRefI31 = 324; + WasmI31Get wasmI31Get = 325; + WasmAnyConvertExtern wasmAnyConvertExtern = 326; + WasmExternConvertAny wasmExternConvertAny = 327; + WasmMemoryCopy wasmMemoryCopy = 328; + WasmDefineElementSegment wasmDefineElementSegment = 329; + WasmTableInit wasmTableInit = 330; + WasmDropElementSegment wasmDropElementSegment = 331; + WasmTableCopy wasmTableCopy = 332; + WasmDefineSignatureType wasmDefineSignatureType = 333; + CreateNamedDisposableVariable createNamedDisposableVariable = 334; + CreateNamedAsyncDisposableVariable createNamedAsyncDisposableVariable = 335; } } diff --git a/Sources/Fuzzilli/Util/Arguments.swift b/Sources/Fuzzilli/Util/Arguments.swift index 1faada4bd..fcea3106a 100755 --- a/Sources/Fuzzilli/Util/Arguments.swift +++ b/Sources/Fuzzilli/Util/Arguments.swift @@ -83,6 +83,10 @@ public class Arguments { } } + public func string(for name: String) -> String? { + return self[name] + } + public func has(_ name: String) -> Bool { return self[name] != nil } diff --git a/Sources/Fuzzilli/Util/JavaScriptExecutor.swift b/Sources/Fuzzilli/Util/JavaScriptExecutor.swift index 1f0ae1d50..4340c67ef 100755 --- a/Sources/Fuzzilli/Util/JavaScriptExecutor.swift +++ b/Sources/Fuzzilli/Util/JavaScriptExecutor.swift @@ -38,9 +38,12 @@ public class JavaScriptExecutor { let arguments: [String] + let env: [(String, String)] + /// Depending on the type this constructor will try to find the requested shell or fail - public init?(type: ExecutorType = .any, withArguments maybeArguments: [String]? = nil) { + public init?(type: ExecutorType = .any, withArguments maybeArguments: [String]? = nil, withEnv maybeEnv: [(String, String)]? = nil) { self.arguments = maybeArguments ?? [] + self.env = maybeEnv ?? [] let path: String? switch type { @@ -59,23 +62,24 @@ public class JavaScriptExecutor { self.executablePath = path! } - public init(withExecutablePath executablePath: String, arguments: [String]) { + public init(withExecutablePath executablePath: String, arguments: [String], env: [(String, String)]) { self.executablePath = executablePath self.arguments = arguments + self.env = env } /// Executes the JavaScript script using the configured engine and returns the stdout. public func executeScript(_ script: String, withTimeout timeout: TimeInterval? = nil) throws -> Result { - return try execute(executablePath, withInput: prefix + script.data(using: .utf8)!, withArguments: self.arguments, timeout: timeout) + return try execute(executablePath, withInput: prefix + script.data(using: .utf8)!, withArguments: self.arguments, withEnv: self.env, timeout: timeout) } /// Executes the JavaScript script at the specified path using the configured engine and returns the stdout. public func executeScript(at url: URL, withTimeout timeout: TimeInterval? = nil) throws -> Result { let script = try Data(contentsOf: url) - return try execute(executablePath, withInput: prefix + script, withArguments: self.arguments, timeout: timeout) + return try execute(executablePath, withInput: prefix + script, withArguments: self.arguments, withEnv: self.env, timeout: timeout) } - func execute(_ path: String, withInput input: Data = Data(), withArguments arguments: [String] = [], timeout maybeTimeout: TimeInterval? = nil) throws -> Result { + func execute(_ path: String, withInput input: Data = Data(), withArguments arguments: [String] = [], withEnv env: [(String, String)] = [], timeout maybeTimeout: TimeInterval? = nil) throws -> Result { let inputPipe = Pipe() let outputPipe = Pipe() let errorPipe = Pipe() @@ -89,6 +93,8 @@ public class JavaScriptExecutor { // Close stdin try inputPipe.fileHandleForWriting.close() + let environment = ProcessInfo.processInfo.environment.merging(env, uniquingKeysWith: { _, new in new }) + // Execute the subprocess. let task = Process() task.standardOutput = outputPipe @@ -96,6 +102,7 @@ public class JavaScriptExecutor { task.arguments = arguments + [url.path] task.executableURL = URL(fileURLWithPath: path) task.standardInput = inputPipe + task.environment = environment try task.run() var timedOut = false diff --git a/Sources/Fuzzilli/Util/MockFuzzer.swift b/Sources/Fuzzilli/Util/MockFuzzer.swift index 084138fe4..fa3fb82fa 100755 --- a/Sources/Fuzzilli/Util/MockFuzzer.swift +++ b/Sources/Fuzzilli/Util/MockFuzzer.swift @@ -26,6 +26,7 @@ struct MockExecution: Execution { class MockScriptRunner: ScriptRunner { var processArguments: [String] = [] + var env: [(String, String)] = [] func run(_ script: String, withTimeout timeout: UInt32) -> Execution { return MockExecution(outcome: .succeeded, @@ -81,7 +82,7 @@ class MockEvaluator: ProgramEvaluator { } /// Create a fuzzer instance usable for testing. -public func makeMockFuzzer(config maybeConfiguration: Configuration? = nil, engine maybeEngine: FuzzEngine? = nil, runner maybeRunner: ScriptRunner? = nil, environment maybeEnvironment: JavaScriptEnvironment? = nil, evaluator maybeEvaluator: ProgramEvaluator? = nil, corpus maybeCorpus: Corpus? = nil, codeGenerators additionalCodeGenerators : [(CodeGenerator, Int)] = [], queue: DispatchQueue? = nil) -> Fuzzer { +public func makeMockFuzzer(config maybeConfiguration: Configuration? = nil, engine maybeEngine: FuzzEngine? = nil, runner maybeRunner: ScriptRunner? = nil, environment maybeEnvironment: JavaScriptEnvironment? = nil, evaluator maybeEvaluator: ProgramEvaluator? = nil, corpus maybeCorpus: Corpus? = nil, codeGenerators additionalCodeGenerators : [(CodeGenerator, Int)] = [], queue: DispatchQueue? = nil, overwriteGenerators: WeightedList? = nil) -> Fuzzer { // The configuration of this fuzzer. let configuration = maybeConfiguration ?? Configuration(logLevel: .warning) @@ -121,7 +122,7 @@ public func makeMockFuzzer(config maybeConfiguration: Configuration? = nil, engi let minimizer = Minimizer() // Use all builtin CodeGenerators - let codeGenerators = WeightedList( + let codeGenerators = overwriteGenerators ?? WeightedList( (CodeGenerators + WasmCodeGenerators).map { guard let weight = codeGeneratorWeights[$0.name] else { fatalError("Missing weight for CodeGenerator \($0.name) in CodeGeneratorWeights.swift") diff --git a/Sources/FuzzilliCli/Profiles/DuktapeProfile.swift b/Sources/FuzzilliCli/Profiles/DuktapeProfile.swift index 853aeae20..001ce27a8 100755 --- a/Sources/FuzzilliCli/Profiles/DuktapeProfile.swift +++ b/Sources/FuzzilliCli/Profiles/DuktapeProfile.swift @@ -23,7 +23,7 @@ let duktapeProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/JSCProfile.swift b/Sources/FuzzilliCli/Profiles/JSCProfile.swift index e415ed64c..d79b85360 100755 --- a/Sources/FuzzilliCli/Profiles/JSCProfile.swift +++ b/Sources/FuzzilliCli/Profiles/JSCProfile.swift @@ -73,7 +73,7 @@ let jscProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/JerryscriptProfile.swift b/Sources/FuzzilliCli/Profiles/JerryscriptProfile.swift index b59833a4c..acc18406d 100755 --- a/Sources/FuzzilliCli/Profiles/JerryscriptProfile.swift +++ b/Sources/FuzzilliCli/Profiles/JerryscriptProfile.swift @@ -23,7 +23,7 @@ let jerryscriptProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/NjsProfile.swift b/Sources/FuzzilliCli/Profiles/NjsProfile.swift index 5b629c028..040ef711d 100755 --- a/Sources/FuzzilliCli/Profiles/NjsProfile.swift +++ b/Sources/FuzzilliCli/Profiles/NjsProfile.swift @@ -23,7 +23,7 @@ let njsProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/Profile.swift b/Sources/FuzzilliCli/Profiles/Profile.swift index 5815f716b..74d62f81c 100755 --- a/Sources/FuzzilliCli/Profiles/Profile.swift +++ b/Sources/FuzzilliCli/Profiles/Profile.swift @@ -18,8 +18,8 @@ struct Profile { let processArgs: (_ randomize: Bool) -> [String] let processEnv: [String : String] let maxExecsBeforeRespawn: Int - // Timeout is in milliseconds. - let timeout: Int + // Timeout either by value or interval in milliseconds. + let timeout: Timeout let codePrefix: String let codeSuffix: String let ecmaVersion: ECMAScriptVersion diff --git a/Sources/FuzzilliCli/Profiles/QjsProfile.swift b/Sources/FuzzilliCli/Profiles/QjsProfile.swift index 83dd77d2c..aa521f001 100755 --- a/Sources/FuzzilliCli/Profiles/QjsProfile.swift +++ b/Sources/FuzzilliCli/Profiles/QjsProfile.swift @@ -23,7 +23,7 @@ let qjsProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/QtjsProfile.swift b/Sources/FuzzilliCli/Profiles/QtjsProfile.swift index 0ba7ff22c..c536f529b 100755 --- a/Sources/FuzzilliCli/Profiles/QtjsProfile.swift +++ b/Sources/FuzzilliCli/Profiles/QtjsProfile.swift @@ -31,7 +31,7 @@ let qtjsProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/Serenity.swift b/Sources/FuzzilliCli/Profiles/Serenity.swift index 286b5a520..496e833b9 100755 --- a/Sources/FuzzilliCli/Profiles/Serenity.swift +++ b/Sources/FuzzilliCli/Profiles/Serenity.swift @@ -21,7 +21,7 @@ let serenityProfile = Profile( "ASAN_OPTIONS": "abort_on_error=1", ], maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ function main() { """, diff --git a/Sources/FuzzilliCli/Profiles/SpidermonkeyProfile.swift b/Sources/FuzzilliCli/Profiles/SpidermonkeyProfile.swift index a7ce9123d..ec131d243 100755 --- a/Sources/FuzzilliCli/Profiles/SpidermonkeyProfile.swift +++ b/Sources/FuzzilliCli/Profiles/SpidermonkeyProfile.swift @@ -74,7 +74,7 @@ let spidermonkeyProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/V8CommonProfile.swift b/Sources/FuzzilliCli/Profiles/V8CommonProfile.swift index dc3a6e03f..4c83c2b31 100755 --- a/Sources/FuzzilliCli/Profiles/V8CommonProfile.swift +++ b/Sources/FuzzilliCli/Profiles/V8CommonProfile.swift @@ -135,6 +135,10 @@ public let WasmArrayGenerator = CodeGenerator("WasmArrayGenerator") { b in b.eval("%WasmArray()", hasOutput: true); } +public let SharedObjectGenerator = CodeGenerator("SharedObjectGenerator", inputs: .one) { b, v in + b.eval("%ShareObject(%@)", with: [v], hasOutput: true); +} + public let PretenureAllocationSiteGenerator = CodeGenerator("PretenureAllocationSiteGenerator", inputs: .required(.object())) { b, obj in b.eval("%PretenureAllocationSite(%@)", with: [obj]); } @@ -646,3 +650,319 @@ public let FastApiCallFuzzer = ProgramTemplate("FastApiCallFuzzer") { b in b.build(n: 10) } + +// Configure V8 invocation arguments. `forSandbox` is used by the V8SandboxProfile. As the sandbox +// fuzzer does not crash on regular assertions, most validation flags do not make sense in that +// configuraiton. +public func v8ProcessArgs(randomize: Bool, forSandbox: Bool) -> [String] { + var args = [ + "--expose-gc", + "--expose-externalize-string", + "--omit-quit", + "--allow-natives-syntax", + "--fuzzing", + "--jit-fuzzing", + "--future", + "--harmony", + "--experimental-fuzzing", + "--js-staging", + "--wasm-staging", + "--wasm-fast-api", + "--expose-fast-api", + "--wasm-test-streaming", // WebAssembly.compileStreaming & WebAssembly.instantiateStreaming() + ] + if forSandbox { + args.append("--sandbox-fuzzing") + // This is so that we get an ASan splat directly in the reproducer file. + args.append("--disable-in-process-stack-traces") + } + + guard randomize else { return args } + + // + // Existing features that should sometimes be disabled. + // + if probability(0.1) { + args.append("--no-turbofan") + if probability(0.5) { + args.append("--maglev-as-top-tier") + } + } + + if probability(0.1) { + args.append("--no-maglev") + } + + if probability(0.1) { + args.append("--no-sparkplug") + } + + if probability(0.1) { + args.append("--no-short-builtin-calls") + } + + // Disabling Liftoff enables "direct" coverage for the optimizing compiler, though some + // features (like speculative inlining) require a combination of Liftoff and Turbofan. + // Note that this flag only affects WebAssembly. + if probability(0.5) { + args.append("--no-liftoff") + if probability(0.3) && !forSandbox { + args.append("--wasm-assert-types") + } + } + + // This greatly helps the fuzzer to decide inlining wasm functions into each other when + // %WasmTierUpFunction() is used as in most cases the call counts will be way too low to + // align with V8's current inlining heuristics (which uses absolute call counts as a + // deciding factor). + if probability(0.5) { + args.append("--wasm-inlining-ignore-call-counts") + } + + // + // Future features that should sometimes be enabled. + // + if probability(0.1) { + args.append("--minor-ms") + } + + // Enable the shared heap. + if probability(0.25) { + // Either use the shared-string-table (needed for JS shared structs) or only allow + // shared strings (needed for shared Wasm objects). + args.append(Bool.random() ? "--shared-string-table" : "--shared-strings") + } + + if !args.contains("--no-maglev") { + if probability(0.25) { + args.append("--maglev-future") + } + if probability(0.1) { + args.append("--maglev-assert") + } + if probability(0.05) { + args.append("--maglev-assert-stack-size") + } + if probability(0.2) { + args.append("--maglev-non-eager-inlining") + if probability(0.4) { // TODO: @tacet decrease this probability to max 0.2 + args.append("--max-maglev-inlined-bytecode-size-small=0") + } + } + } + + if probability(0.1) { + args.append("--turboshaft-typed-optimizations") + } + + if probability(0.5) { + args.append("--turbolev") + if probability(0.82) { + args.append("--turbolev-future") + if probability(0.3) { // TODO: @tacet change to 0.15 + args.append("--max-inlined-bytecode-size-small=0") + } + } + } + + if probability(0.1) { + args.append("--turboshaft-wasm-in-js-inlining") + } + + if probability(0.1) { + args.append("--harmony-struct") + } + + if probability(0.1) { + args.append("--efficiency-mode") + } + + if probability(0.1) { + args.append("--battery-saver-mode") + } + + if probability(0.1) { + args.append("--stress-scavenger-conservative-object-pinning-random") + } + + if probability(0.1) { + args.append("--precise-object-pinning") + } + + if probability(0.1) { + args.append("--scavenger-chaos-mode") + let threshold = Int.random(in: 0...100) + args.append("--scavenger-chaos-mode-threshold=\(threshold)") + } + + if probability(0.1) { + let stackSize = Int.random(in: 54...863) + args.append("--stack-size=\(stackSize)") + } + + // Temporarily enable the three flags below with high probability to + // stress-test JSPI. + // Lower the probabilities once we have enough coverage. + if (probability(0.5)) { + let stackSwitchingSize = Int.random(in: 1...300) + args.append("--wasm-stack-switching-stack-size=\(stackSwitchingSize)") + } + if (probability(0.5)) { + args.append("--experimental-wasm-growable-stacks") + } + if (probability(0.5)) { + args.append("--stress-wasm-stack-switching") + } + + if probability(0.5) { + args.append("--proto-assign-seq-opt") + } + + // + // Sometimes enable additional verification/stressing logic (which may be fairly expensive). + // + if !forSandbox { + if probability(0.1) { + args.append("--verify-heap") + } + if probability(0.1) { + args.append("--turbo-verify") + } + if probability(0.1) { + args.append("--turbo-verify-allocation") + } + if probability(0.1) { + args.append("--assert-types") + } + if probability(0.1) { + args.append("--turboshaft-assert-types") + } + if probability(0.2) { + args.append("--turboshaft-verify-load-elimination") + } + if probability(0.1) { + args.append("--turboshaft-verify-reductions") + } + } + + if probability(0.1) { + args.append("--deopt-every-n-times=\(chooseUniform(from: [100, 250, 500, 1000, 2500, 5000, 10000]))") + } + if probability(0.1) { + args.append("--stress-ic") + } + if probability(0.1) { + args.append("--optimize-on-next-call-optimizes-to-maglev") + } + + // + // A gc-stress session with some fairly expensive flags. + // + if probability(0.1) { + if probability(0.4) { + args.append("--stress-marking=\(Int.random(in: 1...100))") + } + if probability(0.4) { + args.append("--stress-scavenge=\(Int.random(in: 1...100))") + } + if probability(0.5) { + args.append("--stress-flush-code") + args.append("--flush-bytecode") + } + if probability(0.5) { + args.append("--wasm-code-gc") + args.append("--stress-wasm-code-gc") + } + if probability(0.5) { + args.append("--stress-wasm-memory-moving") + } + if probability(0.4) { + args.append(chooseUniform( + from: ["--gc-interval=\(Int.random(in: 100...10000))", + "--random-gc-interval=\(Int.random(in: 1000...10000))"])) + } + if probability(0.4) { + args.append("--concurrent-recompilation-queue-length=\(Int.random(in: 4...64))") + args.append("--concurrent-recompilation-delay=\(Int.random(in: 1...500))") + } + if probability(0.6) { + args.append(chooseUniform( + from: ["--stress-compaction", "--stress-compaction-random"])) + } + } + + // + // More exotic configuration changes. + // + if probability(0.05) { + func chooseBooleanFlag(_ flag: String) { + assert(!flag.starts(with: "--")) + args.append(probability(0.5) ? "--\(flag)" : "--no-\(flag)") + } + + if probability(0.5) { args.append("--stress-gc-during-compilation") } + if probability(0.5) { args.append("--lazy-new-space-shrinking") } + if probability(0.5) { args.append("--stress-wasm-memory-moving") } + if probability(0.5) { args.append("--stress-background-compile") } + if probability(0.5) { args.append("--parallel-compile-tasks-for-lazy") } + if probability(0.5) { args.append("--parallel-compile-tasks-for-eager-toplevel") } + + chooseBooleanFlag("always-sparkplug") + chooseBooleanFlag("always-osr") + chooseBooleanFlag("concurrent-osr") + chooseBooleanFlag("force-slow-path") + + // Maglev related flags + chooseBooleanFlag("maglev-inline-api-calls") + chooseBooleanFlag("maglev-inlining") + chooseBooleanFlag("maglev-loop-peeling") + chooseBooleanFlag("maglev-optimistic-peeled-loops") + chooseBooleanFlag("maglev-pretenure-store-values") + chooseBooleanFlag("maglev-poly-calls") + chooseBooleanFlag("maglev-truncation") + chooseBooleanFlag("maglev-cse") + chooseBooleanFlag("maglev-range-analysis") + chooseBooleanFlag("maglev-escape-analysis") + chooseBooleanFlag("maglev-licm") + chooseBooleanFlag("maglev-untagged-phis") + + // Compiler related flags + chooseBooleanFlag("turbo-move-optimization") + chooseBooleanFlag("turbo-jt") // jump threading + chooseBooleanFlag("turbo-loop-peeling") + chooseBooleanFlag("turbo-loop-variable") + chooseBooleanFlag("turbo-loop-rotation") + chooseBooleanFlag("turbo-cf-optimization") + chooseBooleanFlag("turbo-escape") + chooseBooleanFlag("turbo-allocation-folding") + chooseBooleanFlag("turbo-instruction-scheduling") + chooseBooleanFlag("turbo-stress-instruction-scheduling") + chooseBooleanFlag("turbo-store-elimination") + chooseBooleanFlag("turbo-rewrite-far-jumps") + chooseBooleanFlag("turbo-optimize-apply") + chooseBooleanFlag("turbo-load-elimination") + chooseBooleanFlag("turbo-inlining") + chooseBooleanFlag("turbo-splitting") + args.append(chooseUniform(from: ["--no-enable-sse3", "--no-enable-ssse3", "--no-enable-sse4-1", "--no-enable-sse4-2", "--no-enable-avx", "--no-enable-avx2"])) + + chooseBooleanFlag("turboshaft-loop-unrolling") + chooseBooleanFlag("turboshaft-load-elimination") + chooseBooleanFlag("turboshaft-string-concat-escape-analysis") + + // Wasm related flags + chooseBooleanFlag("wasm-loop-peeling") + chooseBooleanFlag("turboshaft-wasm-load-elimination") + chooseBooleanFlag("wasm-loop-unrolling") + chooseBooleanFlag("wasm-inlining") + chooseBooleanFlag("wasm-opt") + chooseBooleanFlag("wasm-deopt") + chooseBooleanFlag("wasm-enforce-bounds-checks") + chooseBooleanFlag("wasm-math-intrinsics") + chooseBooleanFlag("wasm-bulkmem-inlining") + chooseBooleanFlag("wasm-lazy-compilation") + chooseBooleanFlag("wasm-lazy-validation") + chooseBooleanFlag("wasm-simd-ssse3-codegen") + } + + return args +} diff --git a/Sources/FuzzilliCli/Profiles/V8DebugProfile.swift b/Sources/FuzzilliCli/Profiles/V8DebugProfile.swift index 02b36285f..553a15332 100755 --- a/Sources/FuzzilliCli/Profiles/V8DebugProfile.swift +++ b/Sources/FuzzilliCli/Profiles/V8DebugProfile.swift @@ -30,7 +30,7 @@ let v8DebugProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/V8HoleFuzzingProfile.swift b/Sources/FuzzilliCli/Profiles/V8HoleFuzzingProfile.swift index d292c4cba..c7c72aa09 100755 --- a/Sources/FuzzilliCli/Profiles/V8HoleFuzzingProfile.swift +++ b/Sources/FuzzilliCli/Profiles/V8HoleFuzzingProfile.swift @@ -40,7 +40,7 @@ let v8HoleFuzzingProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.interval(300, 900), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/Profiles/V8Profile.swift b/Sources/FuzzilliCli/Profiles/V8Profile.swift index f85c88470..c78262706 100755 --- a/Sources/FuzzilliCli/Profiles/V8Profile.swift +++ b/Sources/FuzzilliCli/Profiles/V8Profile.swift @@ -60,6 +60,9 @@ let v8Profile = Profile( // Note that this flag only affects WebAssembly. if probability(0.5) { args.append("--no-liftoff") + if probability(0.3) { + args.append("--wasm-assert-types") + } } // This greatly helps the fuzzer to decide inlining wasm functions into each other when @@ -124,6 +127,12 @@ let v8Profile = Profile( args.append("--handle-weak-ref-weakly-in-minor-gc") } + if probability(0.1) { + args.append("--scavenger-chaos-mode") + let threshold = Int.random(in: 0...100) + args.append("--scavenger-chaos-mode-threshold=\(threshold)") + } + if probability(0.1) { let stackSize = Int.random(in: 54...863) args.append("--stack-size=\(stackSize)") @@ -143,6 +152,10 @@ let v8Profile = Profile( args.append("--stress-wasm-stack-switching") } + if probability(0.5) { + args.append("--proto-assign-seq-opt") + } + // // Sometimes enable additional verification/stressing logic (which may be fairly expensive). // @@ -254,7 +267,7 @@ let v8Profile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.interval(300, 900), codePrefix: """ """, @@ -294,6 +307,7 @@ let v8Profile = Profile( (WasmStructGenerator, 15), (WasmArrayGenerator, 15), + (SharedObjectGenerator, 5), (PretenureAllocationSiteGenerator, 5), ], diff --git a/Sources/FuzzilliCli/Profiles/V8SandboxProfile.swift b/Sources/FuzzilliCli/Profiles/V8SandboxProfile.swift index 633150068..91ff6d8ea 100755 --- a/Sources/FuzzilliCli/Profiles/V8SandboxProfile.swift +++ b/Sources/FuzzilliCli/Profiles/V8SandboxProfile.swift @@ -53,18 +53,7 @@ fileprivate struct SandboxFuzzingPostProcessor: FuzzingPostProcessor { let v8SandboxProfile = Profile( processArgs: { randomize in - var args = [ - "--expose-gc", - "--omit-quit", - "--allow-natives-syntax", - "--fuzzing", - "--jit-fuzzing", - "--sandbox-fuzzing", - // This is so that we get an ASan splat directly in the reproducer file. - "--disable-in-process-stack-traces" - ] - - return args + v8ProcessArgs(randomize: randomize, forSandbox: true) }, // ASan options. @@ -76,7 +65,7 @@ let v8SandboxProfile = Profile( maxExecsBeforeRespawn: 1000, // ASan builds are slower, so we use a larger timeout. - timeout: 500, + timeout: Timeout.interval(500, 1200), codePrefix: """ // @@ -97,7 +86,7 @@ let v8SandboxProfile = Profile( function assert(c) { if (!c) { - throw new Error("Assertion failed!"); + throw new Error("Assertion in the in-sandbox-corruption API failed!"); } } @@ -483,6 +472,10 @@ let v8SandboxProfile = Profile( (ForceTurboFanCompilationGenerator, 5), (ForceMaglevCompilationGenerator, 5), (V8GcGenerator, 10), + (WasmStructGenerator, 5), + (WasmArrayGenerator, 5), + (SharedObjectGenerator, 5), + (PretenureAllocationSiteGenerator, 5), ], additionalProgramTemplates: WeightedList([ diff --git a/Sources/FuzzilliCli/Profiles/XSProfile.swift b/Sources/FuzzilliCli/Profiles/XSProfile.swift index 2abb68b2c..1cb64c0f1 100755 --- a/Sources/FuzzilliCli/Profiles/XSProfile.swift +++ b/Sources/FuzzilliCli/Profiles/XSProfile.swift @@ -297,7 +297,7 @@ let xsProfile = Profile( maxExecsBeforeRespawn: 1000, - timeout: 250, + timeout: Timeout.value(250), codePrefix: """ """, diff --git a/Sources/FuzzilliCli/TerminalUI.swift b/Sources/FuzzilliCli/TerminalUI.swift index d89682695..c65f839a7 100755 --- a/Sources/FuzzilliCli/TerminalUI.swift +++ b/Sources/FuzzilliCli/TerminalUI.swift @@ -148,6 +148,7 @@ class TerminalUI { } print(""" + \(postgresStats)\ ----------------- Fuzzer state: \(state) Uptime: \(formatTimeInterval(fuzzer.uptime())) diff --git a/Sources/FuzzilliCli/main.swift b/Sources/FuzzilliCli/main.swift index 8f0990f0e..fbf5068a8 100755 --- a/Sources/FuzzilliCli/main.swift +++ b/Sources/FuzzilliCli/main.swift @@ -35,7 +35,9 @@ Options: --logLevel=level : The log level to use. Valid values: "verbose", "info", "warning", "error", "fatal" (default: "info"). --maxIterations=n : Run for the specified number of iterations (default: unlimited). --maxRuntimeInHours=n : Run for the specified number of hours (default: unlimited). - --timeout=n : Timeout in ms after which to interrupt execution of programs (default depends on the profile). + --timeout=n : Timeout in ms after which to interrupt execution of programs (default depends + on the profile). Or provide an interval like --timeout=200,400. The actual + timeout in this interval will be determined by the start-up tests. --minMutationsPerSample=n : Discard samples from the corpus only after they have been mutated at least this many times (default: 25). --minCorpusSize=n : Keep at least this many samples in the corpus regardless of the number of times they have been mutated (default: 1000). @@ -136,7 +138,6 @@ let engineName = args["--engine"] ?? "mutation" let corpusName = args["--corpus"] ?? "basic" let maxIterations = args.int(for: "--maxIterations") ?? -1 let maxRuntimeInHours = args.int(for: "--maxRuntimeInHours") ?? -1 -let timeout = args.int(for: "--timeout") ?? profile.timeout let minMutationsPerSample = args.int(for: "--minMutationsPerSample") ?? 25 let minCorpusSize = args.int(for: "--minCorpusSize") ?? 1000 let maxCorpusSize = args.int(for: "--maxCorpusSize") ?? Int.max @@ -161,11 +162,36 @@ let additionalArguments = args["--additionalArguments"] ?? "" let tag = args["--tag"] let enableWasm = args.has("--wasm") let forDifferentialFuzzing = args.has("--forDifferentialFuzzing") - -// PostgreSQL corpus specific arguments let postgresUrl = args["--postgres-url"] ?? ProcessInfo.processInfo.environment["POSTGRES_URL"] let postgresLogging = args.has("--postgres-logging") +var timeout : Timeout +if let raw_timeout = args.string(for: "--timeout") { + if raw_timeout.contains(",") { + let parts = raw_timeout.split(separator: ",") + guard parts.count == 2 else { + configError("Timeout intervals must be specified by two boundaries, e.g. --timeout=200,400") + } + guard let lower = UInt32(parts[0]) else { + configError("The lower bound for --timeout must be an integer") + } + guard let upper = UInt32(parts[1]) else { + configError("The upper bound for --timeout must be an integer") + } + guard lower <= upper else { + configError("The --timeout=lower,upper boundaries must adhere to lower <= upper") + } + timeout = Timeout.interval(lower, upper) + } else { + guard let int_timeout = UInt32(raw_timeout) else { + configError("The value for --timeout must be an integer or interval") + } + timeout = Timeout.value(int_timeout) + } +} else { + timeout = profile.timeout +} + guard numJobs >= 1 else { configError("Must have at least 1 job") } @@ -593,7 +619,7 @@ func makeFuzzer(with configuration: Configuration) -> Fuzzer { // The configuration of the main fuzzer instance. let mainConfig = Configuration(arguments: CommandLine.arguments, - timeout: UInt32(timeout), + timeout: timeout.maxTimeout(), logLevel: logLevel, startupTests: profile.startupTests, minimizationLimit: minimizationLimit, @@ -640,7 +666,11 @@ fuzzer.sync { logger.info("You can recover the old corpus by moving it to \(path + "/corpus").") } } - exit(reason.toExitCode()) + let code = reason.toExitCode() + if (code != 0) { + print("Aborting execution after a fatal error.") + } + exit(code) } // Store samples to disk if requested. @@ -719,7 +749,7 @@ fuzzer.sync { // Initialize the fuzzer, and run startup tests fuzzer.initialize() - fuzzer.runStartupTests() + timeout = fuzzer.runStartupTests(with: timeout) // Start the main fuzzing job. fuzzer.start(runUntil: exitCondition) @@ -728,7 +758,7 @@ fuzzer.sync { // Add thread worker instances if requested // Worker instances use a slightly different configuration, mostly just a lower log level. let workerConfig = Configuration(arguments: CommandLine.arguments, - timeout: UInt32(timeout), + timeout: timeout.maxTimeout(), logLevel: .warning, startupTests: profile.startupTests, minimizationLimit: minimizationLimit, diff --git a/Targets/V8/fuzzbuild.sh b/Targets/V8/fuzzbuild.sh index 735d4fc4b..264705f43 100755 --- a/Targets/V8/fuzzbuild.sh +++ b/Targets/V8/fuzzbuild.sh @@ -16,7 +16,7 @@ if [ "$(uname)" == "Linux" ]; then # See https://v8.dev/docs/compile-arm64 for instructions on how to build on Arm64 - gn gen out/fuzzbuild --args='is_debug=false dcheck_always_on=true v8_static_library=true v8_enable_verify_heap=true v8_fuzzilli=true sanitizer_coverage_flags="trace-pc-guard" target_cpu="x64"' + gn gen out/fuzzbuild --args='is_debug=false dcheck_always_on=true v8_static_library=true v8_enable_verify_heap=true v8_enable_partition_alloc=false v8_fuzzilli=true sanitizer_coverage_flags="trace-pc-guard" target_cpu="x64"' else echo "Unsupported operating system" fi diff --git a/Tests/FuzzilliTests/ProgramBuilderTest.swift b/Tests/FuzzilliTests/ProgramBuilderTest.swift index 542f36f6c..2932757cb 100755 --- a/Tests/FuzzilliTests/ProgramBuilderTest.swift +++ b/Tests/FuzzilliTests/ProgramBuilderTest.swift @@ -508,7 +508,7 @@ class ProgramBuilderTests: XCTestCase { let i = b.loadInt(42) b.loadInt(43) b.loadInt(44) - XCTAssertEqual(b.randomParameters(n: 1).parameterTypes[0], .integer) + XCTAssertEqual(b.randomParameters(n: 1, withRestParameterProbability: 0).parameterTypes[0], .integer) // The same is true if we have variables of other types, but not enough to // ensure that a function using these types as parameter types can be called @@ -516,7 +516,7 @@ class ProgramBuilderTests: XCTestCase { let s = b.loadString("foo") let a = b.createIntArray(with: [1, 2, 3]) let o = b.createObject(with: [:]) - XCTAssertEqual(b.randomParameters(n: 1).parameterTypes[0], .integer) + XCTAssertEqual(b.randomParameters(n: 1, withRestParameterProbability: 0).parameterTypes[0], .integer) // But as soon as we have a sufficient number of other types as well, // we expect those to be used as well. @@ -530,7 +530,7 @@ class ProgramBuilderTests: XCTestCase { let types = [b.type(of: i), b.type(of: s), b.type(of: a), b.type(of: o)] var usesOfParameterType = [ILType: Int]() for _ in 0..<100 { - guard case .plain(let paramType) = b.randomParameters(n: 1).parameterTypes[0] else { return XCTFail("Unexpected parameter" )} + guard case .plain(let paramType) = b.randomParameters(n: 1, withRestParameterProbability: 0).parameterTypes[0] else { return XCTFail("Unexpected parameter" )} XCTAssert(types.contains(paramType)) usesOfParameterType[paramType] = (usesOfParameterType[paramType] ?? 0) + 1 } @@ -538,8 +538,8 @@ class ProgramBuilderTests: XCTestCase { // However, if we set the probability of using .jsAnything as parameter to 100%, we expect to only see .jsAnything parameters. b.probabilityOfUsingAnythingAsParameterTypeIfAvoidable = 1.0 - XCTAssertEqual(b.randomParameters(n: 1).parameterTypes[0], .jsAnything) - XCTAssertEqual(b.randomParameters(n: 1).parameterTypes[0], .jsAnything) + XCTAssertEqual(b.randomParameters(n: 1, withRestParameterProbability: 0).parameterTypes[0], .jsAnything) + XCTAssertEqual(b.randomParameters(n: 1, withRestParameterProbability: 0).parameterTypes[0], .jsAnything) } func testParameterGeneration3() { @@ -562,7 +562,7 @@ class ProgramBuilderTests: XCTestCase { XCTAssertEqual(b.type(of: p1), .object(withProperties: ["x", "y"])) XCTAssertEqual(b.type(of: p1), b.type(of: p2)) - let f1 = b.buildPlainFunction(with: b.randomParameters(n: 1)) { args in + let f1 = b.buildPlainFunction(with: b.randomParameters(n: 1, withRestParameterProbability: 0)) { args in let p = args[0] XCTAssertEqual(b.type(of: p), b.type(of: p1)) XCTAssertEqual(b.type(of: p).properties, ["x", "y"]) @@ -582,7 +582,7 @@ class ProgramBuilderTests: XCTestCase { XCTAssert(b.type(of: a1).properties.contains("length")) XCTAssert(b.type(of: a1).methods.contains("slice")) - let f2 = b.buildPlainFunction(with: b.randomParameters(n: 1)) { args in + let f2 = b.buildPlainFunction(with: b.randomParameters(n: 1, withRestParameterProbability: 0)) { args in let a = args[0] XCTAssertEqual(b.type(of: a), b.type(of: a1)) } @@ -601,7 +601,7 @@ class ProgramBuilderTests: XCTestCase { XCTAssertEqual(b.type(of: n1), b.type(of: n2)) XCTAssertEqual(b.type(of: n2), b.type(of: n3)) - let f3 = b.buildPlainFunction(with: b.randomParameters(n: 1)) { args in + let f3 = b.buildPlainFunction(with: b.randomParameters(n: 1, withRestParameterProbability: 0)) { args in let a = args[0] XCTAssertEqual(b.type(of: a), b.type(of: n1)) } @@ -610,6 +610,21 @@ class ProgramBuilderTests: XCTestCase { XCTAssert([n1, n2, n3].contains(args[0])) } + func testRestParameterGeneration() { + let fuzzer = makeMockFuzzer() + let b = fuzzer.makeBuilder() + b.loadInt(42) + b.loadInt(43) + + // With probability 1.0, we should always generate a rest parameter if possible. + let params = b.randomParameters(n: 2, withRestParameterProbability: 1.0) + XCTAssertEqual(params.count, 2) + XCTAssert(params.parameters.hasRestParameter) + guard case .plain(_) = params.parameterTypes[0] else { return XCTFail("Expected a plain parameter") } + guard case .rest(_) = params.parameterTypes[1] else { return XCTFail("Expected a rest parameter") } + } + + func testObjectLiteralBuilding() { let fuzzer = makeMockFuzzer() let b = fuzzer.makeBuilder() @@ -3049,3 +3064,110 @@ class ProgramBuilderTests: XCTestCase { } } } + +class ProgramBuilderRuntimeDataTests: XCTestCase { + func runFuzzerWithGenerator(_ generator: CodeGenerator) -> String { + let fuzzer = makeMockFuzzer(overwriteGenerators: WeightedList([(generator, 1)])) + let b = fuzzer.makeBuilder() + + let syntheticGenerator = b.assembleSyntheticGenerator(for: generator) + XCTAssertNotNil(syntheticGenerator) + let numInstructions = b.complete(generator: syntheticGenerator!, withBudget: 3) + XCTAssertGreaterThan(numInstructions, 0) + + let program = b.finalize() + return fuzzer.lifter.lift(program) + } + + func testNested() { + let loopGenerator = CodeGenerator("TestDoWhileLoop", [ + GeneratorStub("BeginLoop") { b in + let loopVar = b.loadInt(0) + b.runtimeData.push("loopVar", loopVar) + b.emit(BeginDoWhileLoopBody()) + }, + GeneratorStub("EndLoop") { b in + let loopVar = b.runtimeData.pop("loopVar") + b.unary(.PreInc, loopVar) + b.emit(BeginDoWhileLoopHeader()) + let cond = b.compare(loopVar, with: b.loadInt(3), using: .lessThan) + b.emit(EndDoWhileLoop(), withInputs: [cond]) + } + ]) + XCTAssertEqual( + runFuzzerWithGenerator(loopGenerator), + """ + let v0 = 0; + do { + let v1 = 0; + do { + ++v1; + } while (v1 < 3) + ++v0; + } while (v0 < 3) + + """) + } + + func testMultiLabel() { + var counter: Int64 = 0 + let defineAndAddGenerator = CodeGenerator("TestMultiLabel", [ + GeneratorStub("Define") { b in + b.runtimeData.push("first", b.loadInt(counter)) + counter += 1 + b.runtimeData.push("second", b.loadInt(counter)) + counter += 1 + b.runtimeData.push("third", b.loadInt(counter)) + counter += 1 + }, + GeneratorStub("Add") { b in + // The order in which the different lables are popped doesn't matter. + let third = b.runtimeData.pop("third") + let first = b.runtimeData.pop("first") + let second = b.runtimeData.pop("second") + b.binary(b.binary(first, second, with: .Add), third, with: .Add) + } + ]) + XCTAssertEqual( + runFuzzerWithGenerator(defineAndAddGenerator), + """ + (3 + 4) + 5; + (0 + 1) + 2; + + """) + } + + func testPassOn() { + var counter: Int64 = 10 + let defineAndAddGenerator = CodeGenerator("TestPassOn", [ + GeneratorStub("Define") { b in + let value = b.loadInt(counter) + b.runtimeData.push("value", value) + b.binary(value, b.loadInt(0), with: .Add) + counter += 1 + }, + GeneratorStub("AddOne") { b in + let value = b.runtimeData.popAndPush("value") + b.binary(value, b.loadInt(1), with: .Add) + }, + GeneratorStub("SubOne") { b in + let value = b.runtimeData.pop("value") + b.binary(value, b.loadInt(1), with: .Sub) + }, + ]) + XCTAssertEqual( + runFuzzerWithGenerator(defineAndAddGenerator), + """ + 10 + 0; + 11 + 0; + 11 + 1; + 11 - 1; + 10 + 1; + 12 + 0; + 12 + 1; + 12 - 1; + 10 - 1; + + """) + } +} diff --git a/Tests/FuzzilliTests/TypeSystemTest.swift b/Tests/FuzzilliTests/TypeSystemTest.swift index dedccad09..5e6f0fd77 100755 --- a/Tests/FuzzilliTests/TypeSystemTest.swift +++ b/Tests/FuzzilliTests/TypeSystemTest.swift @@ -1288,7 +1288,7 @@ class TypeSystemTests: XCTestCase { // Tests on the whole ILType. let ref = {t in ILType.wasmRef(.Abstract(t), nullability: false)} - let refNull = {t in ILType.wasmRef(.Abstract(t), nullability: false)} + let refNull = {t in ILType.wasmRef(.Abstract(t), nullability: true)} for type in allTypes { let refT = ref(type) let refNullT = refNull(type) diff --git a/Tests/FuzzilliTests/WasmTests.swift b/Tests/FuzzilliTests/WasmTests.swift index 0932b2421..05a3c6b61 100755 --- a/Tests/FuzzilliTests/WasmTests.swift +++ b/Tests/FuzzilliTests/WasmTests.swift @@ -4116,9 +4116,9 @@ class WasmFoundationTests: XCTestCase { b.buildWasmModule { wasmModule in let f1 = wasmModule.addWasmFunction(with: [] => []) { _, _, _ in return []} let f2 = wasmModule.addWasmFunction(with: [] => []) { _, _, _ in return []} - wasmModule.addElementSegment(elementsType: .wasmFunctionDef(), elements: []) - wasmModule.addElementSegment(elementsType: .wasmFunctionDef(), elements: [f1]) - wasmModule.addElementSegment(elementsType: .wasmFunctionDef(), elements: [f1, f2]) + wasmModule.addElementSegment(elements: []) + wasmModule.addElementSegment(elements: [f1]) + wasmModule.addElementSegment(elements: [f1, f2]) } } testForOutput(program: jsProg, runner: runner, outputString: "") @@ -4130,7 +4130,7 @@ class WasmFoundationTests: XCTestCase { let jsProg = buildAndLiftProgram() { b in b.buildWasmModule { wasmModule in let function = wasmModule.addWasmFunction(with: [] => []) { _, _, _ in return []} - let segment = wasmModule.addElementSegment(elementsType: .wasmFunctionDef(), elements: [function]) + let segment = wasmModule.addElementSegment(elements: [function]) wasmModule.addWasmFunction(with: [] => []) { f, _, _ in f.wasmDropElementSegment(elementSegment: segment) return [] @@ -4140,7 +4140,97 @@ class WasmFoundationTests: XCTestCase { testForOutput(program: jsProg, runner: runner, outputString: "") } - // TODO(427115604): add tests that actually use element segments once table.init operation is supported. + func wasmTableInit(isTable64: Bool) throws { + let runner = try GetJavaScriptExecutorOrSkipTest() + + let jsProg = buildAndLiftProgram() { b in + let module = b.buildWasmModule { module in + let f1 = module.addWasmFunction(with: [] => [.wasmi64]) { f, _, _ in return [f.consti64(1)]} + let f2 = module.addWasmFunction(with: [] => [.wasmi64]) { f, _, _ in return [f.consti64(2)]} + let f3 = module.addWasmFunction(with: [] => [.wasmi64]) { f, _, _ in return [f.consti64(3)]} + + module.addTable(elementType: .wasmFuncRef, + minSize: 10, + definedEntries: [], + definedEntryValues: [], + isTable64: isTable64) + let table2 = module.addTable(elementType: .wasmFuncRef, + minSize: 10, + definedEntries: [], + definedEntryValues: [], + isTable64: isTable64) + module.addElementSegment(elements: []) + let elemSegment2 = module.addElementSegment(elements: [f3, f3, f1, f2]) + + module.addWasmFunction(with: [] => [.wasmi64, .wasmi64]) { f, _, _ in + let tableOffset = { (i: Int) in isTable64 ? f.consti64(Int64(i)) : f.consti32(Int32(i))} + f.wasmTableInit(elementSegment: elemSegment2, table: table2, tableOffset: tableOffset(5), elementSegmentOffset: f.consti32(2), nrOfElementsToUpdate: f.consti32(2)) + let callIndirect = { (table: Variable, idx: Int) in + let idxVar = isTable64 ? f.consti64(Int64(idx)) : f.consti32(Int32(idx)) + return f.wasmCallIndirect(signature: [] => [.wasmi64], table: table, functionArgs: [], tableIndex: idxVar) + } + return callIndirect(table2, 5) + callIndirect(table2, 6) + } + } + let res = b.callMethod(module.getExportedMethod(at: 3), on: module.loadExports()) + b.callFunction(b.createNamedVariable(forBuiltin: "output"), withArgs: [b.arrayToStringForTesting(res)]) + } + + testForOutput(program: jsProg, runner: runner, outputString: "1,2\n") + } + + func testTableInit32() throws { + try wasmTableInit(isTable64: false) + } + + func testTableInit64() throws { + try wasmTableInit(isTable64: true) + } + + func wasmTableCopy(isTable64: Bool) throws { + let runner = try GetJavaScriptExecutorOrSkipTest() + + let jsProg = buildAndLiftProgram() { b in + let module = b.buildWasmModule { module in + let f1 = module.addWasmFunction(with: [] => [.wasmi64]) { f, _, _ in return [f.consti64(1)]} + let f2 = module.addWasmFunction(with: [] => [.wasmi64]) { f, _, _ in return [f.consti64(2)]} + let f3 = module.addWasmFunction(with: [] => [.wasmi64]) { f, _, _ in return [f.consti64(3)]} + + let table1 = module.addTable(elementType: .wasmFuncRef, + minSize: 10, + definedEntries: [], + definedEntryValues: [], + isTable64: isTable64) + let table2 = module.addTable(elementType: .wasmFuncRef, + minSize: 10, + definedEntries: (0..<4).map { WasmTableType.IndexInTableAndWasmSignature.init(indexInTable: $0, signature: [] => [.wasmi64]) }, + definedEntryValues: [f3, f3, f1, f2], + isTable64: isTable64) + + module.addWasmFunction(with: [] => [.wasmi64, .wasmi64]) { f, _, _ in + let const = { (i: Int) in isTable64 ? f.consti64(Int64(i)) : f.consti32(Int32(i))} + f.wasmTableCopy(dstTable: table1, srcTable: table2, dstOffset: const(1), srcOffset: const(2), count: const(2)) + let callIndirect = { (table: Variable, idx: Int) in + let idxVar = isTable64 ? f.consti64(Int64(idx)) : f.consti32(Int32(idx)) + return f.wasmCallIndirect(signature: [] => [.wasmi64], table: table, functionArgs: [], tableIndex: idxVar) + } + return callIndirect(table1, 1) + callIndirect(table1, 2) + } + } + let res = b.callMethod(module.getExportedMethod(at: 3), on: module.loadExports()) + b.callFunction(b.createNamedVariable(forBuiltin: "output"), withArgs: [b.arrayToStringForTesting(res)]) + } + + testForOutput(program: jsProg, runner: runner, outputString: "1,2\n") + } + + func testTableCopy32() throws { + try wasmTableCopy(isTable64: false) + } + + func testTableCopy64() throws { + try wasmTableCopy(isTable64: true) + } } class WasmGCTests: XCTestCase { diff --git a/Tools/presubmit.py b/Tools/presubmit.py new file mode 100644 index 000000000..df04798e6 --- /dev/null +++ b/Tools/presubmit.py @@ -0,0 +1,57 @@ +import os +import shutil +import subprocess + +from pathlib import Path + +BASE_DIR = Path(__file__).parent.parent.resolve() + +KNOWN_PROTO_FILES = [ + "program.proto", + "operations.proto", + "sync.proto", + "ast.proto" +] + +def check_git_clean(): + """Check that the git repository does not have any uncommitted changes.""" + result = subprocess.run( + ["git", "diff", "--name-only"], + cwd=BASE_DIR, + capture_output=True, + check=True) + assert result.stdout.decode().strip() == "", f"Unexpected modified files: {result.stdout.decode()}" + +def check_proto(): + """Check that program.proto is up-to-date.""" + print("Checking generated protobuf files...") + proto_dir = BASE_DIR / "Sources/Fuzzilli/Protobuf" + subprocess.run(["python3", "./gen_programproto.py"], cwd=proto_dir, check=True) + # gen_programproto.py should be a no-op. + check_git_clean() + + if not shutil.which("protoc"): + print("Skipping protobuf validation as protoc is not available.") + return + + swift_protobuf_path = BASE_DIR / ".build/checkouts/swift-protobuf" + assert swift_protobuf_path.exists(), \ + "The presubmit requires a swift-protobuf checkout, e.g. via \"swift build\"" + # Build swift-protobuf (for simplicity reuse the fetched repository from the swift-protobuf library). + # Use a debug build as running it is very quick while building it with reelase might be slow. + subprocess.run(["swift", "build", "-c", "debug"], cwd=swift_protobuf_path, check=True) + env = os.environ.copy() + env["PATH"] = f"{swift_protobuf_path}/.build/debug:" + env["PATH"] + cmd = ["protoc", "--swift_opt=Visibility=Public", "--swift_out=."] + KNOWN_PROTO_FILES + subprocess.run(cmd, cwd=proto_dir, check=True, env=env) + # Regenerating the protobuf files should be a no-op. + check_git_clean() + +def main(): + check_git_clean() + check_proto() + # TODO(mliedtke): Ensure formatting delta is zero once we enable automated formatting. + + +if __name__ == '__main__': + main()