mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-19 09:51:33 +00:00
Fix some map issues; Simplify internal ArrayBuffer API a bit
This commit is contained in:
@ -9,10 +9,10 @@ export class ArrayBuffer {
|
||||
|
||||
readonly byteLength: i32; // capped to [0, MAX_LENGTH]
|
||||
|
||||
constructor(length: i32) {
|
||||
constructor(length: i32, unsafe: bool = false) {
|
||||
if (<u32>length > <u32>MAX_BLENGTH) throw new RangeError("Invalid array buffer length");
|
||||
var buffer = allocUnsafe(length);
|
||||
set_memory(changetype<usize>(buffer) + HEADER_SIZE, 0, <usize>length);
|
||||
if (!unsafe) set_memory(changetype<usize>(buffer) + HEADER_SIZE, 0, <usize>length);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
@ -27,4 +27,16 @@ export class ArrayBuffer {
|
||||
move_memory(changetype<usize>(buffer) + HEADER_SIZE, changetype<usize>(this) + HEADER_SIZE + begin, newLen);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
// internals
|
||||
|
||||
static readonly HEADER_SIZE: usize = HEADER_SIZE;
|
||||
|
||||
@inline load<T>(index: i32): T {
|
||||
return load<T>(changetype<usize>(this) + index * sizeof<T>(), HEADER_SIZE);
|
||||
}
|
||||
|
||||
@inline store<T>(index: i32, value: T): void {
|
||||
store<T>(changetype<usize>(this) + index * sizeof<T>(), value, HEADER_SIZE);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user