mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-16 16:31:32 +00:00
Polyfill move_memory and set_memory and remove Heap
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
var arr = changetype<i32[]>(Heap.allocate(sizeof<usize>() + 2 * sizeof<i32>()));
|
||||
var arr = changetype<i32[]>(allocate_memory(sizeof<usize>() + 2 * sizeof<i32>()));
|
||||
|
||||
assert(arr.length == 0);
|
||||
assert(arr.__capacity == 0);
|
||||
@ -36,7 +36,7 @@ assert(arr[0] == 43);
|
||||
assert(arr[1] == 44);
|
||||
assert(arr[2] == 45);
|
||||
|
||||
arr.unshift(42); // see FIXME in std:array
|
||||
arr.unshift(42);
|
||||
|
||||
assert(arr.length == 4);
|
||||
assert(arr.__capacity == 4);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -8,6 +8,13 @@
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $std:array/CArray#__get (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(if
|
||||
(i32.lt_s
|
||||
(get_local $1)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(i32.load
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
@ -19,6 +26,13 @@
|
||||
)
|
||||
)
|
||||
(func $std:array/CArray#__set (; 1 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(if
|
||||
(i32.lt_s
|
||||
(get_local $1)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(i32.store
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
|
@ -8,6 +8,13 @@
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $std:array/CArray#__get (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(if
|
||||
(i32.lt_s
|
||||
(get_local $1)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(return
|
||||
(i32.load
|
||||
(i32.add
|
||||
@ -21,6 +28,13 @@
|
||||
)
|
||||
)
|
||||
(func $std:array/CArray#__set (; 1 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(if
|
||||
(i32.lt_s
|
||||
(get_local $1)
|
||||
(i32.const 0)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(i32.store
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
@ -247,16 +261,17 @@
|
||||
GLOBAL: std:heap/ALIGN_SIZE
|
||||
GLOBAL: std:heap/ALIGN_MASK
|
||||
GLOBAL: std:heap/HEAP_OFFSET
|
||||
CLASS_PROTOTYPE: std:heap/Heap
|
||||
CLASS_PROTOTYPE: Heap
|
||||
PROPERTY: std:heap/Heap.used
|
||||
PROPERTY: std:heap/Heap.free
|
||||
PROPERTY: std:heap/Heap.size
|
||||
FUNCTION_PROTOTYPE: std:heap/Heap.allocate
|
||||
FUNCTION_PROTOTYPE: std:heap/Heap.dispose
|
||||
FUNCTION_PROTOTYPE: std:heap/Heap.copy
|
||||
FUNCTION_PROTOTYPE: std:heap/Heap.fill
|
||||
FUNCTION_PROTOTYPE: std:heap/Heap.compare
|
||||
FUNCTION_PROTOTYPE: std:heap/allocate_memory
|
||||
FUNCTION_PROTOTYPE: allocate_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/free_memory
|
||||
FUNCTION_PROTOTYPE: free_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/copy_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/move_memory
|
||||
FUNCTION_PROTOTYPE: move_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/set_memory
|
||||
FUNCTION_PROTOTYPE: set_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/compare_memory
|
||||
FUNCTION_PROTOTYPE: compare_memory
|
||||
CLASS_PROTOTYPE: std:map/Map
|
||||
CLASS_PROTOTYPE: Map
|
||||
CLASS_PROTOTYPE: std:regexp/RegExp
|
||||
@ -277,7 +292,11 @@
|
||||
CLASS_PROTOTYPE: std:array/CArray
|
||||
CLASS_PROTOTYPE: std:error/Error
|
||||
CLASS_PROTOTYPE: std:error/RangeError
|
||||
CLASS_PROTOTYPE: std:heap/Heap
|
||||
FUNCTION_PROTOTYPE: std:heap/allocate_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/free_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/move_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/set_memory
|
||||
FUNCTION_PROTOTYPE: std:heap/compare_memory
|
||||
CLASS_PROTOTYPE: std:map/Map
|
||||
CLASS_PROTOTYPE: std:regexp/RegExp
|
||||
CLASS_PROTOTYPE: std:set/Set
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,21 +1,21 @@
|
||||
const size: usize = 42;
|
||||
let ptr1: usize = Heap.allocate(size);
|
||||
let ptr2: usize = Heap.allocate(size);
|
||||
let ptr1: usize = allocate_memory(size);
|
||||
let ptr2: usize = allocate_memory(size);
|
||||
|
||||
assert(ptr1 != ptr2);
|
||||
|
||||
Heap.fill(ptr1, 0x12, size);
|
||||
set_memory(ptr1, 0x12, size);
|
||||
|
||||
let i: usize;
|
||||
for (i = 0; i < size; ++i)
|
||||
assert(load<u8>(ptr1 + i) == 0x12);
|
||||
|
||||
Heap.copy(ptr2, ptr1, size);
|
||||
move_memory(ptr2, ptr1, size);
|
||||
|
||||
for (i = 0; i < size; ++i)
|
||||
assert(load<u8>(ptr2 + i) == 0x12);
|
||||
|
||||
assert(Heap.compare(ptr1, ptr2, size) == 0);
|
||||
assert(compare_memory(ptr1, ptr2, size) == 0);
|
||||
|
||||
Heap.dispose(ptr1);
|
||||
Heap.dispose(ptr2);
|
||||
free_memory(ptr1);
|
||||
free_memory(ptr2);
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user