if that's what's necessary

This commit is contained in:
dcode
2019-03-14 06:09:49 +01:00
parent a5e14a0eaa
commit 84ddd97761
25 changed files with 1845 additions and 769 deletions

View File

@ -2,13 +2,16 @@ import { HEAP_BASE, memory } from "../memory";
import { AL_MASK, MAX_SIZE_32 } from "../util/allocator";
// @ts-ignore: decorator
@lazy var startOffset: usize = (HEAP_BASE + AL_MASK) & ~AL_MASK;
@lazy
var startOffset: usize = (HEAP_BASE + AL_MASK) & ~AL_MASK;
// @ts-ignore: decorator
@lazy var offset: usize = startOffset;
@lazy
var offset: usize = startOffset;
// @ts-ignore: decorator
@unsafe @global function __memory_allocate(size: usize): usize {
@unsafe @global
function __memory_allocate(size: usize): usize {
if (size > MAX_SIZE_32) unreachable();
var ptr = offset;
var newPtr = (ptr + max<usize>(size, 1) + AL_MASK) & ~AL_MASK;
@ -27,10 +30,12 @@ import { AL_MASK, MAX_SIZE_32 } from "../util/allocator";
}
// @ts-ignore: decorator
@unsafe @global function __memory_free(ptr: usize): void {
@unsafe @global
function __memory_free(ptr: usize): void {
}
// @ts-ignore: decorator
@unsafe @global function __memory_reset(): void {
@unsafe @global
function __memory_reset(): void {
offset = startOffset;
}

View File

@ -1,15 +1,19 @@
// @ts-ignore: decorator
@unsafe declare function _malloc(size: usize): usize;
@unsafe
declare function _malloc(size: usize): usize;
// @ts-ignore: decorator
@unsafe declare function _free(ptr: usize): void;
@unsafe
declare function _free(ptr: usize): void;
// @ts-ignore: decorator
@unsafe @global function __memory_allocate(size: usize): usize {
@unsafe @global
function __memory_allocate(size: usize): usize {
return _malloc(size);
}
// @ts-ignore: decorator
@unsafe @global function __memory_free(ptr: usize): void {
@unsafe @global
function __memory_free(ptr: usize): void {
_free(ptr);
}

View File

@ -1,15 +1,19 @@
// @ts-ignore: decorator
@unsafe declare function malloc(size: usize): usize;
@unsafe
declare function malloc(size: usize): usize;
// @ts-ignore: decorator
@unsafe declare function free(ptr: usize): void;
@unsafe
declare function free(ptr: usize): void;
// @ts-ignore: decorator
@unsafe @global function __memory_allocate(size: usize): usize {
@unsafe @global
function __memory_allocate(size: usize): usize {
return malloc(size);
}
// @ts-ignore: decorator
@unsafe @global function __memory_free(ptr: usize): void {
@unsafe @global
function __memory_free(ptr: usize): void {
free(ptr);
}

View File

@ -423,7 +423,8 @@ var ROOT: Root = changetype<Root>(0);
/** Allocates a chunk of memory. */
// @ts-ignore: decorator
@unsafe @global function __memory_allocate(size: usize): usize {
@unsafe @global
function __memory_allocate(size: usize): usize {
// initialize if necessary
var root = ROOT;
if (!root) {
@ -471,8 +472,9 @@ var ROOT: Root = changetype<Root>(0);
}
/** Frees the chunk of memory at the specified address. */
// @ts-ignore
@unsafe @global function __memory_free(data: usize): void {
// @ts-ignore: decorator
@unsafe @global
function __memory_free(data: usize): void {
if (data) {
let root = ROOT;
if (root) {