Skip to content

Commit bd1d4cb

Browse files
committed
update wabt fork
1 parent 699b6d7 commit bd1d4cb

Some content is hidden

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

90 files changed

+10152
-7924
lines changed

lib/wabt/.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
/fuzz-out
44
/emscripten
55
*.pyc
6-
6+
.idea/
7+
/cmake-build-debug/
78
.gitmodules
89
/test
910
/tests
10-
/third_party
11+
/third_party

lib/wabt/CMakeLists.txt

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -84,48 +84,41 @@ set(WAST_LEXER_GEN_CC src/prebuilt/wast-lexer-gen.cc)
8484
add_custom_target(everything)
8585

8686
add_library(libwabt OBJECT
87-
src/token.cc
88-
src/opcode.cc
89-
src/error-handler.cc
90-
src/hash-util.cc
91-
src/filenames.cc
92-
src/string-view.cc
93-
src/ir.cc
94-
src/expr-visitor.cc
95-
src/lexer-source.cc
96-
src/lexer-source-line-finder.cc
97-
src/wast-parser-lexer-shared.cc
98-
${WAST_LEXER_GEN_CC}
99-
src/wast-parser.cc
100-
src/type-checker.cc
101-
src/validator.cc
102-
87+
chakra/wabtapi.cc
88+
src/apply-names.cc
89+
src/binary.cc
10390
src/binary-reader.cc
91+
src/binary-reader-ir.cc
10492
src/binary-reader-logging.cc
10593
src/binary-writer.cc
10694
src/binary-writer-spec.cc
107-
src/binary-reader-ir.cc
10895
src/binding-hash.cc
109-
src/wat-writer.cc
110-
src/interp.cc
111-
src/binary-reader-interp.cc
112-
src/apply-names.cc
113-
src/generate-names.cc
114-
src/resolve-names.cc
115-
116-
src/binary.cc
11796
src/color.cc
11897
src/common.cc
11998
src/config.cc
99+
src/error-formatter.cc
100+
src/expr-visitor.cc
120101
src/feature.cc
102+
src/filenames.cc
103+
src/generate-names.cc
104+
src/hash-util.cc
105+
src/ir.cc
121106
src/leb128.cc
107+
src/lexer-source.cc
108+
src/lexer-source-line-finder.cc
122109
src/literal.cc
110+
src/opcode.cc
111+
src/opcode-code-table.c
123112
src/option-parser.cc
113+
src/resolve-names.cc
124114
src/stream.cc
115+
src/string-view.cc
116+
src/token.cc
125117
src/tracing.cc
118+
src/type-checker.cc
126119
src/utf8.cc
127-
128-
chakra/wabtapi.cc
129-
130-
120+
src/validator.cc
121+
src/wast-parser.cc
122+
src/wat-writer.cc
123+
${WAST_LEXER_GEN_CC}
131124
)

lib/wabt/README.md

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Build Status](https://travis-ci.org/WebAssembly/wabt.svg?branch=master)](https://travis-ci.org/WebAssembly/wabt) [![Windows status](https://ci.appveyor.com/api/projects/status/79hqj5l0qggw645d/branch/master?svg=true)](https://ci.appveyor.com/project/WebAssembly/wabt/branch/master)
1+
[![Build Status](https://travis-ci.org/WebAssembly/wabt.svg?branch=master)](https://travis-ci.org/WebAssembly/wabt) [![Windows status](https://ci.appveyor.com/api/projects/status/8vl5jwtk5ch6r84t/branch/master?svg=true)](https://ci.appveyor.com/project/WebAssembly/wabt/branch/master)
22

33
# WABT: The WebAssembly Binary Toolkit
44

@@ -24,9 +24,9 @@ target; instead they aim for full fidelity and compliance with the spec (e.g.
2424

2525
Wabt has been compiled to JavaScript via emscripten. Some of the functionality is available in the following demos:
2626

27-
- [index](https://cdn.rawgit.com/WebAssembly/wabt/aae5a4b7/demo/index.html)
28-
- [wat2wasm](https://cdn.rawgit.com/WebAssembly/wabt/aae5a4b7/demo/wat2wasm/)
29-
- [wasm2wat](https://cdn.rawgit.com/WebAssembly/wabt/aae5a4b7/demo/wasm2wat/)
27+
- [index](https://webassembly.github.io/wabt/demo/)
28+
- [wat2wasm](https://webassembly.github.io/wabt/demo/wat2wasm/)
29+
- [wasm2wat](https://webassembly.github.io/wabt/demo/wasm2wat/)
3030

3131
## Cloning
3232

@@ -53,6 +53,10 @@ $ make
5353
This will build the default version of the tools: a debug build using the Clang
5454
compiler.
5555

56+
**NOTE**: Under the hood, this uses make to run CMake, which then calls make again.
57+
On some systems, this doesn't build properly. If you see these errors, you can build
58+
using CMake directly as described below.
59+
5660
There are many make targets available for other configurations as well. They
5761
are generated from every combination of a compiler, build type and
5862
configuration.
@@ -71,6 +75,8 @@ $ make clang-debug-lsan
7175
$ make gcc-debug-no-re2c
7276
```
7377

78+
### Building using CMake directly
79+
7480
You can also run CMake yourself, the normal way:
7581

7682
```console
@@ -149,13 +155,13 @@ $ out/wat2wasm spec-test.wast -v
149155
$ out/wast2json spec-test.wast -o spec-test.json
150156
```
151157

152-
You can use `-h` to get additional help:
158+
You can use `--help` to get additional help:
153159

154160
```console
155-
$ out/wat2wasm -h
161+
$ out/wat2wasm --help
156162
```
157163

158-
Or try the [online demo](https://cdn.rawgit.com/WebAssembly/wabt/aae5a4b7/demo/wat2wasm/).
164+
Or try the [online demo](https://webassembly.github.io/wabt/demo/wat2wasm/).
159165

160166
## Running wasm2wat
161167

@@ -169,13 +175,13 @@ $ out/wasm2wat test.wasm -o test.wat
169175
$ out/wasm2wat test.wasm -o test.wat
170176
```
171177

172-
You can use `-h` to get additional help:
178+
You can use `--help` to get additional help:
173179

174180
```console
175-
$ out/wasm2wat -h
181+
$ out/wasm2wat --help
176182
```
177183

178-
Or try the [online demo](https://cdn.rawgit.com/WebAssembly/wabt/aae5a4b7/demo/wasm2wat/).
184+
Or try the [online demo](https://webassembly.github.io/wabt/demo/wasm2wat/).
179185

180186
## Running wasm-interp
181187

@@ -199,10 +205,10 @@ $ out/wasm-interp test.json --spec
199205
$ out/wasm-interp test.wasm -V 100 --run-all-exports
200206
```
201207

202-
You can use `-h` to get additional help:
208+
You can use `--help` to get additional help:
203209

204210
```console
205-
$ out/wasm-interp -h
211+
$ out/wasm-interp --help
206212
```
207213

208214
## Running wasm2c

lib/wabt/src/apply-names.cc

Lines changed: 65 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ class NameApplier : public ExprVisitor::DelegateNop {
4242
Result OnBrTableExpr(BrTableExpr*) override;
4343
Result OnCallExpr(CallExpr*) override;
4444
Result OnCallIndirectExpr(CallIndirectExpr*) override;
45+
Result OnReturnCallExpr(ReturnCallExpr*) override;
46+
Result OnReturnCallIndirectExpr(ReturnCallIndirectExpr*) override;
4547
Result OnGetGlobalExpr(GetGlobalExpr*) override;
4648
Result OnGetLocalExpr(GetLocalExpr*) override;
4749
Result BeginIfExpr(IfExpr*) override;
@@ -50,8 +52,12 @@ class NameApplier : public ExprVisitor::DelegateNop {
5052
Result EndIfExceptExpr(IfExceptExpr*) override;
5153
Result BeginLoopExpr(LoopExpr*) override;
5254
Result EndLoopExpr(LoopExpr*) override;
55+
Result OnMemoryDropExpr(MemoryDropExpr*) override;
56+
Result OnMemoryInitExpr(MemoryInitExpr*) override;
5357
Result OnSetGlobalExpr(SetGlobalExpr*) override;
5458
Result OnSetLocalExpr(SetLocalExpr*) override;
59+
Result OnTableDropExpr(TableDropExpr*) override;
60+
Result OnTableInitExpr(TableInitExpr*) override;
5561
Result OnTeeLocalExpr(TeeLocalExpr*) override;
5662
Result BeginTryExpr(TryExpr*) override;
5763
Result EndTryExpr(TryExpr*) override;
@@ -68,6 +74,8 @@ class NameApplier : public ExprVisitor::DelegateNop {
6874
Result UseNameForTableVar(Var* var);
6975
Result UseNameForMemoryVar(Var* var);
7076
Result UseNameForExceptVar(Var* var);
77+
Result UseNameForDataSegmentVar(Var* var);
78+
Result UseNameForElemSegmentVar(Var* var);
7179
Result UseNameForParamAndLocalVar(Func* func, Var* var);
7280
Result VisitFunc(Index func_index, Func* func);
7381
Result VisitGlobal(Global* global);
@@ -78,9 +86,7 @@ class NameApplier : public ExprVisitor::DelegateNop {
7886
Module* module_ = nullptr;
7987
Func* current_func_ = nullptr;
8088
ExprVisitor visitor_;
81-
/* mapping from param index to its name, if any, for the current func */
82-
std::vector<std::string> param_index_to_name_;
83-
std::vector<std::string> local_index_to_name_;
89+
std::vector<std::string> param_and_local_index_to_name_;
8490
std::vector<std::string> labels_;
8591
};
8692

@@ -176,32 +182,38 @@ Result NameApplier::UseNameForExceptVar(Var* var) {
176182
return Result::Ok;
177183
}
178184

185+
Result NameApplier::UseNameForDataSegmentVar(Var* var) {
186+
DataSegment* data_segment = module_->GetDataSegment(*var);
187+
if (!data_segment) {
188+
return Result::Error;
189+
}
190+
UseNameForVar(data_segment->name, var);
191+
return Result::Ok;
192+
}
193+
194+
Result NameApplier::UseNameForElemSegmentVar(Var* var) {
195+
ElemSegment* elem_segment = module_->GetElemSegment(*var);
196+
if (!elem_segment) {
197+
return Result::Error;
198+
}
199+
UseNameForVar(elem_segment->name, var);
200+
return Result::Ok;
201+
}
202+
179203
Result NameApplier::UseNameForParamAndLocalVar(Func* func, Var* var) {
180204
Index local_index = func->GetLocalIndex(*var);
181205
if (local_index >= func->GetNumParamsAndLocals()) {
182206
return Result::Error;
183207
}
184208

185-
Index num_params = func->GetNumParams();
186-
std::string* name;
187-
if (local_index < num_params) {
188-
/* param */
189-
assert(local_index < param_index_to_name_.size());
190-
name = &param_index_to_name_[local_index];
191-
} else {
192-
/* local */
193-
local_index -= num_params;
194-
assert(local_index < local_index_to_name_.size());
195-
name = &local_index_to_name_[local_index];
196-
}
197-
209+
std::string name = param_and_local_index_to_name_[local_index];
198210
if (var->is_name()) {
199-
assert(*name == var->name());
211+
assert(name == var->name());
200212
return Result::Ok;
201213
}
202214

203-
if (!name->empty()) {
204-
var->set_name(*name);
215+
if (!name.empty()) {
216+
var->set_name(name);
205217
}
206218
return Result::Ok;
207219
}
@@ -226,6 +238,26 @@ Result NameApplier::EndLoopExpr(LoopExpr* expr) {
226238
return Result::Ok;
227239
}
228240

241+
Result NameApplier::OnMemoryDropExpr(MemoryDropExpr* expr) {
242+
CHECK_RESULT(UseNameForDataSegmentVar(&expr->var));
243+
return Result::Ok;
244+
}
245+
246+
Result NameApplier::OnMemoryInitExpr(MemoryInitExpr* expr) {
247+
CHECK_RESULT(UseNameForDataSegmentVar(&expr->var));
248+
return Result::Ok;
249+
}
250+
251+
Result NameApplier::OnTableDropExpr(TableDropExpr* expr) {
252+
CHECK_RESULT(UseNameForElemSegmentVar(&expr->var));
253+
return Result::Ok;
254+
}
255+
256+
Result NameApplier::OnTableInitExpr(TableInitExpr* expr) {
257+
CHECK_RESULT(UseNameForElemSegmentVar(&expr->var));
258+
return Result::Ok;
259+
}
260+
229261
Result NameApplier::OnBrExpr(BrExpr* expr) {
230262
string_view label = FindLabelByVar(&expr->var);
231263
UseNameForVar(label, &expr->var);
@@ -276,6 +308,18 @@ Result NameApplier::OnCallIndirectExpr(CallIndirectExpr* expr) {
276308
return Result::Ok;
277309
}
278310

311+
Result NameApplier::OnReturnCallExpr(ReturnCallExpr* expr) {
312+
CHECK_RESULT(UseNameForFuncVar(&expr->var));
313+
return Result::Ok;
314+
}
315+
316+
Result NameApplier::OnReturnCallIndirectExpr(ReturnCallIndirectExpr* expr) {
317+
if (expr->decl.has_func_type) {
318+
CHECK_RESULT(UseNameForFuncTypeVar(&expr->decl.type_var));
319+
}
320+
return Result::Ok;
321+
}
322+
279323
Result NameApplier::OnGetGlobalExpr(GetGlobalExpr* expr) {
280324
CHECK_RESULT(UseNameForGlobalVar(&expr->var));
281325
return Result::Ok;
@@ -328,11 +372,8 @@ Result NameApplier::VisitFunc(Index func_index, Func* func) {
328372
CHECK_RESULT(UseNameForFuncTypeVar(&func->decl.type_var));
329373
}
330374

331-
MakeTypeBindingReverseMapping(func->decl.sig.param_types.size(),
332-
func->param_bindings, &param_index_to_name_);
333-
334-
MakeTypeBindingReverseMapping(func->local_types.size(), func->local_bindings,
335-
&local_index_to_name_);
375+
MakeTypeBindingReverseMapping(func->GetNumParamsAndLocals(), func->bindings,
376+
&param_and_local_index_to_name_);
336377

337378
CHECK_RESULT(visitor_.VisitFunc(func));
338379
current_func_ = nullptr;

0 commit comments

Comments
 (0)