Skip to content

Commit f521d7b

Browse files
authored
Update binary format in Overview (#243)
The Overview previously described the expected alignment hint as part of the binary format, making incorrect alignment hints decoding rather than validation errors. But that contradicted the other part of the overview discussing alignment as well as the spec document. Fix the binary format section of the overview to be consistent with the other documentation.
1 parent b917982 commit f521d7b

File tree

1 file changed

+76
-81
lines changed

1 file changed

+76
-81
lines changed

proposals/threads/Overview.md

Lines changed: 76 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -590,88 +590,83 @@ instr ::= ... |
590590
The [instruction binary format][] is modified as follows:
591591

592592
```
593-
memarg8 ::= 0x00 o: offset => {align 0, offset: o}
594-
memarg16 ::= 0x01 o: offset => {align 1, offset: o}
595-
memarg32 ::= 0x02 o: offset => {align 2, offset: o}
596-
memarg64 ::= 0x03 o: offset => {align 3, offset: o}
597-
598593
instr ::= ...
599-
| 0xFE 0x00 m:memarg32 => memory.atomic.notify m
600-
| 0xFE 0x01 m:memarg32 => memory.atomic.wait32 m
601-
| 0xFE 0x02 m:memarg64 => memory.atomic.wait64 m
602-
603-
| 0xFE 0x03 0x00 => atomic.fence
604-
605-
| 0xFE 0x10 m:memarg32 => i32.atomic.load m
606-
| 0xFE 0x11 m:memarg64 => i64.atomic.load m
607-
| 0xFE 0x12 m:memarg8 => i32.atomic.load8_u m
608-
| 0xFE 0x13 m:memarg16 => i32.atomic.load16_u m
609-
| 0xFE 0x14 m:memarg8 => i64.atomic.load8_u m
610-
| 0xFE 0x15 m:memarg16 => i64.atomic.load16_u m
611-
| 0xFE 0x16 m:memarg32 => i64.atomic.load32_u m
612-
| 0xFE 0x17 m:memarg32 => i32.atomic.store m
613-
| 0xFE 0x18 m:memarg64 => i64.atomic.store m
614-
| 0xFE 0x19 m:memarg8 => i32.atomic.store8 m
615-
| 0xFE 0x1A m:memarg16 => i32.atomic.store16 m
616-
| 0xFE 0x1B m:memarg8 => i64.atomic.store8 m
617-
| 0xFE 0x1C m:memarg16 => i64.atomic.store16 m
618-
| 0xFE 0x1D m:memarg32 => i64.atomic.store32 m
619-
620-
| 0xFE 0x1E m:memarg32 => i32.atomic.rmw.add m
621-
| 0xFE 0x1F m:memarg64 => i64.atomic.rmw.add m
622-
| 0xFE 0x20 m:memarg8 => i32.atomic.rmw8.add_u m
623-
| 0xFE 0x21 m:memarg16 => i32.atomic.rmw16.add_u m
624-
| 0xFE 0x22 m:memarg8 => i64.atomic.rmw8.add_u m
625-
| 0xFE 0x23 m:memarg16 => i64.atomic.rmw16.add_u m
626-
| 0xFE 0x24 m:memarg32 => i64.atomic.rmw32.add_u m
627-
628-
| 0xFE 0x25 m:memarg32 => i32.atomic.rmw.sub m
629-
| 0xFE 0x26 m:memarg64 => i64.atomic.rmw.sub m
630-
| 0xFE 0x27 m:memarg8 => i32.atomic.rmw8.sub_u m
631-
| 0xFE 0x28 m:memarg16 => i32.atomic.rmw16.sub_u m
632-
| 0xFE 0x29 m:memarg8 => i64.atomic.rmw8.sub_u m
633-
| 0xFE 0x2A m:memarg16 => i64.atomic.rmw16.sub_u m
634-
| 0xFE 0x2B m:memarg32 => i64.atomic.rmw32.sub_u m
635-
636-
| 0xFE 0x2C m:memarg32 => i32.atomic.rmw.and m
637-
| 0xFE 0x2D m:memarg64 => i64.atomic.rmw.and m
638-
| 0xFE 0x2E m:memarg8 => i32.atomic.rmw8.and_u m
639-
| 0xFE 0x2F m:memarg16 => i32.atomic.rmw16.and_u m
640-
| 0xFE 0x30 m:memarg8 => i64.atomic.rmw8.and_u m
641-
| 0xFE 0x31 m:memarg16 => i64.atomic.rmw16.and_u m
642-
| 0xFE 0x32 m:memarg32 => i64.atomic.rmw32.and_u m
643-
644-
| 0xFE 0x33 m:memarg32 => i32.atomic.rmw.or m
645-
| 0xFE 0x34 m:memarg64 => i64.atomic.rmw.or m
646-
| 0xFE 0x35 m:memarg8 => i32.atomic.rmw8.or_u m
647-
| 0xFE 0x36 m:memarg16 => i32.atomic.rmw16.or_u m
648-
| 0xFE 0x37 m:memarg8 => i64.atomic.rmw8.or_u m
649-
| 0xFE 0x38 m:memarg16 => i64.atomic.rmw16.or_u m
650-
| 0xFE 0x39 m:memarg32 => i64.atomic.rmw32.or_u m
651-
652-
| 0xFE 0x3A m:memarg32 => i32.atomic.rmw.xor m
653-
| 0xFE 0x3B m:memarg64 => i64.atomic.rmw.xor m
654-
| 0xFE 0x3C m:memarg8 => i32.atomic.rmw8.xor_u m
655-
| 0xFE 0x3D m:memarg16 => i32.atomic.rmw16.xor_u m
656-
| 0xFE 0x3E m:memarg8 => i64.atomic.rmw8.xor_u m
657-
| 0xFE 0x3F m:memarg16 => i64.atomic.rmw16.xor_u m
658-
| 0xFE 0x40 m:memarg32 => i64.atomic.rmw32.xor_u m
659-
660-
| 0xFE 0x41 m:memarg32 => i32.atomic.rmw.xchg m
661-
| 0xFE 0x42 m:memarg64 => i64.atomic.rmw.xchg m
662-
| 0xFE 0x43 m:memarg8 => i32.atomic.rmw8.xchg_u m
663-
| 0xFE 0x44 m:memarg16 => i32.atomic.rmw16.xchg_u m
664-
| 0xFE 0x45 m:memarg8 => i64.atomic.rmw8.xchg_u m
665-
| 0xFE 0x46 m:memarg16 => i64.atomic.rmw16.xchg_u m
666-
| 0xFE 0x47 m:memarg32 => i64.atomic.rmw32.xchg_u m
667-
668-
| 0xFE 0x48 m:memarg32 => i32.atomic.rmw.cmpxchg m
669-
| 0xFE 0x49 m:memarg64 => i64.atomic.rmw.cmpxchg m
670-
| 0xFE 0x4A m:memarg8 => i32.atomic.rmw8.cmpxchg_u m
671-
| 0xFE 0x4B m:memarg16 => i32.atomic.rmw16.cmpxchg_u m
672-
| 0xFE 0x4C m:memarg8 => i64.atomic.rmw8.cmpxchg_u m
673-
| 0xFE 0x4D m:memarg16 => i64.atomic.rmw16.cmpxchg_u m
674-
| 0xFE 0x4E m:memarg32 => i64.atomic.rmw32.cmpxchg_u m
594+
| 0xFE 0x00 m:memarg => memory.atomic.notify m
595+
| 0xFE 0x01 m:memarg => memory.atomic.wait32 m
596+
| 0xFE 0x02 m:memarg => memory.atomic.wait64 m
597+
598+
| 0xFE 0x03 0x00 => atomic.fence
599+
600+
| 0xFE 0x10 m:memarg => i32.atomic.load m
601+
| 0xFE 0x11 m:memarg => i64.atomic.load m
602+
| 0xFE 0x12 m:memarg => i32.atomic.load8_u m
603+
| 0xFE 0x13 m:memarg => i32.atomic.load16_u m
604+
| 0xFE 0x14 m:memarg => i64.atomic.load8_u m
605+
| 0xFE 0x15 m:memarg => i64.atomic.load16_u m
606+
| 0xFE 0x16 m:memarg => i64.atomic.load32_u m
607+
| 0xFE 0x17 m:memarg => i32.atomic.store m
608+
| 0xFE 0x18 m:memarg => i64.atomic.store m
609+
| 0xFE 0x19 m:memarg => i32.atomic.store8 m
610+
| 0xFE 0x1A m:memarg => i32.atomic.store16 m
611+
| 0xFE 0x1B m:memarg => i64.atomic.store8 m
612+
| 0xFE 0x1C m:memarg => i64.atomic.store16 m
613+
| 0xFE 0x1D m:memarg => i64.atomic.store32 m
614+
615+
| 0xFE 0x1E m:memarg => i32.atomic.rmw.add m
616+
| 0xFE 0x1F m:memarg => i64.atomic.rmw.add m
617+
| 0xFE 0x20 m:memarg => i32.atomic.rmw8.add_u m
618+
| 0xFE 0x21 m:memarg => i32.atomic.rmw16.add_u m
619+
| 0xFE 0x22 m:memarg => i64.atomic.rmw8.add_u m
620+
| 0xFE 0x23 m:memarg => i64.atomic.rmw16.add_u m
621+
| 0xFE 0x24 m:memarg => i64.atomic.rmw32.add_u m
622+
623+
| 0xFE 0x25 m:memarg => i32.atomic.rmw.sub m
624+
| 0xFE 0x26 m:memarg => i64.atomic.rmw.sub m
625+
| 0xFE 0x27 m:memarg => i32.atomic.rmw8.sub_u m
626+
| 0xFE 0x28 m:memarg => i32.atomic.rmw16.sub_u m
627+
| 0xFE 0x29 m:memarg => i64.atomic.rmw8.sub_u m
628+
| 0xFE 0x2A m:memarg => i64.atomic.rmw16.sub_u m
629+
| 0xFE 0x2B m:memarg => i64.atomic.rmw32.sub_u m
630+
631+
| 0xFE 0x2C m:memarg => i32.atomic.rmw.and m
632+
| 0xFE 0x2D m:memarg => i64.atomic.rmw.and m
633+
| 0xFE 0x2E m:memarg => i32.atomic.rmw8.and_u m
634+
| 0xFE 0x2F m:memarg => i32.atomic.rmw16.and_u m
635+
| 0xFE 0x30 m:memarg => i64.atomic.rmw8.and_u m
636+
| 0xFE 0x31 m:memarg => i64.atomic.rmw16.and_u m
637+
| 0xFE 0x32 m:memarg => i64.atomic.rmw32.and_u m
638+
639+
| 0xFE 0x33 m:memarg => i32.atomic.rmw.or m
640+
| 0xFE 0x34 m:memarg => i64.atomic.rmw.or m
641+
| 0xFE 0x35 m:memarg => i32.atomic.rmw8.or_u m
642+
| 0xFE 0x36 m:memarg => i32.atomic.rmw16.or_u m
643+
| 0xFE 0x37 m:memarg => i64.atomic.rmw8.or_u m
644+
| 0xFE 0x38 m:memarg => i64.atomic.rmw16.or_u m
645+
| 0xFE 0x39 m:memarg => i64.atomic.rmw32.or_u m
646+
647+
| 0xFE 0x3A m:memarg => i32.atomic.rmw.xor m
648+
| 0xFE 0x3B m:memarg => i64.atomic.rmw.xor m
649+
| 0xFE 0x3C m:memarg => i32.atomic.rmw8.xor_u m
650+
| 0xFE 0x3D m:memarg => i32.atomic.rmw16.xor_u m
651+
| 0xFE 0x3E m:memarg => i64.atomic.rmw8.xor_u m
652+
| 0xFE 0x3F m:memarg => i64.atomic.rmw16.xor_u m
653+
| 0xFE 0x40 m:memarg => i64.atomic.rmw32.xor_u m
654+
655+
| 0xFE 0x41 m:memarg => i32.atomic.rmw.xchg m
656+
| 0xFE 0x42 m:memarg => i64.atomic.rmw.xchg m
657+
| 0xFE 0x43 m:memarg => i32.atomic.rmw8.xchg_u m
658+
| 0xFE 0x44 m:memarg => i32.atomic.rmw16.xchg_u m
659+
| 0xFE 0x45 m:memarg => i64.atomic.rmw8.xchg_u m
660+
| 0xFE 0x46 m:memarg => i64.atomic.rmw16.xchg_u m
661+
| 0xFE 0x47 m:memarg => i64.atomic.rmw32.xchg_u m
662+
663+
| 0xFE 0x48 m:memarg => i32.atomic.rmw.cmpxchg m
664+
| 0xFE 0x49 m:memarg => i64.atomic.rmw.cmpxchg m
665+
| 0xFE 0x4A m:memarg => i32.atomic.rmw8.cmpxchg_u m
666+
| 0xFE 0x4B m:memarg => i32.atomic.rmw16.cmpxchg_u m
667+
| 0xFE 0x4C m:memarg => i64.atomic.rmw8.cmpxchg_u m
668+
| 0xFE 0x4D m:memarg => i64.atomic.rmw16.cmpxchg_u m
669+
| 0xFE 0x4E m:memarg => i64.atomic.rmw32.cmpxchg_u m
675670
```
676671

677672
[ECMAScript agent]: https://tc39.github.io/ecma262/#sec-agents

0 commit comments

Comments
 (0)