Skip to content

Commit 82a68dc

Browse files
committed
Update WABT files from zherczeg:gc_tests
from: WebAssembly/wabt#2622 https://github.com/zherczeg/wabt/tree/gc_tests Signed-off-by: Máté Tokodi mate.tokodi@szteszoftver.hu
1 parent 36c73cf commit 82a68dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+7723
-2667
lines changed

third_party/wabt/include/wabt/binary-reader-logging.h

Lines changed: 88 additions & 41 deletions
Large diffs are not rendered by default.

third_party/wabt/include/wabt/binary-reader-nop.h

Lines changed: 113 additions & 41 deletions
Large diffs are not rendered by default.

third_party/wabt/include/wabt/binary-reader.h

Lines changed: 101 additions & 50 deletions
Large diffs are not rendered by default.

third_party/wabt/include/wabt/binary-writer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Result WriteBinaryModule(Stream*, const Module*, const WriteBinaryOptions&);
4949
void WriteType(Stream* stream, Type type, const char* desc = nullptr);
5050

5151
void WriteStr(Stream* stream,
52-
nonstd::string_view s,
52+
std::string_view s,
5353
const char* desc,
5454
PrintChars print_chars = PrintChars::No);
5555

third_party/wabt/include/wabt/binary.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,17 @@
2121

2222
#define WABT_BINARY_MAGIC 0x6d736100
2323
#define WABT_BINARY_VERSION 1
24+
#define WABT_BINARY_LAYER_MODULE 0
25+
#define WABT_BINARY_LAYER_COMPONENT 1
2426
#define WABT_BINARY_LIMITS_HAS_MAX_FLAG 0x1
2527
#define WABT_BINARY_LIMITS_IS_SHARED_FLAG 0x2
2628
#define WABT_BINARY_LIMITS_IS_64_FLAG 0x4
27-
#define WABT_BINARY_LIMITS_ALL_FLAGS \
29+
#define WABT_BINARY_LIMITS_HAS_CUSTOM_PAGE_SIZE_FLAG 0x8
30+
#define WABT_BINARY_LIMITS_ALL_MEMORY_FLAGS \
31+
(WABT_BINARY_LIMITS_HAS_MAX_FLAG | WABT_BINARY_LIMITS_IS_SHARED_FLAG | \
32+
WABT_BINARY_LIMITS_IS_64_FLAG | \
33+
WABT_BINARY_LIMITS_HAS_CUSTOM_PAGE_SIZE_FLAG)
34+
#define WABT_BINARY_LIMITS_ALL_TABLE_FLAGS \
2835
(WABT_BINARY_LIMITS_HAS_MAX_FLAG | WABT_BINARY_LIMITS_IS_SHARED_FLAG | \
2936
WABT_BINARY_LIMITS_IS_64_FLAG)
3037

third_party/wabt/include/wabt/binding-hash.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
#include <functional>
2121
#include <string>
22-
#include "string-view-lite/string_view.h"
22+
#include <string_view>
2323
#include <unordered_map>
2424
#include <vector>
2525

@@ -54,7 +54,7 @@ class BindingHash : public std::unordered_multimap<std::string, Binding> {
5454
return iter != end() ? iter->second.index : kInvalidIndex;
5555
}
5656

57-
Index FindIndex(nonstd::string_view name) const {
57+
Index FindIndex(std::string_view name) const {
5858
return FindIndex(std::string(name));
5959
}
6060

third_party/wabt/include/wabt/common.h

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,13 @@
2727
#include <cstring>
2828
#include <memory>
2929
#include <string>
30-
#include "string-view-lite/string_view.h"
30+
#include <string_view>
3131
#include <type_traits>
3232
#include <vector>
3333

3434
#include "wabt/config.h"
3535

3636
#include "wabt/base-types.h"
37-
#include "wabt/make-unique.h"
3837
#include "wabt/result.h"
3938
#include "wabt/string-format.h"
4039
#include "wabt/type.h"
@@ -45,14 +44,18 @@
4544
#define WABT_USE(x) static_cast<void>(x)
4645

4746
// 64k
48-
#define WABT_PAGE_SIZE 0x10000
49-
// # of pages that fit in 32-bit address space
50-
#define WABT_MAX_PAGES32 0x10000
51-
// # of pages that fit in 64-bit address space
52-
#define WABT_MAX_PAGES64 0x1000000000000
53-
#define WABT_BYTES_TO_PAGES(x) ((x) >> 16)
54-
#define WABT_ALIGN_UP_TO_PAGE(x) \
55-
(((x) + WABT_PAGE_SIZE - 1) & ~(WABT_PAGE_SIZE - 1))
47+
#define WABT_DEFAULT_PAGE_SIZE 0x10000
48+
49+
inline uint64_t WABT_BYTES_TO_MIN_PAGES(uint64_t num_bytes,
50+
uint32_t page_size) {
51+
if ((page_size == 0) ||
52+
(page_size & (page_size - 1))) { // malformed page sizes
53+
WABT_UNREACHABLE;
54+
return 0;
55+
}
56+
uint64_t num_pages = num_bytes / page_size;
57+
return (page_size * num_pages == num_bytes) ? num_pages : num_pages + 1;
58+
}
5659

5760
#define WABT_ENUM_COUNT(name) \
5861
(static_cast<int>(name::Last) - static_cast<int>(name::First) + 1)
@@ -191,6 +194,7 @@ enum class LabelType {
191194
If,
192195
Else,
193196
Try,
197+
TryTable,
194198
Catch,
195199

196200
First = Func,
@@ -205,7 +209,7 @@ struct Location {
205209
};
206210

207211
Location() : line(0), first_column(0), last_column(0) {}
208-
Location(nonstd::string_view filename,
212+
Location(std::string_view filename,
209213
int line,
210214
int first_column,
211215
int last_column)
@@ -215,7 +219,7 @@ struct Location {
215219
last_column(last_column) {}
216220
explicit Location(size_t offset) : offset(offset) {}
217221

218-
nonstd::string_view filename;
222+
std::string_view filename;
219223
union {
220224
// For text files.
221225
struct {
@@ -236,6 +240,13 @@ enum class SegmentKind {
236240
Declared,
237241
};
238242

243+
enum class CatchKind {
244+
Catch,
245+
CatchRef,
246+
CatchAll,
247+
CatchAllRef,
248+
};
249+
239250
// Used in test asserts for special expected values "nan:canonical" and
240251
// "nan:arithmetic"
241252
enum class ExpectedNan {
@@ -278,10 +289,14 @@ enum class RelocType {
278289
TableIndexI64 = 19, // Memory64: Like TableIndexI32
279290
TableNumberLEB = 20, // e.g. Immediate of table.get
280291
MemoryAddressTLSSLEB = 21, // Address relative to __tls_base
281-
MemoryAddressTLSI32 = 22, // Address relative to __tls_base
292+
FunctionOffsetI64 = 22, // Memory64: Like FunctionOffsetI32
293+
MemoryAddressLocRelI32 = 23, // Address relative to the relocation's location
294+
TableIndexRelSLEB64 = 24, // Memory64: TableIndexRelSLEB
295+
MemoryAddressTLSSLEB64 = 25, // Memory64: MemoryAddressTLSSLEB
296+
FuncIndexI32 = 26, // Function index as an I32
282297

283298
First = FuncIndexLEB,
284-
Last = MemoryAddressTLSI32,
299+
Last = FuncIndexI32,
285300
};
286301
constexpr int kRelocTypeCount = WABT_ENUM_COUNT(RelocType);
287302

@@ -385,7 +400,7 @@ struct Limits {
385400

386401
enum { WABT_USE_NATURAL_ALIGNMENT = 0xFFFFFFFFFFFFFFFF };
387402

388-
Result ReadFile(nonstd::string_view filename, std::vector<uint8_t>* out_data);
403+
Result ReadFile(std::string_view filename, std::vector<uint8_t>* out_data);
389404

390405
void InitStdio();
391406

third_party/wabt/include/wabt/error.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#define WABT_ERROR_H_
1919

2020
#include <string>
21-
#include "string-view-lite/string_view.h"
21+
#include <string_view>
2222
#include <vector>
2323

2424
#include "wabt/common.h"
@@ -43,7 +43,7 @@ static inline const char* GetErrorLevelName(ErrorLevel error_level) {
4343
class Error {
4444
public:
4545
Error() : error_level(ErrorLevel::Error) {}
46-
Error(ErrorLevel error_level, Location loc, nonstd::string_view message)
46+
Error(ErrorLevel error_level, Location loc, std::string_view message)
4747
: error_level(error_level), loc(loc), message(message) {}
4848

4949
ErrorLevel error_level;

third_party/wabt/include/wabt/expr-visitor.h

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class ExprVisitor {
4141
IfFalse,
4242
Loop,
4343
Try,
44+
TryTable,
4445
Catch,
4546
};
4647

@@ -72,7 +73,12 @@ class ExprVisitor::Delegate {
7273
virtual Result EndBlockExpr(BlockExpr*) = 0;
7374
virtual Result OnBrExpr(BrExpr*) = 0;
7475
virtual Result OnBrIfExpr(BrIfExpr*) = 0;
76+
virtual Result OnBrOnCastExpr(BrOnCastExpr*) = 0;
77+
virtual Result OnBrOnNonNullExpr(BrOnNonNullExpr*) = 0;
78+
virtual Result OnBrOnNullExpr(BrOnNullExpr*) = 0;
7579
virtual Result OnBrTableExpr(BrTableExpr*) = 0;
80+
virtual Result BeginTryTableExpr(TryTableExpr*) = 0;
81+
virtual Result EndTryTableExpr(TryTableExpr*) = 0;
7682
virtual Result OnCallExpr(CallExpr*) = 0;
7783
virtual Result OnCallIndirectExpr(CallIndirectExpr*) = 0;
7884
virtual Result OnCallRefExpr(CallRefExpr*) = 0;
@@ -106,13 +112,15 @@ class ExprVisitor::Delegate {
106112
virtual Result OnTableGrowExpr(TableGrowExpr*) = 0;
107113
virtual Result OnTableSizeExpr(TableSizeExpr*) = 0;
108114
virtual Result OnTableFillExpr(TableFillExpr*) = 0;
115+
virtual Result OnRefAsNonNullExpr(RefAsNonNullExpr*) = 0;
109116
virtual Result OnRefFuncExpr(RefFuncExpr*) = 0;
110117
virtual Result OnRefNullExpr(RefNullExpr*) = 0;
111118
virtual Result OnRefIsNullExpr(RefIsNullExpr*) = 0;
112119
virtual Result OnNopExpr(NopExpr*) = 0;
113120
virtual Result OnReturnExpr(ReturnExpr*) = 0;
114121
virtual Result OnReturnCallExpr(ReturnCallExpr*) = 0;
115122
virtual Result OnReturnCallIndirectExpr(ReturnCallIndirectExpr*) = 0;
123+
virtual Result OnReturnCallRefExpr(ReturnCallRefExpr*) = 0;
116124
virtual Result OnSelectExpr(SelectExpr*) = 0;
117125
virtual Result OnStoreExpr(StoreExpr*) = 0;
118126
virtual Result OnUnaryExpr(UnaryExpr*) = 0;
@@ -122,6 +130,7 @@ class ExprVisitor::Delegate {
122130
virtual Result OnDelegateExpr(TryExpr*) = 0;
123131
virtual Result EndTryExpr(TryExpr*) = 0;
124132
virtual Result OnThrowExpr(ThrowExpr*) = 0;
133+
virtual Result OnThrowRefExpr(ThrowRefExpr*) = 0;
125134
virtual Result OnRethrowExpr(RethrowExpr*) = 0;
126135
virtual Result OnAtomicWaitExpr(AtomicWaitExpr*) = 0;
127136
virtual Result OnAtomicFenceExpr(AtomicFenceExpr*) = 0;
@@ -137,6 +146,24 @@ class ExprVisitor::Delegate {
137146
virtual Result OnSimdShuffleOpExpr(SimdShuffleOpExpr*) = 0;
138147
virtual Result OnLoadSplatExpr(LoadSplatExpr*) = 0;
139148
virtual Result OnLoadZeroExpr(LoadZeroExpr*) = 0;
149+
virtual Result OnArrayCopyExpr(ArrayCopyExpr*) = 0;
150+
virtual Result OnArrayFillExpr(ArrayFillExpr*) = 0;
151+
virtual Result OnArrayGetExpr(ArrayGetExpr*) = 0;
152+
virtual Result OnArrayInitDataExpr(ArrayInitDataExpr*) = 0;
153+
virtual Result OnArrayInitElemExpr(ArrayInitElemExpr*) = 0;
154+
virtual Result OnArrayNewExpr(ArrayNewExpr*) = 0;
155+
virtual Result OnArrayNewDataExpr(ArrayNewDataExpr*) = 0;
156+
virtual Result OnArrayNewDefaultExpr(ArrayNewDefaultExpr*) = 0;
157+
virtual Result OnArrayNewElemExpr(ArrayNewElemExpr*) = 0;
158+
virtual Result OnArrayNewFixedExpr(ArrayNewFixedExpr*) = 0;
159+
virtual Result OnArraySetExpr(ArraySetExpr*) = 0;
160+
virtual Result OnGCUnaryExpr(GCUnaryExpr*) = 0;
161+
virtual Result OnRefCastExpr(RefCastExpr*) = 0;
162+
virtual Result OnRefTestExpr(RefTestExpr*) = 0;
163+
virtual Result OnStructGetExpr(StructGetExpr*) = 0;
164+
virtual Result OnStructNewExpr(StructNewExpr*) = 0;
165+
virtual Result OnStructNewDefaultExpr(StructNewDefaultExpr*) = 0;
166+
virtual Result OnStructSetExpr(StructSetExpr*) = 0;
140167
};
141168

142169
class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
@@ -146,7 +173,12 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
146173
Result EndBlockExpr(BlockExpr*) override { return Result::Ok; }
147174
Result OnBrExpr(BrExpr*) override { return Result::Ok; }
148175
Result OnBrIfExpr(BrIfExpr*) override { return Result::Ok; }
176+
Result OnBrOnCastExpr(BrOnCastExpr*) override { return Result::Ok; };
177+
Result OnBrOnNonNullExpr(BrOnNonNullExpr*) override { return Result::Ok; };
178+
Result OnBrOnNullExpr(BrOnNullExpr*) override { return Result::Ok; };
149179
Result OnBrTableExpr(BrTableExpr*) override { return Result::Ok; }
180+
Result BeginTryTableExpr(TryTableExpr*) override { return Result::Ok; }
181+
Result EndTryTableExpr(TryTableExpr*) override { return Result::Ok; }
150182
Result OnCallExpr(CallExpr*) override { return Result::Ok; }
151183
Result OnCallIndirectExpr(CallIndirectExpr*) override { return Result::Ok; }
152184
Result OnCallRefExpr(CallRefExpr*) override { return Result::Ok; }
@@ -180,6 +212,7 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
180212
Result OnTableGrowExpr(TableGrowExpr*) override { return Result::Ok; }
181213
Result OnTableSizeExpr(TableSizeExpr*) override { return Result::Ok; }
182214
Result OnTableFillExpr(TableFillExpr*) override { return Result::Ok; }
215+
Result OnRefAsNonNullExpr(RefAsNonNullExpr*) override { return Result::Ok; }
183216
Result OnRefFuncExpr(RefFuncExpr*) override { return Result::Ok; }
184217
Result OnRefNullExpr(RefNullExpr*) override { return Result::Ok; }
185218
Result OnRefIsNullExpr(RefIsNullExpr*) override { return Result::Ok; }
@@ -189,6 +222,7 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
189222
Result OnReturnCallIndirectExpr(ReturnCallIndirectExpr*) override {
190223
return Result::Ok;
191224
}
225+
Result OnReturnCallRefExpr(ReturnCallRefExpr*) override { return Result::Ok; }
192226
Result OnSelectExpr(SelectExpr*) override { return Result::Ok; }
193227
Result OnStoreExpr(StoreExpr*) override { return Result::Ok; }
194228
Result OnUnaryExpr(UnaryExpr*) override { return Result::Ok; }
@@ -198,6 +232,7 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
198232
Result OnDelegateExpr(TryExpr*) override { return Result::Ok; }
199233
Result EndTryExpr(TryExpr*) override { return Result::Ok; }
200234
Result OnThrowExpr(ThrowExpr*) override { return Result::Ok; }
235+
Result OnThrowRefExpr(ThrowRefExpr*) override { return Result::Ok; }
201236
Result OnRethrowExpr(RethrowExpr*) override { return Result::Ok; }
202237
Result OnAtomicWaitExpr(AtomicWaitExpr*) override { return Result::Ok; }
203238
Result OnAtomicFenceExpr(AtomicFenceExpr*) override { return Result::Ok; }
@@ -215,6 +250,28 @@ class ExprVisitor::DelegateNop : public ExprVisitor::Delegate {
215250
Result OnSimdShuffleOpExpr(SimdShuffleOpExpr*) override { return Result::Ok; }
216251
Result OnLoadSplatExpr(LoadSplatExpr*) override { return Result::Ok; }
217252
Result OnLoadZeroExpr(LoadZeroExpr*) override { return Result::Ok; }
253+
Result OnArrayCopyExpr(ArrayCopyExpr*) override { return Result::Ok; }
254+
Result OnArrayFillExpr(ArrayFillExpr*) override { return Result::Ok; }
255+
Result OnArrayGetExpr(ArrayGetExpr*) override { return Result::Ok; }
256+
Result OnArrayInitDataExpr(ArrayInitDataExpr*) override { return Result::Ok; }
257+
Result OnArrayInitElemExpr(ArrayInitElemExpr*) override { return Result::Ok; }
258+
Result OnArrayNewExpr(ArrayNewExpr*) override { return Result::Ok; }
259+
Result OnArrayNewDataExpr(ArrayNewDataExpr*) override { return Result::Ok; }
260+
Result OnArrayNewDefaultExpr(ArrayNewDefaultExpr*) override {
261+
return Result::Ok;
262+
}
263+
Result OnArrayNewElemExpr(ArrayNewElemExpr*) override { return Result::Ok; }
264+
Result OnArrayNewFixedExpr(ArrayNewFixedExpr*) override { return Result::Ok; }
265+
Result OnArraySetExpr(ArraySetExpr*) override { return Result::Ok; }
266+
Result OnGCUnaryExpr(GCUnaryExpr*) override { return Result::Ok; }
267+
Result OnRefCastExpr(RefCastExpr*) override { return Result::Ok; }
268+
Result OnRefTestExpr(RefTestExpr*) override { return Result::Ok; }
269+
Result OnStructGetExpr(StructGetExpr*) override { return Result::Ok; }
270+
Result OnStructNewExpr(StructNewExpr*) override { return Result::Ok; }
271+
Result OnStructNewDefaultExpr(StructNewDefaultExpr*) override {
272+
return Result::Ok;
273+
}
274+
Result OnStructSetExpr(StructSetExpr*) override { return Result::Ok; }
218275
};
219276

220277
} // namespace wabt

third_party/wabt/include/wabt/feature.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,4 @@ WABT_FEATURE(memory64, "memory64", false, "64-bit me
4040
WABT_FEATURE(multi_memory, "multi-memory", false, "Multi-memory")
4141
WABT_FEATURE(extended_const, "extended-const", false, "Extended constant expressions")
4242
WABT_FEATURE(relaxed_simd, "relaxed-simd", false, "Relaxed SIMD")
43+
WABT_FEATURE(custom_page_sizes, "custom-page-sizes", false, "Custom page sizes")

0 commit comments

Comments
 (0)