This commit is contained in:
dcode
2019-03-13 09:05:02 +01:00
parent e581f254d0
commit 6f70826e45
11 changed files with 251 additions and 227 deletions

View File

@ -72,20 +72,13 @@ export class Array<T> extends ArrayBufferView {
// return LOAD<T>(this.buffer_, index);
// }
// @operator("[]=")
// private __set(index: i32, value: T): void {
// var buffer = this.buffer_;
// var capacity = buffer.byteLength >>> alignof<T>();
// if (<u32>index >= <u32>capacity) {
// const MAX_LENGTH = MAX_BLENGTH >>> alignof<T>();
// if (<u32>index >= <u32>MAX_LENGTH) throw new Error("Invalid array length");
// buffer = reallocateUnsafe(buffer, (index + 1) << alignof<T>());
// this.buffer_ = buffer;
// this.length_ = index + 1;
// }
// STORE<T>(buffer, index, value);
// if (isManaged<T>()) __gc_link(changetype<usize>(this), changetype<usize>(value)); // tslint:disable-line
// }
@operator("[]=")
private __set(index: i32, value: T): void {
this.resize(index + 1);
store<T>(this.dataStart + (<usize>index << alignof<T>()), value);
if (isManaged<T>()) LINK(changetype<usize>(value), changetype<usize>(this));
if (index >= this.length_) this.length_ = index + 1;
}
// @operator("{}=")
// private __unchecked_set(index: i32, value: T): void {

View File

@ -714,7 +714,7 @@ export class Float64Array extends ArrayBufferView {
begin: i32,
end: i32
): TArray {
var buffer = changetype<usize>(array.buffer);
var buffer = array.data;
var length = <i32>array.length;
if (begin < 0) begin = max(length + begin, 0);
else begin = min(begin, length);
@ -724,7 +724,7 @@ export class Float64Array extends ArrayBufferView {
store<usize>(out, buffer, offsetof<TArray>("buffer"));
store<usize>(out, array.dataStart + (<usize>begin << alignof<T>()) , offsetof<TArray>("dataStart"));
store<usize>(out, array.dataEnd + (<usize>(end - begin) << alignof<T>()), offsetof<TArray>("dataEnd"));
LINK(buffer, REGISTER<TArray,usize>(out)); // register first, then link
LINK(buffer, REGISTER<TArray>(out)); // register first, then link
return changetype<TArray>(out);
}

View File

@ -1,4 +1,3 @@
// this function will go away once `memory.copy` becomes an intrinsic
export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c
var w: u32, x: u32;
@ -142,7 +141,6 @@ export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/s
}
}
// this function will go away once `memory.copy` becomes an intrinsic
export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c
if (dest === src) return;
if (src + n <= dest || dest + n <= src) {
@ -184,7 +182,6 @@ export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/
}
}
// this function will go away once `memory.fill` becomes an intrinsic
export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset
// fill head and tail with minimal branching

View File

@ -1,12 +1,5 @@
import {
CharCode
} from "./string";
import {
ALLOC,
REGISTER,
FREE
} from "../runtime";
import { ALLOC, REGISTER, FREE } from "../runtime";
import { CharCode } from "./string";
@inline export const MAX_DOUBLE_LENGTH = 28;