From 5449744d79ec996c7334681ac1b85e5461194dc8 Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Wed, 12 Oct 2022 16:19:58 -0500 Subject: [Parser][NFC] Pass instruction locations to `makeXXX` functions (#5133) The `makeXXX` functions that are responsible for individual instructions will generally need the locations of those functions to emit useful errors. However, since the instruction names are parsed before the `makeXXX` functions are called, the functions have no good way of getting the location of the beginning of the instruction. Fix this by explicitly passing them the location of the beginning of the instruction. --- src/wasm/wat-parser.cpp | 471 ++++++++++++++++++++++++++++-------------------- 1 file changed, 279 insertions(+), 192 deletions(-) (limited to 'src/wasm/wat-parser.cpp') diff --git a/src/wasm/wat-parser.cpp b/src/wasm/wat-parser.cpp index 5b33a6322..83647ce8a 100644 --- a/src/wasm/wat-parser.cpp +++ b/src/wasm/wat-parser.cpp @@ -1094,133 +1094,156 @@ template Result globaltype(Ctx&); template MaybeResult instr(Ctx&); template Result instrs(Ctx&); template Result expr(Ctx&); -template Result makeUnreachable(Ctx&); -template Result makeNop(Ctx&); -template -Result makeBinary(Ctx&, BinaryOp op); -template Result makeUnary(Ctx&, UnaryOp op); -template Result makeSelect(Ctx&); -template Result makeDrop(Ctx&); -template Result makeMemorySize(Ctx&); -template Result makeMemoryGrow(Ctx&); -template Result makeLocalGet(Ctx&); -template Result makeLocalTee(Ctx&); -template Result makeLocalSet(Ctx&); -template Result makeGlobalGet(Ctx&); -template Result makeGlobalSet(Ctx&); -template Result makeBlock(Ctx&); -template Result makeThenOrElse(Ctx&); -template Result makeConst(Ctx&, Type type); -template -Result makeLoad(Ctx&, Type type, bool isAtomic); -template -Result makeStore(Ctx&, Type type, bool isAtomic); -template -Result makeAtomicRMWOrCmpxchg(Ctx&, Type type); +template +Result makeUnreachable(Ctx&, Index); +template Result makeNop(Ctx&, Index); +template +Result makeBinary(Ctx&, Index, BinaryOp op); +template +Result makeUnary(Ctx&, Index, UnaryOp op); +template Result makeSelect(Ctx&, Index); +template Result makeDrop(Ctx&, Index); +template Result makeMemorySize(Ctx&, Index); +template Result makeMemoryGrow(Ctx&, Index); +template Result makeLocalGet(Ctx&, Index); +template Result makeLocalTee(Ctx&, Index); +template Result makeLocalSet(Ctx&, Index); +template Result makeGlobalGet(Ctx&, Index); +template Result makeGlobalSet(Ctx&, Index); +template Result makeBlock(Ctx&, Index); +template Result makeThenOrElse(Ctx&, Index); +template +Result makeConst(Ctx&, Index, Type type); +template +Result makeLoad(Ctx&, Index, Type type, bool isAtomic); +template +Result makeStore(Ctx&, Index, Type type, bool isAtomic); +template +Result makeAtomicRMWOrCmpxchg(Ctx&, Index, Type type); template Result -makeAtomicRMW(Ctx&, Type type, uint8_t bytes, const char* extra); +makeAtomicRMW(Ctx&, Index, Type type, uint8_t bytes, const char* extra); template Result -makeAtomicCmpxchg(Ctx&, Type type, uint8_t bytes, const char* extra); +makeAtomicCmpxchg(Ctx&, Index, Type type, uint8_t bytes, const char* extra); +template +Result makeAtomicWait(Ctx&, Index, Type type); +template +Result makeAtomicNotify(Ctx&, Index); template -Result makeAtomicWait(Ctx&, Type type); -template Result makeAtomicNotify(Ctx&); -template Result makeAtomicFence(Ctx&); +Result makeAtomicFence(Ctx&, Index); template Result -makeSIMDExtract(Ctx&, SIMDExtractOp op, size_t lanes); +makeSIMDExtract(Ctx&, Index, SIMDExtractOp op, size_t lanes); template Result -makeSIMDReplace(Ctx&, SIMDReplaceOp op, size_t lanes); -template Result makeSIMDShuffle(Ctx&); +makeSIMDReplace(Ctx&, Index, SIMDReplaceOp op, size_t lanes); template -Result makeSIMDTernary(Ctx&, SIMDTernaryOp op); +Result makeSIMDShuffle(Ctx&, Index); template -Result makeSIMDShift(Ctx&, SIMDShiftOp op); +Result makeSIMDTernary(Ctx&, Index, SIMDTernaryOp op); template -Result makeSIMDLoad(Ctx&, SIMDLoadOp op); +Result makeSIMDShift(Ctx&, Index, SIMDShiftOp op); template -Result makeSIMDLoadStoreLane(Ctx&, - SIMDLoadStoreLaneOp op); -template Result makeMemoryInit(Ctx&); -template Result makeDataDrop(Ctx&); -template Result makeMemoryCopy(Ctx&); -template Result makeMemoryFill(Ctx&); -template Result makePush(Ctx&); -template Result makePop(Ctx&); -template Result makeIf(Ctx&); +Result makeSIMDLoad(Ctx&, Index, SIMDLoadOp op); template -Result makeMaybeBlock(Ctx&, size_t i, Type type); -template Result makeLoop(Ctx&); +Result +makeSIMDLoadStoreLane(Ctx&, Index, SIMDLoadStoreLaneOp op); +template Result makeMemoryInit(Ctx&, Index); +template Result makeDataDrop(Ctx&, Index); +template Result makeMemoryCopy(Ctx&, Index); +template Result makeMemoryFill(Ctx&, Index); +template Result makePush(Ctx&, Index); +template Result makePop(Ctx&, Index); +template Result makeIf(Ctx&, Index); +template +Result makeMaybeBlock(Ctx&, Index, size_t i, Type type); +template Result makeLoop(Ctx&, Index); +template +Result makeCall(Ctx&, Index, bool isReturn); +template +Result makeCallIndirect(Ctx&, Index, bool isReturn); +template Result makeBreak(Ctx&, Index); +template Result makeBreakTable(Ctx&, Index); +template Result makeReturn(Ctx&, Index); +template Result makeRefNull(Ctx&, Index); +template +Result makeRefIs(Ctx&, Index, RefIsOp op); +template Result makeRefFunc(Ctx&, Index); +template Result makeRefEq(Ctx&, Index); +template Result makeTableGet(Ctx&, Index); +template Result makeTableSet(Ctx&, Index); +template Result makeTableSize(Ctx&, Index); +template Result makeTableGrow(Ctx&, Index); +template Result makeTry(Ctx&, Index); +template +Result +makeTryOrCatchBody(Ctx&, Index, Type type, bool isTry); +template Result makeThrow(Ctx&, Index); +template Result makeRethrow(Ctx&, Index); +template Result makeTupleMake(Ctx&, Index); template -Result makeCall(Ctx&, bool isReturn); +Result makeTupleExtract(Ctx&, Index); template -Result makeCallIndirect(Ctx&, bool isReturn); -template Result makeBreak(Ctx&); -template Result makeBreakTable(Ctx&); -template Result makeReturn(Ctx&); -template Result makeRefNull(Ctx&); -template Result makeRefIs(Ctx&, RefIsOp op); -template Result makeRefFunc(Ctx&); -template Result makeRefEq(Ctx&); -template Result makeTableGet(Ctx&); -template Result makeTableSet(Ctx&); -template Result makeTableSize(Ctx&); -template Result makeTableGrow(Ctx&); -template Result makeTry(Ctx&); +Result makeCallRef(Ctx&, Index, bool isReturn); +template Result makeI31New(Ctx&, Index); template -Result makeTryOrCatchBody(Ctx&, Type type, bool isTry); -template Result makeThrow(Ctx&); -template Result makeRethrow(Ctx&); -template Result makeTupleMake(Ctx&); -template Result makeTupleExtract(Ctx&); +Result makeI31Get(Ctx&, Index, bool signed_); +template Result makeRefTest(Ctx&, Index); template -Result makeCallRef(Ctx&, bool isReturn); -template Result makeI31New(Ctx&); +Result makeRefTestStatic(Ctx&, Index); +template Result makeRefCast(Ctx&, Index); template -Result makeI31Get(Ctx&, bool signed_); -template Result makeRefTest(Ctx&); -template Result makeRefTestStatic(Ctx&); -template Result makeRefCast(Ctx&); -template Result makeRefCastStatic(Ctx&); -template Result makeRefCastNopStatic(Ctx&); -template Result makeBrOn(Ctx&, BrOnOp op); +Result makeRefCastStatic(Ctx&, Index); template -Result makeBrOnStatic(Ctx&, BrOnOp op); +Result makeRefCastNopStatic(Ctx&, Index); template -Result makeStructNewStatic(Ctx&, bool default_); +Result makeBrOn(Ctx&, Index, BrOnOp op); template -Result makeStructGet(Ctx&, bool signed_ = false); -template Result makeStructSet(Ctx&); +Result makeBrOnStatic(Ctx&, Index, BrOnOp op); template -Result makeArrayNewStatic(Ctx&, bool default_); -template Result makeArrayInitStatic(Ctx&); +Result makeStructNewStatic(Ctx&, Index, bool default_); template -Result makeArrayGet(Ctx&, bool signed_ = false); -template Result makeArraySet(Ctx&); -template Result makeArrayLen(Ctx&); -template Result makeArrayCopy(Ctx&); -template Result makeRefAs(Ctx&, RefAsOp op); +Result makeStructGet(Ctx&, Index, bool signed_ = false); +template Result makeStructSet(Ctx&, Index); template -Result makeStringNew(Ctx&, StringNewOp op); -template Result makeStringConst(Ctx&); +Result makeArrayNewStatic(Ctx&, Index, bool default_); template -Result makeStringMeasure(Ctx&, StringMeasureOp op); +Result makeArrayInitStatic(Ctx&, Index); template -Result makeStringEncode(Ctx&, StringEncodeOp op); -template Result makeStringConcat(Ctx&); -template Result makeStringEq(Ctx&); +Result makeArrayGet(Ctx&, Index, bool signed_ = false); +template Result makeArraySet(Ctx&, Index); +template Result makeArrayLen(Ctx&, Index); +template Result makeArrayCopy(Ctx&, Index); template -Result makeStringAs(Ctx&, StringAsOp op); -template Result makeStringWTF8Advance(Ctx&); -template Result makeStringWTF16Get(Ctx&); -template Result makeStringIterNext(Ctx&); +Result makeRefAs(Ctx&, Index, RefAsOp op); +template +Result makeStringNew(Ctx&, Index, StringNewOp op); +template +Result makeStringConst(Ctx&, Index); +template +Result makeStringMeasure(Ctx&, Index, StringMeasureOp op); +template +Result makeStringEncode(Ctx&, Index, StringEncodeOp op); +template +Result makeStringConcat(Ctx&, Index); +template Result makeStringEq(Ctx&, Index); +template +Result makeStringAs(Ctx&, Index, StringAsOp op); +template +Result makeStringWTF8Advance(Ctx&, Index); +template +Result makeStringWTF16Get(Ctx&, Index); +template +Result makeStringIterNext(Ctx&, Index); +template +Result +makeStringIterMove(Ctx&, Index, StringIterMoveOp op); template -Result makeStringIterMove(Ctx&, StringIterMoveOp op); +Result +makeStringSliceWTF(Ctx&, Index, StringSliceWTFOp op); template -Result makeStringSliceWTF(Ctx&, StringSliceWTFOp op); -template Result makeStringSliceIter(Ctx&); +Result makeStringSliceIter(Ctx&, Index); // Modules template MaybeResult maybeTypeidx(Ctx& ctx); @@ -1535,6 +1558,7 @@ template Result globaltype(Ctx& ctx) { // ============ template MaybeResult instr(Ctx& ctx) { + auto pos = ctx.in.getPos(); auto keyword = ctx.in.takeKeyword(); if (!keyword) { return {}; @@ -1617,70 +1641,83 @@ template Result expr(Ctx& ctx) { return ctx.makeExpr(*insts); } -template Result makeUnreachable(Ctx& ctx) { +template +Result makeUnreachable(Ctx& ctx, Index pos) { return ctx.makeUnreachable(); } -template Result makeNop(Ctx& ctx) { +template +Result makeNop(Ctx& ctx, Index pos) { return ctx.makeNop(); } template -Result makeBinary(Ctx& ctx, BinaryOp op) { +Result makeBinary(Ctx& ctx, Index pos, BinaryOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeUnary(Ctx& ctx, UnaryOp op) { +Result makeUnary(Ctx& ctx, Index pos, UnaryOp op) { return ctx.in.err("unimplemented instruction"); } -template Result makeSelect(Ctx& ctx) { +template +Result makeSelect(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeDrop(Ctx& ctx) { +template +Result makeDrop(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeMemorySize(Ctx& ctx) { +template +Result makeMemorySize(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeMemoryGrow(Ctx& ctx) { +template +Result makeMemoryGrow(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeLocalGet(Ctx& ctx) { +template +Result makeLocalGet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeLocalTee(Ctx& ctx) { +template +Result makeLocalTee(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeLocalSet(Ctx& ctx) { +template +Result makeLocalSet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeGlobalGet(Ctx& ctx) { +template +Result makeGlobalGet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeGlobalSet(Ctx& ctx) { +template +Result makeGlobalSet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeBlock(Ctx& ctx) { +template +Result makeBlock(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeThenOrElse(Ctx& ctx) { +template +Result makeThenOrElse(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeConst(Ctx& ctx, Type type) { +Result makeConst(Ctx& ctx, Index pos, Type type) { assert(type.isBasic()); switch (type.getBasic()) { case Type::i32: @@ -1713,354 +1750,404 @@ Result makeConst(Ctx& ctx, Type type) { } template -Result makeLoad(Ctx& ctx, Type type, bool isAtomic) { +Result +makeLoad(Ctx& ctx, Index pos, Type type, bool isAtomic) { return ctx.in.err("unimplemented instruction"); } template -Result makeStore(Ctx& ctx, Type type, bool isAtomic) { +Result +makeStore(Ctx& ctx, Index pos, Type type, bool isAtomic) { return ctx.in.err("unimplemented instruction"); } template -Result makeAtomicRMWOrCmpxchg(Ctx& ctx, Type type) { +Result +makeAtomicRMWOrCmpxchg(Ctx& ctx, Index pos, Type type) { return ctx.in.err("unimplemented instruction"); } template -Result -makeAtomicRMW(Ctx& ctx, Type type, uint8_t bytes, const char* extra) { +Result makeAtomicRMW( + Ctx& ctx, Index pos, Type type, uint8_t bytes, const char* extra) { return ctx.in.err("unimplemented instruction"); } template -Result -makeAtomicCmpxchg(Ctx& ctx, Type type, uint8_t bytes, const char* extra) { +Result makeAtomicCmpxchg( + Ctx& ctx, Index pos, Type type, uint8_t bytes, const char* extra) { return ctx.in.err("unimplemented instruction"); } template -Result makeAtomicWait(Ctx& ctx, Type type) { +Result makeAtomicWait(Ctx& ctx, Index pos, Type type) { return ctx.in.err("unimplemented instruction"); } -template Result makeAtomicNotify(Ctx& ctx) { +template +Result makeAtomicNotify(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeAtomicFence(Ctx& ctx) { +template +Result makeAtomicFence(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template Result -makeSIMDExtract(Ctx& ctx, SIMDExtractOp op, size_t lanes) { +makeSIMDExtract(Ctx& ctx, Index pos, SIMDExtractOp op, size_t lanes) { return ctx.in.err("unimplemented instruction"); } template Result -makeSIMDReplace(Ctx& ctx, SIMDReplaceOp op, size_t lanes) { +makeSIMDReplace(Ctx& ctx, Index pos, SIMDReplaceOp op, size_t lanes) { return ctx.in.err("unimplemented instruction"); } -template Result makeSIMDShuffle(Ctx& ctx) { +template +Result makeSIMDShuffle(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeSIMDTernary(Ctx& ctx, SIMDTernaryOp op) { +Result +makeSIMDTernary(Ctx& ctx, Index pos, SIMDTernaryOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeSIMDShift(Ctx& ctx, SIMDShiftOp op) { +Result +makeSIMDShift(Ctx& ctx, Index pos, SIMDShiftOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeSIMDLoad(Ctx& ctx, SIMDLoadOp op) { +Result makeSIMDLoad(Ctx& ctx, Index pos, SIMDLoadOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeSIMDLoadStoreLane(Ctx& ctx, - SIMDLoadStoreLaneOp op) { +Result +makeSIMDLoadStoreLane(Ctx& ctx, Index pos, SIMDLoadStoreLaneOp op) { return ctx.in.err("unimplemented instruction"); } -template Result makeMemoryInit(Ctx& ctx) { +template +Result makeMemoryInit(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeDataDrop(Ctx& ctx) { +template +Result makeDataDrop(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeMemoryCopy(Ctx& ctx) { +template +Result makeMemoryCopy(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeMemoryFill(Ctx& ctx) { +template +Result makeMemoryFill(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makePush(Ctx& ctx) { +template +Result makePush(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makePop(Ctx& ctx) { +template +Result makePop(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeIf(Ctx& ctx) { +template +Result makeIf(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeMaybeBlock(Ctx& ctx, size_t i, Type type) { +Result +makeMaybeBlock(Ctx& ctx, Index pos, size_t i, Type type) { return ctx.in.err("unimplemented instruction"); } -template Result makeLoop(Ctx& ctx) { +template +Result makeLoop(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeCall(Ctx& ctx, bool isReturn) { +Result makeCall(Ctx& ctx, Index pos, bool isReturn) { return ctx.in.err("unimplemented instruction"); } template -Result makeCallIndirect(Ctx& ctx, bool isReturn) { +Result +makeCallIndirect(Ctx& ctx, Index pos, bool isReturn) { return ctx.in.err("unimplemented instruction"); } -template Result makeBreak(Ctx& ctx) { +template +Result makeBreak(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeBreakTable(Ctx& ctx) { +template +Result makeBreakTable(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeReturn(Ctx& ctx) { +template +Result makeReturn(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeRefNull(Ctx& ctx) { +template +Result makeRefNull(Ctx& ctx, Index pos) { auto t = heaptype(ctx); CHECK_ERR(t); return ctx.makeRefNull(*t); } template -Result makeRefIs(Ctx& ctx, RefIsOp op) { +Result makeRefIs(Ctx& ctx, Index pos, RefIsOp op) { return ctx.in.err("unimplemented instruction"); } -template Result makeRefFunc(Ctx& ctx) { +template +Result makeRefFunc(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeRefEq(Ctx& ctx) { +template +Result makeRefEq(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTableGet(Ctx& ctx) { +template +Result makeTableGet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTableSet(Ctx& ctx) { +template +Result makeTableSet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTableSize(Ctx& ctx) { +template +Result makeTableSize(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTableGrow(Ctx& ctx) { +template +Result makeTableGrow(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTry(Ctx& ctx) { +template +Result makeTry(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template Result -makeTryOrCatchBody(Ctx& ctx, Type type, bool isTry) { +makeTryOrCatchBody(Ctx& ctx, Index pos, Type type, bool isTry) { return ctx.in.err("unimplemented instruction"); } -template Result makeThrow(Ctx& ctx) { +template +Result makeThrow(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeRethrow(Ctx& ctx) { +template +Result makeRethrow(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTupleMake(Ctx& ctx) { +template +Result makeTupleMake(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeTupleExtract(Ctx& ctx) { +template +Result makeTupleExtract(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeCallRef(Ctx& ctx, bool isReturn) { +Result makeCallRef(Ctx& ctx, Index pos, bool isReturn) { return ctx.in.err("unimplemented instruction"); } -template Result makeI31New(Ctx& ctx) { +template +Result makeI31New(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeI31Get(Ctx& ctx, bool signed_) { +Result makeI31Get(Ctx& ctx, Index pos, bool signed_) { return ctx.in.err("unimplemented instruction"); } -template Result makeRefTest(Ctx& ctx) { +template +Result makeRefTest(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeRefTestStatic(Ctx& ctx) { +Result makeRefTestStatic(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeRefCast(Ctx& ctx) { +template +Result makeRefCast(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeRefCastStatic(Ctx& ctx) { +Result makeRefCastStatic(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeRefCastNopStatic(Ctx& ctx) { +Result makeRefCastNopStatic(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeBrOn(Ctx& ctx, BrOnOp op) { +Result makeBrOn(Ctx& ctx, Index pos, BrOnOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeBrOnStatic(Ctx& ctx, BrOnOp op) { +Result makeBrOnStatic(Ctx& ctx, Index pos, BrOnOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeStructNewStatic(Ctx& ctx, bool default_) { +Result +makeStructNewStatic(Ctx& ctx, Index pos, bool default_) { return ctx.in.err("unimplemented instruction"); } template -Result makeStructGet(Ctx& ctx, bool signed_) { +Result makeStructGet(Ctx& ctx, Index pos, bool signed_) { return ctx.in.err("unimplemented instruction"); } -template Result makeStructSet(Ctx& ctx) { +template +Result makeStructSet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeArrayNewStatic(Ctx& ctx, bool default_) { +Result +makeArrayNewStatic(Ctx& ctx, Index pos, bool default_) { return ctx.in.err("unimplemented instruction"); } template -Result makeArrayInitStatic(Ctx& ctx) { +Result makeArrayInitStatic(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeArrayGet(Ctx& ctx, bool signed_) { +Result makeArrayGet(Ctx& ctx, Index pos, bool signed_) { return ctx.in.err("unimplemented instruction"); } -template Result makeArraySet(Ctx& ctx) { +template +Result makeArraySet(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeArrayLen(Ctx& ctx) { +template +Result makeArrayLen(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeArrayCopy(Ctx& ctx) { +template +Result makeArrayCopy(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeRefAs(Ctx& ctx, RefAsOp op) { +Result makeRefAs(Ctx& ctx, Index pos, RefAsOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringNew(Ctx& ctx, StringNewOp op) { +Result +makeStringNew(Ctx& ctx, Index pos, StringNewOp op) { return ctx.in.err("unimplemented instruction"); } -template Result makeStringConst(Ctx& ctx) { +template +Result makeStringConst(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringMeasure(Ctx& ctx, StringMeasureOp op) { +Result +makeStringMeasure(Ctx& ctx, Index pos, StringMeasureOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringEncode(Ctx& ctx, StringEncodeOp op) { +Result +makeStringEncode(Ctx& ctx, Index pos, StringEncodeOp op) { return ctx.in.err("unimplemented instruction"); } -template Result makeStringConcat(Ctx& ctx) { +template +Result makeStringConcat(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -template Result makeStringEq(Ctx& ctx) { +template +Result makeStringEq(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringAs(Ctx& ctx, StringAsOp op) { +Result makeStringAs(Ctx& ctx, Index pos, StringAsOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringWTF8Advance(Ctx& ctx) { +Result makeStringWTF8Advance(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringWTF16Get(Ctx& ctx) { +Result makeStringWTF16Get(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringIterNext(Ctx& ctx) { +Result makeStringIterNext(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringIterMove(Ctx& ctx, StringIterMoveOp op) { +Result +makeStringIterMove(Ctx& ctx, Index pos, StringIterMoveOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringSliceWTF(Ctx& ctx, StringSliceWTFOp op) { +Result +makeStringSliceWTF(Ctx& ctx, Index pos, StringSliceWTFOp op) { return ctx.in.err("unimplemented instruction"); } template -Result makeStringSliceIter(Ctx& ctx) { +Result makeStringSliceIter(Ctx& ctx, Index pos) { return ctx.in.err("unimplemented instruction"); } -- cgit v1.2.3