| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
| |
This allows overriding flags like -O2 by appending -O0 from the env var.
|
|
|
|
|
|
|
| |
All tests are now passing with cl.exe under x64. With x86 there are some test failure that I believe relate
the use of the x87 registers to pass floating point numbers. I suggest we look into fixing those as a followup.
Split out from #1833
|
| |
|
|
|
| |
Also remove unused clean_stdout/clean_stderr.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
pep8 specifies 4 space indentation. The use of 2 spaces is, I believe,
a historical anomaly where certain large organizations such as google
chose 2 over 4 and have yet to make the switch.
For a project like wabt with little python code I think the cost of
switching is small enough to justify the churn.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add `wasm2c`, a new tool that reads a `.wasm` file and generates a C
source file and its accompanying header file. The C output currently
only supports gcc/clang compilers, since it uses builtins for some
functionality.
The resulting C code is not standalone; there are runtime functions that
must be provided, as well as pointers to all imports.
The C runtime symbols that must be provided are as follows:
* `void wasm_rt_trap(wasm_rt_trap_t code)`:
Called when the WebAssembly code traps. This function must not return.
* `u32 wasm_rt_register_func_type(u32 param_count, u32 result_count, ...)`:
Register a function type with the given signature. This function must
check whether this signature has already been registered and return
the original index.
* `void wasm_rt_allocate_memory(wasm_rt_memory_t*, u32 initial, u32 max)`:
Allocate the memory buffer for the given memory object, given the
number of pages. The memory must be zeroed before returning.
* `u32 wasm_rt_grow_memory(wasm_rt_memory_t*, u32 delta)`:
Grow memory by the given number of pages. If allocation fails, or the
new pages size is larger than the maximum, return -1. Otherwise return
the previous number of pages. The newly allocated memory must be
zeroed.
* `void wasm_rt_allocate_table(wasm_rt_table_t*, u32 initial, u32 max)`:
Allocate the buffer for the given table object. The buffer must be
zeroed before returning.
* `u32 wasm_rt_call_stack_depth`:
A symbol that tracks the current call stack depth. If this value
exceeds `WASM_RT_MAX_CALL_STACK_DEPTH` then a trap occurs. This value
defaults to 500, but can redefined.
An example implementation can be found in `spec-wasm2c-prefix.c`.
All functionality from the WebAssembly MVP is supported, and the
generated code passes all of the core spec tests. There is a new test
tool called `run-spec-wasm2c.py` which runs the following:
* `wast2json` to convert the spec test to json and wasm files
* `wasm2c` to convert the wasm to C source and headers
* a C compiler (default `cc`) to compile and link all C source files,
including a C test runner (`spec-wasm2c-prefix.c`)
* Finally, the resulting executable to produce output
|
|
|
|
| |
Previously gen-wasm.py would return 0 on parse errors
rather than bailing out and causing tests to fail.
|
|
|
|
| |
This is enough to pass the testuite, but doesn't yet validate utf8
strings in the text format.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add support for yapf python formatting tool
This changs adds .style.yapf to define the python style
we are using.
I also ran yapf over all the python files:
$ yapf -i `git ls-files *.py`
Going forward, we should probably add a travis test to
prevent regressions. We should probably also switch to
more conventional 4-space indentation, which is used by
almost everybody outside of Google.
|
|
|
|
| |
This now (mostly) matches the output from the spec interpreter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous spec JSON format was defined around modules. This is
because the previous spec tests would only run assertions on the most
recently read module. In addition, the previous spec writer would write
the assertions as new exported functions in the module, and run those.
The primary reason for doing this was to allow for passing/returning i64
values, which was necessary to test in a JavaScript host.
Now that the primary host for running the spec tests is wasm-interp, we
no longer need do bundle assertions into the module. Also, some of the
new spec tests allow running exported functions on a module that is not
the most-recently-read module.
The new spec test format is now defined around commands. The commands
map directly to the spec format commands, e.g. `module`,
`assert_invalid`, `assert_trap`, etc.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Added option --stop to prompt after every error if we should continue execution.
Added option --no-multithreaded to execute tests in series.
* Added a prompt to rerun a failing test with verbose to have more info as to what happened.
Added option --print-cmd in run script to see what the commands run are in console. This is useful to repro errors on local machine.
Make sub script of run-tests.py to use the same output directory.
* Created functions RunMultiProcess & RunSingleProcess
Removed option --no-multithreaded in favor of --job 1
Code review nit fixes
|
| |
|
|
|
|
|
| |
We throw an exception if the executable fails, but even if that happens
we still want to display stdout.
|
|
|
|
|
| |
It would be nicer to have this automatically integrated with the build,
but this is OK for now.
|
|
|
|
| |
These will be useful for testing the binary reader.
|
| |
|
|
* run-tests.py now takes a `--d8-executable` flag
* Added a `TOOL` directive to tests to reduce boilerplate
* Change all tests to use the new `TOOL` directive
* Factor out executable searching with fallback to find_exe.py
This fixes issue #43.
|