inline single-use implementations

This commit is contained in:
dcode 2019-03-14 12:52:46 +01:00
parent 3a60638f72
commit d3ca06b7ce
7 changed files with 1195 additions and 1199 deletions

View File

@ -10,7 +10,7 @@ var startOffset: usize = (HEAP_BASE + AL_MASK) & ~AL_MASK;
var offset: usize = startOffset; var offset: usize = startOffset;
// @ts-ignore: decorator // @ts-ignore: decorator
@unsafe @global @unsafe @global @inline
function __memory_allocate(size: usize): usize { function __memory_allocate(size: usize): usize {
if (size > MAX_SIZE_32) unreachable(); if (size > MAX_SIZE_32) unreachable();
var ptr = offset; var ptr = offset;
@ -30,12 +30,12 @@ function __memory_allocate(size: usize): usize {
} }
// @ts-ignore: decorator // @ts-ignore: decorator
@unsafe @global @unsafe @global @inline
function __memory_free(ptr: usize): void { function __memory_free(ptr: usize): void {
} }
// @ts-ignore: decorator // @ts-ignore: decorator
@unsafe @global @unsafe @global @inline
function __memory_reset(): void { function __memory_reset(): void {
offset = startOffset; offset = startOffset;
} }

View File

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

View File

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

View File

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

View File

@ -141,6 +141,8 @@ export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/s
} }
} }
// @ts-ignore: decorator
@inline
export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c
if (dest === src) return; if (dest === src) return;
if (src + n <= dest || dest + n <= src) { if (src + n <= dest || dest + n <= src) {
@ -182,6 +184,8 @@ export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/
} }
} }
// @ts-ignore: decorator
@inline
export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset
// fill head and tail with minimal branching // fill head and tail with minimal branching
@ -242,6 +246,8 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st
} }
} }
// @ts-ignore: decorator
@inline
export function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c export function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c
if (vl == vr) return 0; if (vl == vr) return 0;
while (n != 0 && load<u8>(vl) == load<u8>(vr)) { while (n != 0 && load<u8>(vl) == load<u8>(vr)) {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff