Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 35 additions & 3 deletions include/wabt/binary-reader-logging.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,20 @@ class BinaryReaderLogging : public BinaryReaderDelegate {

Result BeginTypeSection(Offset size) override;
Result OnTypeCount(Index count) override;
Result OnRecursiveGroup(Index first_type_index, Index type_count) override;
Result OnFuncType(Index index,
Index param_count,
Type* param_types,
Index result_count,
Type* result_types) override;
Result OnStructType(Index index, Index field_count, TypeMut* fields) override;
Result OnArrayType(Index index, TypeMut field) override;
Type* result_types,
SupertypesInfo* supertypes) override;
Result OnStructType(Index index,
Index field_count,
TypeMut* fields,
SupertypesInfo* supertypes) override;
Result OnArrayType(Index index,
TypeMut field,
SupertypesInfo* supertypes) override;
Result EndTypeSection() override;

Result BeginImportSection(Offset size) override;
Expand Down Expand Up @@ -164,6 +171,17 @@ class BinaryReaderLogging : public BinaryReaderDelegate {
Result OnTernaryExpr(Opcode opcode) override;
Result OnQuaternaryExpr(Opcode opcode) override;

Result OnArrayCopyExpr(Index dst_type_index, Index src_type_index) override;
Result OnArrayFillExpr(Index type_index) override;
Result OnArrayGetExpr(Opcode opcode, Index type_index) override;
Result OnArrayInitDataExpr(Index type_index, Index data_index) override;
Result OnArrayInitElemExpr(Index type_index, Index elem_index) override;
Result OnArrayNewExpr(Index type_index) override;
Result OnArrayNewDataExpr(Index type_index, Index data_index) override;
Result OnArrayNewDefaultExpr(Index type_index) override;
Result OnArrayNewElemExpr(Index type_index, Index elem_index) override;
Result OnArrayNewFixedExpr(Index type_index, Index count) override;
Result OnArraySetExpr(Index type_index) override;
Result OnAtomicLoadExpr(Opcode opcode,
Index memidx,
Address alignment_log2,
Expand All @@ -183,6 +201,10 @@ class BinaryReaderLogging : public BinaryReaderDelegate {
Result OnBlockExpr(Type sig_type) override;
Result OnBrExpr(Index depth) override;
Result OnBrIfExpr(Index depth) override;
Result OnBrOnCastExpr(Opcode opcode,
Index depth,
Type type1,
Type type2) override;
Result OnBrOnNonNullExpr(Index depth) override;
Result OnBrOnNullExpr(Index depth) override;
Result OnBrTableExpr(Index num_targets,
Expand All @@ -202,6 +224,7 @@ class BinaryReaderLogging : public BinaryReaderDelegate {
Result OnF32ConstExpr(uint32_t value_bits) override;
Result OnF64ConstExpr(uint64_t value_bits) override;
Result OnV128ConstExpr(v128 value_bits) override;
Result OnGCUnaryExpr(Opcode opcode) override;
Result OnGlobalGetExpr(Index global_index) override;
Result OnGlobalSetExpr(Index global_index) override;
Result OnI32ConstExpr(uint32_t value) override;
Expand Down Expand Up @@ -230,9 +253,11 @@ class BinaryReaderLogging : public BinaryReaderDelegate {
Result OnTableSizeExpr(Index table) override;
Result OnTableFillExpr(Index table) override;
Result OnRefAsNonNullExpr() override;
Result OnRefCastExpr(Type type) override;
Result OnRefFuncExpr(Index index) override;
Result OnRefNullExpr(Type type) override;
Result OnRefIsNullExpr() override;
Result OnRefTestExpr(Type type) override;
Result OnNopExpr() override;
Result OnRethrowExpr(Index depth) override;
Result OnReturnCallExpr(Index func_index) override;
Expand All @@ -244,6 +269,12 @@ class BinaryReaderLogging : public BinaryReaderDelegate {
Index memidx,
Address alignment_log2,
Address offset) override;
Result OnStructGetExpr(Opcode opcode,
Index type_index,
Index field_index) override;
Result OnStructNewExpr(Index type_index) override;
Result OnStructNewDefaultExpr(Index type_index) override;
Result OnStructSetExpr(Index type_index, Index field_index) override;
Result OnThrowExpr(Index tag_index) override;
Result OnThrowRefExpr() override;
Result OnTryExpr(Type sig_type) override;
Expand Down Expand Up @@ -435,6 +466,7 @@ class BinaryReaderLogging : public BinaryReaderDelegate {
void LogType(Type type);
void LogTypes(Index type_count, Type* types);
void LogTypes(TypeVector& types);
void LogSupertypesInfo(SupertypesInfo* supertypes);
void LogField(TypeMut field);

Stream* stream_;
Expand Down
61 changes: 58 additions & 3 deletions include/wabt/binary-reader-nop.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,20 +45,29 @@ class BinaryReaderNop : public BinaryReaderDelegate {

/* Type section */
Result BeginTypeSection(Offset size) override { return Result::Ok; }
Result OnRecursiveGroup(Index first_type_index, Index type_count) override {
return Result::Ok;
}
Result OnTypeCount(Index count) override { return Result::Ok; }
Result OnFuncType(Index index,
Index param_count,
Type* param_types,
Index result_count,
Type* result_types) override {
Type* result_types,
SupertypesInfo* supertypes) override {
return Result::Ok;
}
Result OnStructType(Index index,
Index field_count,
TypeMut* fields) override {
TypeMut* fields,
SupertypesInfo* supertypes) override {
return Result::Ok;
}
Result OnArrayType(Index index,
TypeMut field,
SupertypesInfo* supertypes) override {
return Result::Ok;
}
Result OnArrayType(Index index, TypeMut field) override { return Result::Ok; }
Result EndTypeSection() override { return Result::Ok; }

/* Import section */
Expand Down Expand Up @@ -216,6 +225,31 @@ class BinaryReaderNop : public BinaryReaderDelegate {
Result OnTernaryExpr(Opcode opcode) override { return Result::Ok; }
Result OnQuaternaryExpr(Opcode opcode) override { return Result::Ok; }

Result OnArrayCopyExpr(Index dst_type_index, Index src_type_index) override {
return Result::Ok;
}
Result OnArrayFillExpr(Index type_index) override { return Result::Ok; }
Result OnArrayGetExpr(Opcode opcode, Index type_index) override {
return Result::Ok;
}
Result OnArrayInitDataExpr(Index type_index, Index data_index) override {
return Result::Ok;
}
Result OnArrayInitElemExpr(Index type_index, Index elem_index) override {
return Result::Ok;
}
Result OnArrayNewExpr(Index type_index) override { return Result::Ok; }
Result OnArrayNewDataExpr(Index type_index, Index data_index) override {
return Result::Ok;
}
Result OnArrayNewDefaultExpr(Index type_index) override { return Result::Ok; }
Result OnArrayNewElemExpr(Index type_index, Index elem_index) override {
return Result::Ok;
}
Result OnArrayNewFixedExpr(Index type_index, Index count) override {
return Result::Ok;
}
Result OnArraySetExpr(Index type_index) override { return Result::Ok; }
Result OnAtomicLoadExpr(Opcode opcode,
Index memidx,
Address alignment_log2,
Expand Down Expand Up @@ -250,6 +284,12 @@ class BinaryReaderNop : public BinaryReaderDelegate {
Result OnBlockExpr(Type sig_type) override { return Result::Ok; }
Result OnBrExpr(Index depth) override { return Result::Ok; }
Result OnBrIfExpr(Index depth) override { return Result::Ok; }
Result OnBrOnCastExpr(Opcode opcode,
Index depth,
Type type1,
Type type2) override {
return Result::Ok;
}
Result OnBrOnNonNullExpr(Index depth) override { return Result::Ok; }
Result OnBrOnNullExpr(Index depth) override { return Result::Ok; }
Result OnBrTableExpr(Index num_targets,
Expand All @@ -273,6 +313,7 @@ class BinaryReaderNop : public BinaryReaderDelegate {
Result OnF32ConstExpr(uint32_t value_bits) override { return Result::Ok; }
Result OnF64ConstExpr(uint64_t value_bits) override { return Result::Ok; }
Result OnV128ConstExpr(v128 value_bits) override { return Result::Ok; }
Result OnGCUnaryExpr(Opcode opcode) override { return Result::Ok; }
Result OnGlobalGetExpr(Index global_index) override { return Result::Ok; }
Result OnGlobalSetExpr(Index global_index) override { return Result::Ok; }
Result OnI32ConstExpr(uint32_t value) override { return Result::Ok; }
Expand Down Expand Up @@ -311,9 +352,11 @@ class BinaryReaderNop : public BinaryReaderDelegate {
Result OnTableSizeExpr(Index table_index) override { return Result::Ok; }
Result OnTableFillExpr(Index table_index) override { return Result::Ok; }
Result OnRefAsNonNullExpr() override { return Result::Ok; }
Result OnRefCastExpr(Type type) override { return Result::Ok; }
Result OnRefFuncExpr(Index func_index) override { return Result::Ok; }
Result OnRefNullExpr(Type type) override { return Result::Ok; }
Result OnRefIsNullExpr() override { return Result::Ok; }
Result OnRefTestExpr(Type type) override { return Result::Ok; }
Result OnNopExpr() override { return Result::Ok; }
Result OnRethrowExpr(Index depth) override { return Result::Ok; }
Result OnReturnCallExpr(Index sig_index) override { return Result::Ok; }
Expand All @@ -331,6 +374,18 @@ class BinaryReaderNop : public BinaryReaderDelegate {
Address offset) override {
return Result::Ok;
}
Result OnStructGetExpr(Opcode opcode,
Index type_index,
Index field_index) override {
return Result::Ok;
}
Result OnStructNewExpr(Index type_index) override { return Result::Ok; }
Result OnStructNewDefaultExpr(Index type_index) override {
return Result::Ok;
}
Result OnStructSetExpr(Index type_index, Index field_index) override {
return Result::Ok;
}
Result OnThrowExpr(Index depth) override { return Result::Ok; }
Result OnThrowRefExpr() override { return Result::Ok; }
Result OnTryExpr(Type sig_type) override { return Result::Ok; }
Expand Down
44 changes: 40 additions & 4 deletions include/wabt/binary-reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,20 @@ struct ReadBinaryOptions {
bool skip_function_bodies = false;
};

// TODO: Move somewhere else?
// TODO: Move both TypeMut and GCTypeInformation somewhere else?
struct TypeMut {
Type type;
bool mutable_;
};
using TypeMutVector = std::vector<TypeMut>;

// Type extension introduced by the Garbage Collector proposal
struct SupertypesInfo {
bool is_final_sub_type;
Index sub_type_count;
Index* sub_types;
};

struct CatchClause {
CatchKind kind;
Index tag;
Expand Down Expand Up @@ -104,15 +111,20 @@ class BinaryReaderDelegate {
/* Type section */
virtual Result BeginTypeSection(Offset size) = 0;
virtual Result OnTypeCount(Index count) = 0;
virtual Result OnRecursiveGroup(Index first_type_index, Index type_count) = 0;
virtual Result OnFuncType(Index index,
Index param_count,
Type* param_types,
Index result_count,
Type* result_types) = 0;
Type* result_types,
SupertypesInfo* supertypes) = 0;
virtual Result OnStructType(Index index,
Index field_count,
TypeMut* fields) = 0;
virtual Result OnArrayType(Index index, TypeMut field) = 0;
TypeMut* fields,
SupertypesInfo* supertypes) = 0;
virtual Result OnArrayType(Index index,
TypeMut field,
SupertypesInfo* supertypes) = 0;
virtual Result EndTypeSection() = 0;

/* Import section */
Expand Down Expand Up @@ -236,6 +248,17 @@ class BinaryReaderDelegate {
virtual Result OnTernaryExpr(Opcode opcode) = 0;
virtual Result OnQuaternaryExpr(Opcode opcode) = 0;

virtual Result OnArrayCopyExpr(Index dst_type_index, Index src_type_index) = 0;
virtual Result OnArrayFillExpr(Index type_index) = 0;
virtual Result OnArrayGetExpr(Opcode opcode, Index type_index) = 0;
virtual Result OnArrayInitDataExpr(Index type_index, Index data_index) = 0;
virtual Result OnArrayInitElemExpr(Index type_index, Index elem_index) = 0;
virtual Result OnArrayNewExpr(Index type_index) = 0;
virtual Result OnArrayNewDataExpr(Index type_index, Index data_index) = 0;
virtual Result OnArrayNewDefaultExpr(Index type_index) = 0;
virtual Result OnArrayNewElemExpr(Index type_index, Index elem_index) = 0;
virtual Result OnArrayNewFixedExpr(Index type_index, Index count) = 0;
virtual Result OnArraySetExpr(Index type_index) = 0;
virtual Result OnAtomicLoadExpr(Opcode opcode,
Index memidx,
Address alignment_log2,
Expand Down Expand Up @@ -264,6 +287,10 @@ class BinaryReaderDelegate {
virtual Result OnBlockExpr(Type sig_type) = 0;
virtual Result OnBrExpr(Index depth) = 0;
virtual Result OnBrIfExpr(Index depth) = 0;
virtual Result OnBrOnCastExpr(Opcode opcode,
Index depth,
Type type1,
Type type2) = 0;
virtual Result OnBrOnNonNullExpr(Index depth) = 0;
virtual Result OnBrOnNullExpr(Index depth) = 0;
virtual Result OnBrTableExpr(Index num_targets,
Expand All @@ -283,6 +310,7 @@ class BinaryReaderDelegate {
virtual Result OnF32ConstExpr(uint32_t value_bits) = 0;
virtual Result OnF64ConstExpr(uint64_t value_bits) = 0;
virtual Result OnV128ConstExpr(v128 value_bits) = 0;
virtual Result OnGCUnaryExpr(Opcode opcode) = 0;
virtual Result OnGlobalGetExpr(Index global_index) = 0;
virtual Result OnGlobalSetExpr(Index global_index) = 0;
virtual Result OnI32ConstExpr(uint32_t value) = 0;
Expand Down Expand Up @@ -311,9 +339,11 @@ class BinaryReaderDelegate {
virtual Result OnTableSizeExpr(Index table_index) = 0;
virtual Result OnTableFillExpr(Index table_index) = 0;
virtual Result OnRefAsNonNullExpr() = 0;
virtual Result OnRefCastExpr(Type type) = 0;
virtual Result OnRefFuncExpr(Index func_index) = 0;
virtual Result OnRefNullExpr(Type type) = 0;
virtual Result OnRefIsNullExpr() = 0;
virtual Result OnRefTestExpr(Type type) = 0;
virtual Result OnNopExpr() = 0;
virtual Result OnRethrowExpr(Index depth) = 0;
virtual Result OnReturnExpr() = 0;
Expand All @@ -326,6 +356,12 @@ class BinaryReaderDelegate {
Index memidx,
Address alignment_log2,
Address offset) = 0;
virtual Result OnStructGetExpr(Opcode opcode,
Index type_index,
Index field_index) = 0;
virtual Result OnStructNewExpr(Index type_index) = 0;
virtual Result OnStructNewDefaultExpr(Index type_index) = 0;
virtual Result OnStructSetExpr(Index type_index, Index field_index) = 0;
virtual Result OnThrowExpr(Index tag_index) = 0;
virtual Result OnThrowRefExpr() = 0;
virtual Result OnTryExpr(Type sig_type) = 0;
Expand Down
42 changes: 42 additions & 0 deletions include/wabt/expr-visitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class ExprVisitor::Delegate {
virtual Result EndBlockExpr(BlockExpr*) = 0;
virtual Result OnBrExpr(BrExpr*) = 0;
virtual Result OnBrIfExpr(BrIfExpr*) = 0;
virtual Result OnBrOnCastExpr(BrOnCastExpr*) = 0;
virtual Result OnBrOnNonNullExpr(BrOnNonNullExpr*) = 0;
virtual Result OnBrOnNullExpr(BrOnNullExpr*) = 0;
virtual Result OnBrTableExpr(BrTableExpr*) = 0;
Expand Down Expand Up @@ -147,6 +148,24 @@ class ExprVisitor::Delegate {
virtual Result OnSimdShuffleOpExpr(SimdShuffleOpExpr*) = 0;
virtual Result OnLoadSplatExpr(LoadSplatExpr*) = 0;
virtual Result OnLoadZeroExpr(LoadZeroExpr*) = 0;
virtual Result OnArrayCopyExpr(ArrayCopyExpr*) = 0;
virtual Result OnArrayFillExpr(ArrayFillExpr*) = 0;
virtual Result OnArrayGetExpr(ArrayGetExpr*) = 0;
virtual Result OnArrayInitDataExpr(ArrayInitDataExpr*) = 0;
virtual Result OnArrayInitElemExpr(ArrayInitElemExpr*) = 0;
virtual Result OnArrayNewExpr(ArrayNewExpr*) = 0;
virtual Result OnArrayNewDataExpr(ArrayNewDataExpr*) = 0;
virtual Result OnArrayNewDefaultExpr(ArrayNewDefaultExpr*) = 0;
virtual Result OnArrayNewElemExpr(ArrayNewElemExpr*) = 0;
virtual Result OnArrayNewFixedExpr(ArrayNewFixedExpr*) = 0;
virtual Result OnArraySetExpr(ArraySetExpr*) = 0;
virtual Result OnGCUnaryExpr(GCUnaryExpr*) = 0;
virtual Result OnRefCastExpr(RefCastExpr*) = 0;
virtual Result OnRefTestExpr(RefTestExpr*) = 0;
virtual Result OnStructGetExpr(StructGetExpr*) = 0;
virtual Result OnStructNewExpr(StructNewExpr*) = 0;
virtual Result OnStructNewDefaultExpr(StructNewDefaultExpr*) = 0;
virtual Result OnStructSetExpr(StructSetExpr*) = 0;
};

class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
Expand All @@ -160,6 +179,7 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
Result EndBlockExpr(BlockExpr*) override { return Result::Ok; }
Result OnBrExpr(BrExpr*) override { return Result::Ok; }
Result OnBrIfExpr(BrIfExpr*) override { return Result::Ok; }
Result OnBrOnCastExpr(BrOnCastExpr*) override { return Result::Ok; };
Result OnBrOnNonNullExpr(BrOnNonNullExpr*) override { return Result::Ok; };
Result OnBrOnNullExpr(BrOnNullExpr*) override { return Result::Ok; };
Result OnBrTableExpr(BrTableExpr*) override { return Result::Ok; }
Expand Down Expand Up @@ -234,6 +254,28 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
Result OnSimdShuffleOpExpr(SimdShuffleOpExpr*) override { return Result::Ok; }
Result OnLoadSplatExpr(LoadSplatExpr*) override { return Result::Ok; }
Result OnLoadZeroExpr(LoadZeroExpr*) override { return Result::Ok; }
Result OnArrayCopyExpr(ArrayCopyExpr*) override { return Result::Ok; }
Result OnArrayFillExpr(ArrayFillExpr*) override { return Result::Ok; }
Result OnArrayGetExpr(ArrayGetExpr*) override { return Result::Ok; }
Result OnArrayInitDataExpr(ArrayInitDataExpr*) override { return Result::Ok; }
Result OnArrayInitElemExpr(ArrayInitElemExpr*) override { return Result::Ok; }
Result OnArrayNewExpr(ArrayNewExpr*) override { return Result::Ok; }
Result OnArrayNewDataExpr(ArrayNewDataExpr*) override { return Result::Ok; }
Result OnArrayNewDefaultExpr(ArrayNewDefaultExpr*) override {
return Result::Ok;
}
Result OnArrayNewElemExpr(ArrayNewElemExpr*) override { return Result::Ok; }
Result OnArrayNewFixedExpr(ArrayNewFixedExpr*) override { return Result::Ok; }
Result OnArraySetExpr(ArraySetExpr*) override { return Result::Ok; }
Result OnGCUnaryExpr(GCUnaryExpr*) override { return Result::Ok; }
Result OnRefCastExpr(RefCastExpr*) override { return Result::Ok; }
Result OnRefTestExpr(RefTestExpr*) override { return Result::Ok; }
Result OnStructGetExpr(StructGetExpr*) override { return Result::Ok; }
Result OnStructNewExpr(StructNewExpr*) override { return Result::Ok; }
Result OnStructNewDefaultExpr(StructNewDefaultExpr*) override {
return Result::Ok;
}
Result OnStructSetExpr(StructSetExpr*) override { return Result::Ok; }
};

} // namespace wabt
Expand Down
Loading
Loading