Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
4937306
avoid unportable sizes in wasm.h
kripken Jan 13, 2016
8bf0cb2
initial work on wasm-dis
kripken Jan 12, 2016
4b47bb5
prepare for wasm-dis testing
kripken Jan 13, 2016
1f608d0
add debugging for wasm-binary.h
kripken Jan 14, 2016
fa00663
fix LEB128 bug
kripken Jan 14, 2016
fea7841
avoid char casting bug in wasm-binary
kripken Jan 14, 2016
91e8b41
more debugging
kripken Jan 14, 2016
9d54e79
use unsigned types in wasm-binary.h
kripken Jan 14, 2016
4f55995
fix maybeVisit logic
kripken Jan 14, 2016
3334c09
add a call assert and debugging
kripken Jan 14, 2016
cca4d2b
more testing prep
kripken Jan 14, 2016
503e677
functions must be parsed after all their targets are known
kripken Jan 14, 2016
477e456
more debugging
kripken Jan 14, 2016
8e629f9
fix buffer writing bug
kripken Jan 14, 2016
6bc27c2
fix binary skipping bug
kripken Jan 14, 2016
12bef76
fix locals in binary format
kripken Jan 14, 2016
d4f7135
more binary fixes
kripken Jan 14, 2016
0bfe856
fix function size offsetting
kripken Jan 14, 2016
1345f70
fix call_import
kripken Jan 14, 2016
d053ddf
more binary debugging
kripken Jan 14, 2016
ded8b25
artisinal debugging
kripken Jan 14, 2016
9bf5aa7
fix recursion debugging
kripken Jan 14, 2016
666822e
fix binary writing of BrIf
kripken Jan 14, 2016
76db2f0
fix binary writing of CallIndirect
kripken Jan 14, 2016
786e952
add locations for recursion debugging
kripken Jan 14, 2016
db7285b
break assert
kripken Jan 14, 2016
aa3b46f
break/switch fixes
kripken Jan 14, 2016
b78c990
add local assertions
kripken Jan 14, 2016
3c1b775
fix an LEB128 bug
kripken Jan 14, 2016
af146aa
enable binary format testing
kripken Jan 14, 2016
1e80630
comments
kripken Jan 15, 2016
1897786
minor binary updates following comments
kripken Jan 15, 2016
52fe6ca
improve a for loop
kripken Jan 15, 2016
1b89d3b
add a constant for natural alignment in the binary format
kripken Jan 15, 2016
280289a
use std::pow
kripken Jan 15, 2016
2c4a72b
add expected outputs from text->binary->text test
kripken Jan 15, 2016
faca86f
add missing types in binary reading
kripken Jan 15, 2016
3f61f46
fix type of const values from binary
kripken Jan 15, 2016
921c9d9
improve for loops
kripken Jan 15, 2016
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ bin/wasm2asm
bin/s2wasm
bin/wasm.js
bin/wasm-as
bin/wasm-dis
*.a
*~
*.diff
Expand Down
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,13 @@ TARGET_LINK_LIBRARIES(wasm-as support)
SET_PROPERTY(TARGET wasm-as PROPERTY CXX_STANDARD 11)
SET_PROPERTY(TARGET wasm-as PROPERTY CXX_STANDARD_REQUIRED ON)
INSTALL(TARGETS wasm-as DESTINATION bin)

SET(wasm_dis_SOURCES
src/wasm-dis.cpp
)
ADD_EXECUTABLE(wasm-dis
${wasm_dis_SOURCES})
TARGET_LINK_LIBRARIES(wasm-dis support)
SET_PROPERTY(TARGET wasm-dis PROPERTY CXX_STANDARD 11)
SET_PROPERTY(TARGET wasm-dis PROPERTY CXX_STANDARD_REQUIRED ON)
INSTALL(TARGETS wasm-dis DESTINATION bin)
18 changes: 18 additions & 0 deletions auto_update_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,23 @@
actual, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
open(os.path.join('test', 'passes', passname + '.txt'), 'w').write(actual)

print '\n[ checking binary format testcases... ]\n'

for wast in sorted(os.listdir('test')):
if wast.endswith('.wast') and not wast in ['unit.wast']: # blacklist some known failures
cmd = [os.path.join('bin', 'wasm-as'), os.path.join('test', wast), '-o', 'a.wasm']
print ' '.join(cmd)
if os.path.exists('a.wasm'): os.unlink('a.wasm')
subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
assert os.path.exists('a.wasm')

cmd = [os.path.join('bin', 'wasm-dis'), 'a.wasm', '-o', 'a.wast']
print ' '.join(cmd)
if os.path.exists('a.wast'): os.unlink('a.wast')
subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
assert os.path.exists('a.wast')
actual = open('a.wast').read()
open(os.path.join('test', wast + '.fromBinary'), 'w').write(actual)

print '\n[ success! ]'

14 changes: 12 additions & 2 deletions check.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,16 +280,26 @@ def fix(x):
if unexpected_result_count:
fail(unexpected_result_count, 0)

print '\n[ checking wasm-as testcases... ]\n'
print '\n[ checking binary format testcases... ]\n'

for wast in tests:
if wast.endswith('.wast') and not wast in ['unit.wast']: # blacklist some known failures
cmd = [os.path.join('bin', 'wasm-as'), os.path.join('test', wast), '-o', 'a.wasm']
print cmd
print ' '.join(cmd)
if os.path.exists('a.wasm'): os.unlink('a.wasm')
subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
assert os.path.exists('a.wasm')

cmd = [os.path.join('bin', 'wasm-dis'), 'a.wasm', '-o', 'a.wast']
print ' '.join(cmd)
if os.path.exists('a.wast'): os.unlink('a.wast')
subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
assert os.path.exists('a.wast')
expected = open(os.path.join('test', wast + '.fromBinary')).read()
actual = open('a.wast').read()
if actual != expected:
fail(actual, expected)

print '\n[ checking example testcases... ]\n'

cmd = [os.environ.get('CXX') or 'g++', '-std=c++11', os.path.join('test', 'example', 'find_div0s.cpp'), '-Isrc', '-g', '-lsupport', '-Llib/.']
Expand Down
4 changes: 2 additions & 2 deletions src/wasm-as.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ int main(int argc, const char *argv[]) {
SExpressionWasmBuilder builder(wasm, *root[0], [&]() { abort(); });

if (options.debug) std::cerr << "binarification..." << std::endl;
BufferWithRandomAccess buffer;
WasmBinaryWriter writer(&wasm, buffer);
BufferWithRandomAccess buffer(options.debug);
WasmBinaryWriter writer(&wasm, buffer, options.debug);
writer.write();

if (options.debug) std::cerr << "writing to output..." << std::endl;
Expand Down
Loading