wasm64 asserts

This commit is contained in:
dcode 2019-03-29 10:58:26 +01:00
parent f4dcd22575
commit c558c1d9b0
2 changed files with 199 additions and 177 deletions

View File

@ -1,6 +1,7 @@
import { dirent, rwevent, fdstat, filestat, iovec, clocksubscription, fdsubscription, signal, dirprestat } from "bindings/wasi";
// TODO: WASM64
const WASM32 = 1;
const WASM64 = 2;
assert(offsetof<dirent>("next") == 0);
assert(offsetof<dirent>("ino") == 8);
@ -32,8 +33,15 @@ assert(offsetof<filestat>("ctim") == 48);
assert(offsetof<filestat>() == 56);
assert(offsetof<iovec>("buf") == 0);
assert(offsetof<iovec>("buf_len") == 4);
assert(offsetof<iovec>() == 8);
if (ASC_TARGET == WASM32) {
assert(offsetof<iovec>("buf_len") == 4);
assert(offsetof<iovec>() == 8);
} else if (ASC_TARGET == WASM64) {
assert(offsetof<iovec>("buf_len") == 8);
assert(offsetof<iovec>() == 16);
} else {
assert(false);
}
assert(offsetof<clocksubscription>("userdata") == 0);
assert(offsetof<clocksubscription>("type") == 8);
@ -50,8 +58,15 @@ assert(offsetof<fdsubscription>("fd") == 16);
assert(offsetof<fdsubscription>() == 20);
assert(offsetof<dirprestat>("type") == 0);
assert(offsetof<dirprestat>("name_len") == 4);
assert(offsetof<dirprestat>() == 8);
if (ASC_TARGET == WASM32) {
assert(offsetof<dirprestat>("name_len") == 4);
assert(offsetof<dirprestat>() == 8);
} else if (ASC_TARGET == WASM64) {
assert(offsetof<dirprestat>("name_len") == 8);
assert(offsetof<dirprestat>() == 16);
} else {
assert(false);
}
// check assignability of mimicked typed enums
var sig: signal = signal.HUP;

View File

@ -6,6 +6,9 @@
(data (i32.const 8) "\07\00\00\00w\00a\00s\00i\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $wasi/WASM32 i32 (i32.const 1))
(global $wasi/WASM64 i32 (i32.const 2))
(global $~lib/ASC_TARGET i32 (i32.const 0))
(global $wasi/sig (mut i32) (i32.const 1))
(global $~lib/memory/HEAP_BASE i32 (i32.const 28))
(export "memory" (memory $0))
@ -16,18 +19,6 @@
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 5
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
@ -36,8 +27,8 @@
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
@ -48,8 +39,8 @@
call $~lib/env/abort
unreachable
end
i32.const 20
i32.const 20
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
@ -60,8 +51,8 @@
call $~lib/env/abort
unreachable
end
i32.const 24
i32.const 24
i32.const 20
i32.const 20
i32.eq
i32.eqz
if
@ -72,20 +63,20 @@
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 11
i32.const 10
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
@ -96,8 +87,8 @@
call $~lib/env/abort
unreachable
end
i32.const 10
i32.const 10
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
@ -108,8 +99,8 @@
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.const 10
i32.const 10
i32.eq
i32.eqz
if
@ -120,8 +111,8 @@
call $~lib/env/abort
unreachable
end
i32.const 24
i32.const 24
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
@ -132,8 +123,8 @@
call $~lib/env/abort
unreachable
end
i32.const 32
i32.const 32
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
@ -144,20 +135,20 @@
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 18
i32.const 17
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 2
i32.const 2
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
@ -168,8 +159,8 @@
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.const 2
i32.const 2
i32.eq
i32.eqz
if
@ -180,8 +171,8 @@
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
@ -192,8 +183,8 @@
call $~lib/env/abort
unreachable
end
i32.const 24
i32.const 24
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
@ -204,20 +195,20 @@
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 24
i32.const 23
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
@ -228,8 +219,8 @@
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
@ -240,8 +231,8 @@
call $~lib/env/abort
unreachable
end
i32.const 20
i32.const 20
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
@ -252,8 +243,8 @@
call $~lib/env/abort
unreachable
end
i32.const 24
i32.const 24
i32.const 20
i32.const 20
i32.eq
i32.eqz
if
@ -264,8 +255,8 @@
call $~lib/env/abort
unreachable
end
i32.const 32
i32.const 32
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
@ -276,8 +267,8 @@
call $~lib/env/abort
unreachable
end
i32.const 40
i32.const 40
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
@ -288,8 +279,8 @@
call $~lib/env/abort
unreachable
end
i32.const 48
i32.const 48
i32.const 40
i32.const 40
i32.eq
i32.eqz
if
@ -300,8 +291,8 @@
call $~lib/env/abort
unreachable
end
i32.const 56
i32.const 56
i32.const 48
i32.const 48
i32.eq
i32.eqz
if
@ -312,20 +303,20 @@
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.const 56
i32.const 56
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 34
i32.const 33
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 4
i32.const 4
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
@ -336,17 +327,31 @@
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
block
i32.const 4
i32.const 4
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 37
i32.const 2
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 36
i32.const 0
call $~lib/env/abort
unreachable
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 38
i32.const 2
call $~lib/env/abort
unreachable
end
end
i32.const 0
i32.const 0
@ -355,7 +360,7 @@
if
i32.const 0
i32.const 8
i32.const 38
i32.const 46
i32.const 0
call $~lib/env/abort
unreachable
@ -364,90 +369,6 @@
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 39
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 40
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 41
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 42
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 40
i32.const 40
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 43
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 48
i32.const 48
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 44
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 56
i32.const 56
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 45
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
@ -456,8 +377,8 @@
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
@ -468,8 +389,8 @@
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
@ -480,8 +401,8 @@
call $~lib/env/abort
unreachable
end
i32.const 20
i32.const 20
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
@ -492,8 +413,20 @@
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.const 40
i32.const 40
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 51
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 48
i32.const 48
i32.eq
i32.eqz
if
@ -504,8 +437,8 @@
call $~lib/env/abort
unreachable
end
i32.const 4
i32.const 4
i32.const 56
i32.const 56
i32.eq
i32.eqz
if
@ -516,6 +449,18 @@
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 55
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
@ -523,11 +468,73 @@
if
i32.const 0
i32.const 8
i32.const 54
i32.const 56
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 57
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 20
i32.const 20
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 58
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 60
i32.const 0
call $~lib/env/abort
unreachable
end
block
i32.const 4
i32.const 4
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 62
i32.const 2
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 8
i32.const 63
i32.const 2
call $~lib/env/abort
unreachable
end
end
i32.const 9
global.set $wasi/sig
)