Fix crash when assigning to bool class fields (#95)

With `Type.bool`, size is 1, so dividing by 8 isn't the right way to convert to byteSize. Instead, we need to use the `byteSize` property that does the proper ceiling division.
This commit is contained in:
Alan Pierce
2018-05-05 14:54:39 -07:00
committed by Daniel Wirtz
parent 8997561670
commit ce2bf00d62
5 changed files with 48 additions and 2 deletions

View File

@ -0,0 +1,16 @@
(module
(type $i (func (result i32)))
(memory $0 1)
(export "test" (func $class-with-boolean-field/test))
(export "memory" (memory $0))
(func $class-with-boolean-field/test (; 0 ;) (type $i) (result i32)
(local $0 i32)
(i32.store8
(get_local $0)
(i32.const 1)
)
(i32.load8_u
(get_local $0)
)
)
)

View File

@ -0,0 +1,9 @@
class A {
boolValue: bool;
}
export function test(): bool {
let a: A;
a.boolValue = true;
return a.boolValue;
}

View File

@ -0,0 +1,20 @@
(module
(type $i (func (result i32)))
(global $HEAP_BASE i32 (i32.const 4))
(memory $0 1)
(export "test" (func $class-with-boolean-field/test))
(export "memory" (memory $0))
(func $class-with-boolean-field/test (; 0 ;) (type $i) (result i32)
(local $0 i32)
(nop)
(i32.store8
(get_local $0)
(i32.const 1)
)
(return
(i32.load8_u
(get_local $0)
)
)
)
)