Class BinaryModuleWriter
java.lang.Object
de.inetsoftware.jwebassembly.module.ModuleWriter
de.inetsoftware.jwebassembly.binary.BinaryModuleWriter
- All Implemented Interfaces:
Closeable, AutoCloseable
Module Writer for binary format. http://webassembly.org/docs/binary-encoding/
- Author:
- Volker Berlin
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intBreak a block/loop
sequence: BR {call deep}
call deep: How many blocks are break. 0 means the current block
stack: no changestatic final intstatic final intstatic final intconverts a nullable reference to a non-nullable one or branches if nullstatic final int- br_table - target_count - count of entries in the table - target_table - levels of block breaks - default_target - levels of block breaks for default valuestatic final intstatic final intstatic final intcalling a function through a refstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intcreate a closurestatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intIf the value on the stack is true then the if block is executed.static final intlocals with block scope, in order to handle reference types without default initialisation valuesstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intconverts a nullable reference to a non-nullable one or traps if nullstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final inttail calling a function through a refstatic final intstatic final intselect one of two values based on conditionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intFields inherited from class ModuleWriter
dataStream, options -
Constructor Summary
ConstructorsConstructorDescriptionBinaryModuleWriter(WasmTarget target, WasmOptions options) Create new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()protected voidmarkSourceLine(int javaSourceLine) Mark the current output position with Java code position for crating of a source map.protected voidFinish the prepare after all classes/methods are prepare.protected voidprepareImport(FunctionName name, String importModule, String importName) Prepare a imported single function in the prepare phase.protected voidwriteArrayOperator(ArrayOperator op, ArrayType type) Write an array operation.protected voidwriteBlockCode(WasmBlockOperator op, Object data) Write a block/branch codeprotected intWrite a block type.protected voidwriteCast(ValueTypeConvertion cast) Cast a value from one type to anotherprotected voidwriteConst(Number value, ValueType valueType) Write a constant number valueprotected voidwriteDefaultValue(AnyType type) Write the default/initial value for a type.protected voidMark to write exceptionsprotected voidwriteExport(FunctionName name, String exportName) Write an export directiveprotected voidwriteFunctionCall(FunctionName name, String comments) Write a call to a function.protected voidwriteGlobalAccess(boolean load, FunctionName name, AnyType type) Write a global variable operationprotected voidwriteLocal(VariableOperator op, int idx) Write a local variable operation.protected voidwriteMemoryOperator(MemoryOperator memOp, ValueType valueType, int offset, int alignment) Write a memory operation for the linear memory.protected voidComplete the methodprotected voidwriteMethodParam(String kind, AnyType valueType, String name) Write a method parameter.protected voidFinish the function parameter.protected voidwriteMethodParamStart(FunctionName name, FunctionType funcType) Write the method header.protected voidwriteMethodStart(FunctionName name, String sourceFile) Start the writing of method/function code.protected voidwriteNumericOperator(NumericOperator numOp, ValueType valueType) Write a add operatorprotected voidwriteStructOperator(StructOperator op, AnyType type, NamedStorageType fieldName, int idx) Write a struct operationprotected intWrite a type/struct.protected voidwriteTable(boolean load, int idx) Write a table operation.protected voidwriteVirtualFunctionCall(FunctionName name, AnyType type) Write a function call to an instance function.
-
Field Details
-
UNREACHABLE
static final int UNREACHABLE- See Also:
-
NOP
static final int NOP- See Also:
-
BLOCK
static final int BLOCK- See Also:
-
LOOP
static final int LOOP- See Also:
-
IF
static final int IFIf the value on the stack is true then the if block is executed.
sequence: IF {return type}
return type: can be void (0x40)
stack: remove one i32 value and compare it with 0- See Also:
-
ELSE
static final int ELSE- See Also:
-
TRY
static final int TRY- See Also:
-
CATCH
static final int CATCH- See Also:
-
THROW
static final int THROW- See Also:
-
RETHROW
static final int RETHROW- See Also:
-
BR_ON_EXN
static final int BR_ON_EXN- See Also:
-
END
static final int END- See Also:
-
BR
static final int BRBreak a block/loop
sequence: BR {call deep}
call deep: How many blocks are break. 0 means the current block
stack: no change- See Also:
-
BR_IF
static final int BR_IF- See Also:
-
BR_TABLE
static final int BR_TABLE- br_table - target_count - count of entries in the table - target_table - levels of block breaks - default_target - levels of block breaks for default value- See Also:
-
RETURN
static final int RETURN- See Also:
-
CALL
static final int CALL- See Also:
-
CALL_INDIRECT
static final int CALL_INDIRECT- See Also:
-
RETURN_CALL
static final int RETURN_CALL- See Also:
-
RETURN_CALL_INDIRECT
static final int RETURN_CALL_INDIRECT- See Also:
-
CALL_REF
static final int CALL_REFcalling a function through a ref- See Also:
-
RETURN_CALL_REF
static final int RETURN_CALL_REFtail calling a function through a ref- See Also:
-
FUNC_BIND
static final int FUNC_BINDcreate a closure- See Also:
-
LET
static final int LETlocals with block scope, in order to handle reference types without default initialisation values- See Also:
-
DROP
static final int DROP- See Also:
-
SELECT
static final int SELECTselect one of two values based on condition- See Also:
-
LOCAL_GET
static final int LOCAL_GET- See Also:
-
LOCAL_SET
static final int LOCAL_SET- See Also:
-
LOCAL_TEE
static final int LOCAL_TEE- See Also:
-
GLOBAL_GET
static final int GLOBAL_GET- See Also:
-
GLOBAL_SET
static final int GLOBAL_SET- See Also:
-
TABLE_GET
static final int TABLE_GET- See Also:
-
TABLE_SET
static final int TABLE_SET- See Also:
-
I32_LOAD
static final int I32_LOAD- See Also:
-
I64_LOAD
static final int I64_LOAD- See Also:
-
F32_LOAD
static final int F32_LOAD- See Also:
-
F64_LOAD
static final int F64_LOAD- See Also:
-
I32_LOAD8_S
static final int I32_LOAD8_S- See Also:
-
I32_LOAD8_U
static final int I32_LOAD8_U- See Also:
-
I32_LOAD16_S
static final int I32_LOAD16_S- See Also:
-
I32_LOAD16_U
static final int I32_LOAD16_U- See Also:
-
I64_LOAD8_S
static final int I64_LOAD8_S- See Also:
-
I64_LOAD8_U
static final int I64_LOAD8_U- See Also:
-
I64_LOAD16_S
static final int I64_LOAD16_S- See Also:
-
I64_LOAD16_U
static final int I64_LOAD16_U- See Also:
-
I64_LOAD32_S
static final int I64_LOAD32_S- See Also:
-
I64_LOAD32_U
static final int I64_LOAD32_U- See Also:
-
I32_STORE
static final int I32_STORE- See Also:
-
I64_STORE
static final int I64_STORE- See Also:
-
F32_STORE
static final int F32_STORE- See Also:
-
F64_STORE
static final int F64_STORE- See Also:
-
I32_STORE8
static final int I32_STORE8- See Also:
-
I32_STORE16
static final int I32_STORE16- See Also:
-
I54_STORE8
static final int I54_STORE8- See Also:
-
I54_STORE16
static final int I54_STORE16- See Also:
-
I54_STORE32
static final int I54_STORE32- See Also:
-
MEMORY_SIZE
static final int MEMORY_SIZE- See Also:
-
MEMORY_GROW
static final int MEMORY_GROW- See Also:
-
I32_CONST
static final int I32_CONST- See Also:
-
I64_CONST
static final int I64_CONST- See Also:
-
F32_CONST
static final int F32_CONST- See Also:
-
F64_CONST
static final int F64_CONST- See Also:
-
I32_EQZ
static final int I32_EQZ- See Also:
-
I32_EQ
static final int I32_EQ- See Also:
-
I32_NE
static final int I32_NE- See Also:
-
I32_LT_S
static final int I32_LT_S- See Also:
-
I32_LT_U
static final int I32_LT_U- See Also:
-
I32_GT_S
static final int I32_GT_S- See Also:
-
I32_GT_U
static final int I32_GT_U- See Also:
-
I32_LE_S
static final int I32_LE_S- See Also:
-
I32_LE_U
static final int I32_LE_U- See Also:
-
I32_GE_S
static final int I32_GE_S- See Also:
-
I32_GE_U
static final int I32_GE_U- See Also:
-
I64_EQZ
static final int I64_EQZ- See Also:
-
I64_EQ
static final int I64_EQ- See Also:
-
I64_NE
static final int I64_NE- See Also:
-
I64_LT_S
static final int I64_LT_S- See Also:
-
I64_LT_U
static final int I64_LT_U- See Also:
-
I64_GT_S
static final int I64_GT_S- See Also:
-
I64_GT_U
static final int I64_GT_U- See Also:
-
I64_LE_S
static final int I64_LE_S- See Also:
-
I64_LE_U
static final int I64_LE_U- See Also:
-
I64_GE_S
static final int I64_GE_S- See Also:
-
I64_GE_U
static final int I64_GE_U- See Also:
-
F32_EQ
static final int F32_EQ- See Also:
-
F32_NE
static final int F32_NE- See Also:
-
F32_LT
static final int F32_LT- See Also:
-
F32_GT
static final int F32_GT- See Also:
-
F32_LE
static final int F32_LE- See Also:
-
F32_GE
static final int F32_GE- See Also:
-
F64_EQ
static final int F64_EQ- See Also:
-
F64_NE
static final int F64_NE- See Also:
-
F64_LT
static final int F64_LT- See Also:
-
F64_GT
static final int F64_GT- See Also:
-
F64_LE
static final int F64_LE- See Also:
-
F64_GE
static final int F64_GE- See Also:
-
I32_CLZ
static final int I32_CLZ- See Also:
-
I32_CTZ
static final int I32_CTZ- See Also:
-
I32_POPCNT
static final int I32_POPCNT- See Also:
-
I32_ADD
static final int I32_ADD- See Also:
-
I32_SUB
static final int I32_SUB- See Also:
-
I32_MUL
static final int I32_MUL- See Also:
-
I32_DIV_S
static final int I32_DIV_S- See Also:
-
I32_DIV_U
static final int I32_DIV_U- See Also:
-
I32_REM_S
static final int I32_REM_S- See Also:
-
I32_REM_U
static final int I32_REM_U- See Also:
-
I32_AND
static final int I32_AND- See Also:
-
I32_OR
static final int I32_OR- See Also:
-
I32_XOR
static final int I32_XOR- See Also:
-
I32_SHL
static final int I32_SHL- See Also:
-
I32_SHR_S
static final int I32_SHR_S- See Also:
-
I32_SHR_U
static final int I32_SHR_U- See Also:
-
I32_ROTL
static final int I32_ROTL- See Also:
-
I32_ROTR
static final int I32_ROTR- See Also:
-
I64_CLZ
static final int I64_CLZ- See Also:
-
I64_CTZ
static final int I64_CTZ- See Also:
-
I64_POPCNT
static final int I64_POPCNT- See Also:
-
I64_ADD
static final int I64_ADD- See Also:
-
I64_SUB
static final int I64_SUB- See Also:
-
I64_MUL
static final int I64_MUL- See Also:
-
I64_DIV_S
static final int I64_DIV_S- See Also:
-
I64_DIV_U
static final int I64_DIV_U- See Also:
-
I64_REM_S
static final int I64_REM_S- See Also:
-
I64_REM_U
static final int I64_REM_U- See Also:
-
I64_AND
static final int I64_AND- See Also:
-
I64_OR
static final int I64_OR- See Also:
-
I64_XOR
static final int I64_XOR- See Also:
-
I64_SHL
static final int I64_SHL- See Also:
-
I64_SHR_S
static final int I64_SHR_S- See Also:
-
I64_SHR_U
static final int I64_SHR_U- See Also:
-
I64_ROTL
static final int I64_ROTL- See Also:
-
I64_ROTR
static final int I64_ROTR- See Also:
-
F32_ABS
static final int F32_ABS- See Also:
-
F32_NEG
static final int F32_NEG- See Also:
-
F32_CEIL
static final int F32_CEIL- See Also:
-
F32_FLOOR
static final int F32_FLOOR- See Also:
-
F32_TRUNC
static final int F32_TRUNC- See Also:
-
F32_NEAREST
static final int F32_NEAREST- See Also:
-
F32_SQRT
static final int F32_SQRT- See Also:
-
F32_ADD
static final int F32_ADD- See Also:
-
F32_SUB
static final int F32_SUB- See Also:
-
F32_MUL
static final int F32_MUL- See Also:
-
F32_DIV
static final int F32_DIV- See Also:
-
F32_MIN
static final int F32_MIN- See Also:
-
F32_MAX
static final int F32_MAX- See Also:
-
F32_COPYSIGN
static final int F32_COPYSIGN- See Also:
-
F64_ABS
static final int F64_ABS- See Also:
-
F64_NEG
static final int F64_NEG- See Also:
-
F64_CEIL
static final int F64_CEIL- See Also:
-
F64_FLOOR
static final int F64_FLOOR- See Also:
-
F64_TRUNC
static final int F64_TRUNC- See Also:
-
F64_NEAREST
static final int F64_NEAREST- See Also:
-
F64_SQRT
static final int F64_SQRT- See Also:
-
F64_ADD
static final int F64_ADD- See Also:
-
F64_SUB
static final int F64_SUB- See Also:
-
F64_MUL
static final int F64_MUL- See Also:
-
F64_DIV
static final int F64_DIV- See Also:
-
F64_MIN
static final int F64_MIN- See Also:
-
F64_MAX
static final int F64_MAX- See Also:
-
F64_COPYSIGN
static final int F64_COPYSIGN- See Also:
-
I32_WRAP_I64
static final int I32_WRAP_I64- See Also:
-
I32_TRUNC_F32_S
static final int I32_TRUNC_F32_S- See Also:
-
I32_TRUNC_F32_U
static final int I32_TRUNC_F32_U- See Also:
-
I32_TRUNC_F64_S
static final int I32_TRUNC_F64_S- See Also:
-
I32_TRUNC_F64_U
static final int I32_TRUNC_F64_U- See Also:
-
I64_EXTEND_I32_S
static final int I64_EXTEND_I32_S- See Also:
-
I64_EXTEND_I32_U
static final int I64_EXTEND_I32_U- See Also:
-
I64_TRUNC_F32_S
static final int I64_TRUNC_F32_S- See Also:
-
I64_TRUNC_F32_U
static final int I64_TRUNC_F32_U- See Also:
-
I64_TRUNC_F64_S
static final int I64_TRUNC_F64_S- See Also:
-
I64_TRUNC_F64_U
static final int I64_TRUNC_F64_U- See Also:
-
F32_CONVERT_I32_S
static final int F32_CONVERT_I32_S- See Also:
-
F32_CONVERT_I32_U
static final int F32_CONVERT_I32_U- See Also:
-
F32_CONVERT_I64_S
static final int F32_CONVERT_I64_S- See Also:
-
F32_CONVERT_I64_U
static final int F32_CONVERT_I64_U- See Also:
-
F32_DEMOTE_F64
static final int F32_DEMOTE_F64- See Also:
-
F64_CONVERT_I32_S
static final int F64_CONVERT_I32_S- See Also:
-
F64_CONVERT_I32_U
static final int F64_CONVERT_I32_U- See Also:
-
F64_CONVERT_I64_S
static final int F64_CONVERT_I64_S- See Also:
-
F64_CONVERT_I64_U
static final int F64_CONVERT_I64_U- See Also:
-
F64_PROMOTE_F32
static final int F64_PROMOTE_F32- See Also:
-
I32_REINTERPRET_F32
static final int I32_REINTERPRET_F32- See Also:
-
I64_REINTERPRET_F64
static final int I64_REINTERPRET_F64- See Also:
-
F32_REINTERPRET_I32
static final int F32_REINTERPRET_I32- See Also:
-
F64_REINTERPRET_I64
static final int F64_REINTERPRET_I64- See Also:
-
I32_EXTEND8_S
static final int I32_EXTEND8_S- See Also:
-
I32_EXTEND16_S
static final int I32_EXTEND16_S- See Also:
-
I64_EXTEND8_S
static final int I64_EXTEND8_S- See Also:
-
I64_EXTEND16_S
static final int I64_EXTEND16_S- See Also:
-
I64_EXTEND32_S
static final int I64_EXTEND32_S- See Also:
-
REF_NULL
static final int REF_NULL- See Also:
-
REF_ISNULL
static final int REF_ISNULL- See Also:
-
REF_AS_NON_NULL
static final int REF_AS_NON_NULLconverts a nullable reference to a non-nullable one or traps if null- See Also:
-
BR_ON_NULL
static final int BR_ON_NULLconverts a nullable reference to a non-nullable one or branches if null- See Also:
-
REF_EQ
static final int REF_EQ- See Also:
-
I32_TRUNC_SAT_F32_S
static final int I32_TRUNC_SAT_F32_S- See Also:
-
I32_TRUNC_SAT_F32_U
static final int I32_TRUNC_SAT_F32_U- See Also:
-
I32_TRUNC_SAT_F64_S
static final int I32_TRUNC_SAT_F64_S- See Also:
-
I32_TRUNC_SAT_F64_U
static final int I32_TRUNC_SAT_F64_U- See Also:
-
I64_TRUNC_SAT_F32_S
static final int I64_TRUNC_SAT_F32_S- See Also:
-
I64_TRUNC_SAT_F32_U
static final int I64_TRUNC_SAT_F32_U- See Also:
-
I64_TRUNC_SAT_F64_S
static final int I64_TRUNC_SAT_F64_S- See Also:
-
I64_TRUNC_SAT_F64_U
static final int I64_TRUNC_SAT_F64_U- See Also:
-
TABLE_GROW
static final int TABLE_GROW- See Also:
-
TABLE_SIZE
static final int TABLE_SIZE- See Also:
-
TABLE_FILL
static final int TABLE_FILL- See Also:
-
STRUCT_NEW
static final int STRUCT_NEW- See Also:
-
STRUCT_NEW_DEFAULT
static final int STRUCT_NEW_DEFAULT- See Also:
-
STRUCT_GET
static final int STRUCT_GET- See Also:
-
STRUCT_SET
static final int STRUCT_SET- See Also:
-
ARRAY_NEW
static final int ARRAY_NEW- See Also:
-
ARRAY_NEW_DEFAULT
static final int ARRAY_NEW_DEFAULT- See Also:
-
ARRAY_GET
static final int ARRAY_GET- See Also:
-
ARRAY_GET_S
static final int ARRAY_GET_S- See Also:
-
ARRAY_GET_U
static final int ARRAY_GET_U- See Also:
-
ARRAY_SET
static final int ARRAY_SET- See Also:
-
ARRAY_LEN
static final int ARRAY_LEN- See Also:
-
RTT_CANON
static final int RTT_CANON- See Also:
-
REF_CAST
static final int REF_CAST- See Also:
-
-
Constructor Details
-
BinaryModuleWriter
Create new instance.- Parameters:
target- the target for the module data.options- compiler properties- Throws:
IOException- if any I/O error occur
-
-
Method Details
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
writeStructType
Write a type/struct.- Specified by:
writeStructTypein classModuleWriter- Parameters:
type- the type to declare/write- Returns:
- type ID
- Throws:
IOException- if any I/O error occur
-
writeBlockType
Write a block type.- Specified by:
writeBlockTypein classModuleWriter- Parameters:
type- the type- Returns:
- type ID
- Throws:
IOException- if any I/O error occur
-
writeException
Mark to write exceptions- Specified by:
writeExceptionin classModuleWriter- Throws:
IOException- if any I/O error occur
-
prepareImport
Prepare a imported single function in the prepare phase.- Specified by:
prepareImportin classModuleWriter- Parameters:
name- the function nameimportModule- the import module name if it is a import functionimportName- the import name if it is a import function
-
prepareFinish
protected void prepareFinish()Finish the prepare after all classes/methods are prepare. This must be call before we can start with write the first method.- Specified by:
prepareFinishin classModuleWriter
-
writeExport
Write an export directive- Specified by:
writeExportin classModuleWriter- Parameters:
name- the function nameexportName- the export name, if null then the same like the method name- Throws:
IOException- if any I/O error occur
-
writeMethodParamStart
Write the method header.- Specified by:
writeMethodParamStartin classModuleWriter- Parameters:
name- the function namefuncType- the type of function- Throws:
IOException- if any I/O error occur
-
writeMethodParam
protected void writeMethodParam(String kind, AnyType valueType, @Nullable String name) throws IOException Write a method parameter.- Specified by:
writeMethodParamin classModuleWriter- Parameters:
kind- "param", "result" or "local"valueType- the data type of the parametername- optional name of the parameter- Throws:
IOException- if any I/O error occur
-
writeMethodParamFinish
Finish the function parameter.- Specified by:
writeMethodParamFinishin classModuleWriter- Parameters:
name- the function name- Throws:
IOException- if any I/O error occur
-
writeMethodStart
Start the writing of method/function code.- Specified by:
writeMethodStartin classModuleWriter- Parameters:
name- the function namesourceFile- the name of the source file- Throws:
IOException- if any I/O error occur
-
markSourceLine
protected void markSourceLine(int javaSourceLine) Mark the current output position with Java code position for crating of a source map.- Specified by:
markSourceLinein classModuleWriter- Parameters:
javaSourceLine- the line number in the Java code
-
writeMethodFinish
Complete the method- Specified by:
writeMethodFinishin classModuleWriter- Throws:
IOException- if any I/O error occur
-
writeConst
Write a constant number value- Specified by:
writeConstin classModuleWriter- Parameters:
value- the valuevalueType- the data type of the number- Throws:
IOException- if any I/O error occur
-
writeLocal
Write a local variable operation.- Specified by:
writeLocalin classModuleWriter- Parameters:
op- the operationidx- the index of the parameter variable- Throws:
IOException- if any I/O error occur
-
writeGlobalAccess
Write a global variable operation- Specified by:
writeGlobalAccessin classModuleWriter- Parameters:
load- true: if load or GETname- the variable nametype- the type of the variable- Throws:
IOException- if any I/O error occur
-
writeTable
Write a table operation.- Specified by:
writeTablein classModuleWriter- Parameters:
load- true: if "get" else "set"idx- the index of the table- Throws:
IOException- if any I/O error occur
-
writeDefaultValue
Write the default/initial value for a type.- Specified by:
writeDefaultValuein classModuleWriter- Parameters:
type- the type- Throws:
IOException- if an I/O error occurs.
-
writeNumericOperator
protected void writeNumericOperator(NumericOperator numOp, @Nullable ValueType valueType) throws IOException Write a add operator- Specified by:
writeNumericOperatorin classModuleWriter- Parameters:
numOp- the numeric operationvalueType- the type of the parameters- Throws:
IOException- if any I/O error occur
-
writeCast
Cast a value from one type to another- Specified by:
writeCastin classModuleWriter- Parameters:
cast- the operator- Throws:
IOException- if any I/O error occur
-
writeFunctionCall
Write a call to a function.- Specified by:
writeFunctionCallin classModuleWriter- Parameters:
name- the function namecomments- optional comment for the text format- Throws:
IOException- if any I/O error occur
-
writeVirtualFunctionCall
Write a function call to an instance function. On the stack there must be the object.- Specified by:
writeVirtualFunctionCallin classModuleWriter- Parameters:
name- the function nametype- the base type that should be called- Throws:
IOException- if any I/O error occur
-
writeBlockCode
protected void writeBlockCode(@Nonnull WasmBlockOperator op, @Nullable Object data) throws IOException Write a block/branch code- Specified by:
writeBlockCodein classModuleWriter- Parameters:
op- the operationdata- extra data depending of the operator- Throws:
IOException- if any I/O error occur
-
writeArrayOperator
Write an array operation.- Specified by:
writeArrayOperatorin classModuleWriter- Parameters:
op- the operationtype- the type of the array- Throws:
IOException- if any I/O error occur
-
writeStructOperator
protected void writeStructOperator(StructOperator op, AnyType type, NamedStorageType fieldName, int idx) throws IOException Write a struct operation- Specified by:
writeStructOperatorin classModuleWriter- Parameters:
op- the operationtype- the type of the structfieldName- the fieldName if the operation is per fieldidx- the index of the field if the operation is per field- Throws:
IOException- if any I/O error occur
-
writeMemoryOperator
protected void writeMemoryOperator(MemoryOperator memOp, ValueType valueType, int offset, int alignment) throws IOException Write a memory operation for the linear memory.- Specified by:
writeMemoryOperatorin classModuleWriter- Parameters:
memOp- the memory operationvalueType- the value type of the stack valueoffset- the offset into the memory. Should be ideally a factor of 4.alignment- the alignment of the value on the linear memory (0: 8 Bit; 1: 16 Bit; 2: 32 Bit)- Throws:
IOException- if any I/O error occur
-