mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-05-02 10:22:15 +00:00
use overloads for checked access
This commit is contained in:
parent
c147e98a55
commit
0932cf17ed
111
src/builtins.ts
111
src/builtins.ts
@ -4120,103 +4120,52 @@ export function compileBuiltinArrayGet(
|
||||
);
|
||||
}
|
||||
|
||||
var flow = compiler.currentFlow;
|
||||
var usizeType = compiler.options.usizeType;
|
||||
var nativeSizeType = compiler.options.nativeSizeType;
|
||||
var isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);
|
||||
var ptrExpr: ExpressionRef;
|
||||
var constantOffset: i32 = 0;
|
||||
|
||||
if (isUnchecked) {
|
||||
// precompute byteOffset into a constant and a dynamic part
|
||||
dynamicOffset = module.precomputeExpression(dynamicOffset);
|
||||
if (getExpressionId(dynamicOffset) == ExpressionId.Const) {
|
||||
constantOffset = getConstValueI32(dynamicOffset);
|
||||
dynamicOffset = 0;
|
||||
} else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) {
|
||||
if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) {
|
||||
let left = getBinaryLeft(dynamicOffset);
|
||||
let right = getBinaryRight(dynamicOffset);
|
||||
if (getExpressionId(left) == ExpressionId.Const) {
|
||||
constantOffset = getConstValueI32(left);
|
||||
dynamicOffset = right;
|
||||
} else if (getExpressionId(right) == ExpressionId.Const) {
|
||||
constantOffset = getConstValueI32(right);
|
||||
dynamicOffset = left;
|
||||
}
|
||||
// precompute byteOffset into a constant and a dynamic part
|
||||
dynamicOffset = module.precomputeExpression(dynamicOffset);
|
||||
if (getExpressionId(dynamicOffset) == ExpressionId.Const) {
|
||||
constantOffset = getConstValueI32(dynamicOffset);
|
||||
dynamicOffset = 0;
|
||||
} else if (getExpressionId(dynamicOffset) == ExpressionId.Binary) {
|
||||
if (getBinaryOp(dynamicOffset) == BinaryOp.AddI32) {
|
||||
let left = getBinaryLeft(dynamicOffset);
|
||||
let right = getBinaryRight(dynamicOffset);
|
||||
if (getExpressionId(left) == ExpressionId.Const) {
|
||||
constantOffset = getConstValueI32(left);
|
||||
dynamicOffset = right;
|
||||
} else if (getExpressionId(right) == ExpressionId.Const) {
|
||||
constantOffset = getConstValueI32(right);
|
||||
dynamicOffset = left;
|
||||
}
|
||||
}
|
||||
// ptr = this.dataStart
|
||||
ptrExpr = module.createLoad(usizeType.byteSize, true,
|
||||
compiler.compileExpression(
|
||||
thisExpression,
|
||||
target.type,
|
||||
ConversionKind.IMPLICIT,
|
||||
WrapMode.NONE
|
||||
),
|
||||
nativeSizeType, (<Field>dataStart).memoryOffset
|
||||
);
|
||||
// ptr = ptr + <usize>dynamicOffset
|
||||
if (dynamicOffset) {
|
||||
if (nativeSizeType == NativeType.I64) {
|
||||
ptrExpr = module.createBinary(BinaryOp.AddI64,
|
||||
ptrExpr,
|
||||
module.createUnary(UnaryOp.ExtendU32, dynamicOffset)
|
||||
);
|
||||
} else {
|
||||
ptrExpr = module.createBinary(BinaryOp.AddI32,
|
||||
ptrExpr,
|
||||
dynamicOffset
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
} else /* checked */ {
|
||||
let tempThis = flow.getTempLocal(usizeType, false);
|
||||
let tempOffset = flow.getAndFreeTempLocal(Type.i32, false);
|
||||
flow.freeTempLocal(tempThis);
|
||||
|
||||
// ptr = (tempThis = this).dataStart
|
||||
ptrExpr = module.createLoad(usizeType.byteSize, true,
|
||||
module.createTeeLocal(tempThis.index,
|
||||
compiler.compileExpression(
|
||||
thisExpression,
|
||||
target.type,
|
||||
ConversionKind.IMPLICIT,
|
||||
WrapMode.NONE
|
||||
)
|
||||
),
|
||||
nativeSizeType, (<Field>dataStart).memoryOffset
|
||||
);
|
||||
|
||||
// ptr = ptr + <usize>(tempOffset = dynamicOffset)
|
||||
}
|
||||
// ptr = this.dataStart
|
||||
ptrExpr = module.createLoad(usizeType.byteSize, true,
|
||||
compiler.compileExpression(
|
||||
thisExpression,
|
||||
target.type,
|
||||
ConversionKind.IMPLICIT,
|
||||
WrapMode.NONE
|
||||
),
|
||||
nativeSizeType, (<Field>dataStart).memoryOffset
|
||||
);
|
||||
// ptr = ptr + <usize>dynamicOffset
|
||||
if (dynamicOffset) {
|
||||
if (nativeSizeType == NativeType.I64) {
|
||||
ptrExpr = module.createBinary(BinaryOp.AddI64,
|
||||
ptrExpr,
|
||||
module.createUnary(UnaryOp.ExtendU32,
|
||||
module.createTeeLocal(tempOffset.index, dynamicOffset)
|
||||
)
|
||||
module.createUnary(UnaryOp.ExtendU32, dynamicOffset)
|
||||
);
|
||||
} else {
|
||||
ptrExpr = module.createBinary(BinaryOp.AddI32,
|
||||
ptrExpr,
|
||||
module.createTeeLocal(tempOffset.index, dynamicOffset)
|
||||
dynamicOffset
|
||||
);
|
||||
}
|
||||
|
||||
// ptr = select(ptr, -1, <u32>tempOffset < <u32>tempThis.dataLength)
|
||||
// triggers "RuntimeError: memory access out of bounds" if OOB
|
||||
ptrExpr = module.createSelect(
|
||||
ptrExpr,
|
||||
usizeType.toNativeNegOne(module),
|
||||
module.createBinary(BinaryOp.LtU32,
|
||||
module.createGetLocal(tempOffset.index, NativeType.I32),
|
||||
module.createLoad(4, false,
|
||||
module.createGetLocal(tempThis.index, nativeSizeType),
|
||||
NativeType.I32, (<Field>dataLength).memoryOffset
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
compiler.currentType = outType;
|
||||
|
@ -4722,18 +4722,20 @@ export class Compiler extends DiagnosticEmitter {
|
||||
case ElementKind.CLASS: {
|
||||
let elementExpression = resolver.currentElementExpression;
|
||||
if (elementExpression) { // indexed access
|
||||
let arrayType = this.program.determineBuiltinArrayType(<Class>target);
|
||||
if (arrayType) {
|
||||
return compileBuiltinArraySet(
|
||||
this,
|
||||
<Class>target,
|
||||
assert(this.resolver.currentThisExpression),
|
||||
elementExpression,
|
||||
valueExpression,
|
||||
contextualType
|
||||
);
|
||||
}
|
||||
let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);
|
||||
if (isUnchecked) {
|
||||
let arrayType = this.program.determineBuiltinArrayType(<Class>target);
|
||||
if (arrayType) {
|
||||
return compileBuiltinArraySet(
|
||||
this,
|
||||
<Class>target,
|
||||
assert(this.resolver.currentThisExpression),
|
||||
elementExpression,
|
||||
valueExpression,
|
||||
contextualType
|
||||
);
|
||||
}
|
||||
}
|
||||
let indexedSet = (<Class>target).lookupOverload(OperatorKind.INDEXED_SET, isUnchecked);
|
||||
if (!indexedSet) {
|
||||
let indexedGet = (<Class>target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);
|
||||
@ -4956,18 +4958,20 @@ export class Compiler extends DiagnosticEmitter {
|
||||
case ElementKind.CLASS: {
|
||||
let elementExpression = this.resolver.currentElementExpression;
|
||||
if (elementExpression) {
|
||||
let arrayType = this.program.determineBuiltinArrayType(<Class>target);
|
||||
if (arrayType) {
|
||||
return compileBuiltinArraySetWithValue(
|
||||
this,
|
||||
<Class>target,
|
||||
assert(this.resolver.currentThisExpression),
|
||||
elementExpression,
|
||||
valueWithCorrectType,
|
||||
tee
|
||||
);
|
||||
}
|
||||
let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);
|
||||
if (isUnchecked) {
|
||||
let arrayType = this.program.determineBuiltinArrayType(<Class>target);
|
||||
if (arrayType) {
|
||||
return compileBuiltinArraySetWithValue(
|
||||
this,
|
||||
<Class>target,
|
||||
assert(this.resolver.currentThisExpression),
|
||||
elementExpression,
|
||||
valueWithCorrectType,
|
||||
tee
|
||||
);
|
||||
}
|
||||
}
|
||||
let indexedGet = (<Class>target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);
|
||||
if (!indexedGet) {
|
||||
this.error(
|
||||
@ -5974,17 +5978,19 @@ export class Compiler extends DiagnosticEmitter {
|
||||
if (!target) return this.module.createUnreachable();
|
||||
switch (target.kind) {
|
||||
case ElementKind.CLASS: {
|
||||
let arrayType = this.program.determineBuiltinArrayType(<Class>target);
|
||||
if (arrayType) {
|
||||
return compileBuiltinArrayGet(
|
||||
this,
|
||||
<Class>target,
|
||||
expression.expression,
|
||||
expression.elementExpression,
|
||||
contextualType
|
||||
);
|
||||
}
|
||||
let isUnchecked = this.currentFlow.is(FlowFlags.UNCHECKED_CONTEXT);
|
||||
if (isUnchecked) {
|
||||
let arrayType = this.program.determineBuiltinArrayType(<Class>target);
|
||||
if (arrayType) {
|
||||
return compileBuiltinArrayGet(
|
||||
this,
|
||||
<Class>target,
|
||||
expression.expression,
|
||||
expression.elementExpression,
|
||||
contextualType
|
||||
);
|
||||
}
|
||||
}
|
||||
let indexedGet = (<Class>target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);
|
||||
if (!indexedGet) {
|
||||
this.error(
|
||||
|
@ -6,10 +6,9 @@ import { isArray as builtin_isArray } from "./builtins";
|
||||
|
||||
/** Ensures that the given array has _at least_ the specified capacity. */
|
||||
function ensureCapacity(array: ArrayBufferView, minCapacity: i32, alignLog2: u32): void {
|
||||
var oldData = array.data;
|
||||
var oldCapacity = oldData.byteLength >>> alignLog2;
|
||||
if (<u32>minCapacity > <u32>oldCapacity) {
|
||||
if (<u32>minCapacity > <u32>array.dataLength >>> alignLog2) {
|
||||
if (<u32>minCapacity > <u32>(MAX_BYTELENGTH >>> alignLog2)) throw new RangeError("Invalid array length");
|
||||
let oldData = array.data;
|
||||
let newByteLength = minCapacity << alignLog2;
|
||||
let newData = REALLOCATE(changetype<usize>(oldData), <usize>newByteLength); // registers on move
|
||||
if (newData !== changetype<usize>(oldData)) {
|
||||
@ -21,6 +20,11 @@ function ensureCapacity(array: ArrayBufferView, minCapacity: i32, alignLog2: u32
|
||||
}
|
||||
|
||||
export class Array<T> extends ArrayBufferView {
|
||||
|
||||
// Implementing ArrayBufferView isn't strictly necessary here but is done to allow glue code
|
||||
// to work with typed and normal arrays interchangeably. Technically, normal arrays do not need
|
||||
// `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).
|
||||
|
||||
private length_: i32;
|
||||
|
||||
static isArray<U>(value: U): bool {
|
||||
@ -59,8 +63,14 @@ export class Array<T> extends ArrayBufferView {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@operator("[]=")
|
||||
private __set(index: i32, value: T): void { // unchecked is built-in
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): T {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<T>()) throw new Error("Offset out of bounds");
|
||||
return load<T>(this.dataStart + (<usize>index << alignof<T>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: T): void {
|
||||
ensureCapacity(this, index + 1, alignof<T>());
|
||||
store<T>(this.dataStart + (<usize>index << alignof<T>()), value);
|
||||
if (isManaged<T>()) LINK(value, this);
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { ALLOCATE, REGISTER, ArrayBufferView } from "./runtime";
|
||||
import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";
|
||||
|
||||
// function clampToByte(value: i32): i32 {
|
||||
// return ~(value >> 31) & (((255 - value) >> 31) | value); // & 255
|
||||
// }
|
||||
|
||||
export class Int8Array extends ArrayBufferView {
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@ -23,6 +19,18 @@ export class Int8Array extends ArrayBufferView {
|
||||
return this.byteLength;
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): i8 {
|
||||
if (<u32>index >= <u32>this.dataLength) throw new Error("Offset out of bounds");
|
||||
return load<i8>(this.dataStart + <usize>index);
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: native<i8>): void {
|
||||
if (<u32>index >= <u32>this.dataLength) throw new Error("Offset out of bounds");
|
||||
store<i8>(this.dataStart + <usize>index, value);
|
||||
}
|
||||
|
||||
fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {
|
||||
return FILL<Int8Array, i8>(this, value, start, end);
|
||||
}
|
||||
@ -92,6 +100,18 @@ export class Uint8Array extends ArrayBufferView {
|
||||
return this.byteLength;
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): u8 {
|
||||
if (<u32>index >= <u32>this.dataLength) throw new Error("Offset out of bounds");
|
||||
return load<u8>(this.dataStart + <usize>index);
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: native<u8>): void {
|
||||
if (<u32>index >= <u32>this.dataLength) throw new Error("Offset out of bounds");
|
||||
store<u8>(this.dataStart + <usize>index, value);
|
||||
}
|
||||
|
||||
fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {
|
||||
return FILL<Uint8Array, u8>(this, value, start, end);
|
||||
}
|
||||
@ -143,18 +163,42 @@ export class Uint8Array extends ArrayBufferView {
|
||||
}
|
||||
}
|
||||
|
||||
export class Uint8ClampedArray extends Uint8Array {
|
||||
export class Uint8ClampedArray extends ArrayBufferView {
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
static readonly BYTES_PER_ELEMENT: usize = sizeof<u8>();
|
||||
|
||||
constructor(length: i32) {
|
||||
super(length, alignof<u8>());
|
||||
}
|
||||
|
||||
get buffer(): ArrayBuffer {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
get length(): i32 {
|
||||
return this.byteLength;
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): u8 {
|
||||
if (<u32>index >= <u32>this.dataLength) throw new Error("Offset out of bounds");
|
||||
return load<u8>(this.dataStart + <usize>index);
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: native<u8>): void {
|
||||
if (<u32>index >= <u32>this.dataLength) throw new Error("Offset out of bounds");
|
||||
store<u8>(this.dataStart + <usize>index, ~(<i32>value >> 31) & (((255 - value) >> 31) | value));
|
||||
}
|
||||
|
||||
fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {
|
||||
return changetype<Uint8ClampedArray>(super.fill(value, start, end)); // safe because '.fill' reuses 'this'
|
||||
return FILL<Uint8ClampedArray, u8>(this, value, start, end);
|
||||
}
|
||||
|
||||
sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR<u8>()): Uint8ClampedArray {
|
||||
return changetype<Uint8ClampedArray>(super.sort(comparator)); // safe because '.sort' reuses 'this'
|
||||
return SORT<Uint8ClampedArray, u8>(this, comparator);
|
||||
}
|
||||
|
||||
subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {
|
||||
@ -218,6 +262,18 @@ export class Int16Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<i16>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): i16 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<i16>()) throw new Error("Offset out of bounds");
|
||||
return load<i16>(this.dataStart + (<usize>index << alignof<i16>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: native<i16>): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<i16>()) throw new Error("Offset out of bounds");
|
||||
store<i16>(this.dataStart + (<usize>index << alignof<i16>()), value);
|
||||
}
|
||||
|
||||
fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {
|
||||
return FILL<Int16Array, i16>(this, value, start, end);
|
||||
}
|
||||
@ -287,6 +343,18 @@ export class Uint16Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<u16>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): u16 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<u16>()) throw new Error("Offset out of bounds");
|
||||
return load<u16>(this.dataStart + (<usize>index << alignof<u16>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: native<u16>): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<u16>()) throw new Error("Offset out of bounds");
|
||||
store<u16>(this.dataStart + (<usize>index << alignof<u16>()), value);
|
||||
}
|
||||
|
||||
fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {
|
||||
return FILL<Uint16Array, u16>(this, value, start, end);
|
||||
}
|
||||
@ -356,6 +424,18 @@ export class Int32Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<i32>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): i32 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<i32>()) throw new Error("Offset out of bounds");
|
||||
return load<i32>(this.dataStart + (<usize>index << alignof<i32>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: i32): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<i32>()) throw new Error("Offset out of bounds");
|
||||
store<i32>(this.dataStart + (<usize>index << alignof<i32>()), value);
|
||||
}
|
||||
|
||||
fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {
|
||||
return FILL<Int32Array, i32>(this, value, start, end);
|
||||
}
|
||||
@ -425,6 +505,18 @@ export class Uint32Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<u32>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): u32 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<u32>()) throw new Error("Offset out of bounds");
|
||||
return load<u32>(this.dataStart + (<usize>index << alignof<u32>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: u32): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<u32>()) throw new Error("Offset out of bounds");
|
||||
store<u32>(this.dataStart + (<usize>index << alignof<u32>()), value);
|
||||
}
|
||||
|
||||
fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {
|
||||
return FILL<Uint32Array, u32>(this, value, start, end);
|
||||
}
|
||||
@ -494,6 +586,18 @@ export class Int64Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<i64>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): i64 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<i64>()) throw new Error("Offset out of bounds");
|
||||
return load<i64>(this.dataStart + (<usize>index << alignof<i64>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: i64): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<i64>()) throw new Error("Offset out of bounds");
|
||||
store<i64>(this.dataStart + (<usize>index << alignof<i64>()), value);
|
||||
}
|
||||
|
||||
fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {
|
||||
return FILL<Int64Array, i64>(this, value, start, end);
|
||||
}
|
||||
@ -563,6 +667,18 @@ export class Uint64Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<u64>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): u64 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<u64>()) throw new Error("Offset out of bounds");
|
||||
return load<u64>(this.dataStart + (<usize>index << alignof<u64>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: u64): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<u64>()) throw new Error("Offset out of bounds");
|
||||
store<u64>(this.dataStart + (<usize>index << alignof<u64>()), value);
|
||||
}
|
||||
|
||||
fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {
|
||||
return FILL<Uint64Array, u64>(this, value, start, end);
|
||||
}
|
||||
@ -632,6 +748,18 @@ export class Float32Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<f32>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): f32 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<f32>()) throw new Error("Offset out of bounds");
|
||||
return load<f32>(this.dataStart + (<usize>index << alignof<f32>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: f32): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<f32>()) throw new Error("Offset out of bounds");
|
||||
store<f32>(this.dataStart + (<usize>index << alignof<f32>()), value);
|
||||
}
|
||||
|
||||
fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {
|
||||
return FILL<Float32Array, f32>(this, value, start, end);
|
||||
}
|
||||
@ -701,6 +829,18 @@ export class Float64Array extends ArrayBufferView {
|
||||
return this.byteLength >>> alignof<f64>();
|
||||
}
|
||||
|
||||
@operator("[]") // unchecked is built-in
|
||||
private __get(index: i32): f64 {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<f64>()) throw new Error("Offset out of bounds");
|
||||
return load<f64>(this.dataStart + (<usize>index << alignof<f64>()));
|
||||
}
|
||||
|
||||
@operator("[]=") // unchecked is built-in
|
||||
private __set(index: i32, value: f64): void {
|
||||
if (<u32>index >= <u32>this.dataLength >>> alignof<f64>()) throw new Error("Offset out of bounds");
|
||||
store<f64>(this.dataStart + (<usize>index << alignof<f64>()), value);
|
||||
}
|
||||
|
||||
fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {
|
||||
return FILL<Float64Array, f64>(this, value, start, end);
|
||||
}
|
||||
|
@ -1,8 +1,11 @@
|
||||
(module
|
||||
(type $FUNCSIG$ii (func (param i32) (result i32)))
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$i (func (result i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(memory $0 0)
|
||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||
(memory $0 1)
|
||||
(data (i32.const 8) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(global $~lib/argc (mut i32) (i32.const 0))
|
||||
@ -20,50 +23,55 @@
|
||||
(export "testRet" (func $nonNullAssertion/testFn))
|
||||
(export "testObjFn" (func $nonNullAssertion/testObjFn))
|
||||
(export "testObjRet" (func $nonNullAssertion/testObjFn))
|
||||
(func $nonNullAssertion/testVar (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testVar (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
)
|
||||
(func $nonNullAssertion/testObj (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testObj (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testArr (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
(func $~lib/array/Array<Foo>#__get (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testAll (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testFn (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testArr (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
call $~lib/array/Array<Foo>#__get
|
||||
)
|
||||
(func $nonNullAssertion/testAll (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
call $~lib/array/Array<Foo>#__get
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testFn (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
global.set $~lib/argc
|
||||
local.get $0
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $nonNullAssertion/testObjFn (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testObjFn (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
global.set $~lib/argc
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $null (; 6 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 8 ;) (type $FUNCSIG$v)
|
||||
nop
|
||||
)
|
||||
)
|
||||
|
@ -1,12 +1,19 @@
|
||||
(module
|
||||
(type $FUNCSIG$ii (func (param i32) (result i32)))
|
||||
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$i (func (result i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(memory $0 0)
|
||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||
(memory $0 1)
|
||||
(data (i32.const 8) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
|
||||
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
|
||||
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
|
||||
(global $~lib/argc (mut i32) (i32.const 0))
|
||||
(global $~lib/memory/HEAP_BASE i32 (i32.const 8))
|
||||
(global $~lib/memory/HEAP_BASE i32 (i32.const 44))
|
||||
(export "memory" (memory $0))
|
||||
(export "table" (table $0))
|
||||
(export "testVar" (func $nonNullAssertion/testVar))
|
||||
@ -21,102 +28,92 @@
|
||||
(export "testRet" (func $nonNullAssertion/testRet))
|
||||
(export "testObjFn" (func $nonNullAssertion/testObjFn))
|
||||
(export "testObjRet" (func $nonNullAssertion/testObjRet))
|
||||
(func $nonNullAssertion/testVar (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testVar (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
)
|
||||
(func $nonNullAssertion/testObj (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testObj (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testProp (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testProp (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testArr (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $~lib/array/Array<Foo>#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testElem (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $nonNullAssertion/testArr (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
call $~lib/array/Array<Foo>#__get
|
||||
)
|
||||
(func $~lib/array/Array<Foo | null>#__get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testAll (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $nonNullAssertion/testElem (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.load
|
||||
call $~lib/array/Array<Foo | null>#__get
|
||||
)
|
||||
(func $nonNullAssertion/testAll2 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $nonNullAssertion/testAll (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<Foo | null>#__get
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testFn (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testAll2 (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.const 0
|
||||
call $~lib/array/Array<Foo | null>#__get
|
||||
i32.load
|
||||
)
|
||||
(func $nonNullAssertion/testFn (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
global.set $~lib/argc
|
||||
local.get $0
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $nonNullAssertion/testFn2 (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testFn2 (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
local.get $0
|
||||
local.set $1
|
||||
@ -125,26 +122,26 @@
|
||||
local.get $1
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $nonNullAssertion/testRet (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testRet (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
global.set $~lib/argc
|
||||
local.get $0
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $nonNullAssertion/testObjFn (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testObjFn (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
global.set $~lib/argc
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $nonNullAssertion/testObjRet (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $nonNullAssertion/testObjRet (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 0
|
||||
global.set $~lib/argc
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
call_indirect (type $FUNCSIG$i)
|
||||
)
|
||||
(func $null (; 12 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 15 ;) (type $FUNCSIG$v)
|
||||
)
|
||||
)
|
||||
|
@ -1,13 +1,15 @@
|
||||
(module
|
||||
(type $FUNCSIG$ii (func (param i32) (result i32)))
|
||||
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
|
||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||
(memory $0 1)
|
||||
(data (i32.const 8) "\01")
|
||||
(data (i32.const 16) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s")
|
||||
(data (i32.const 56) "\01\00\00\00\08\00\00\00n\00u\00l\00l")
|
||||
(data (i32.const 8) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(data (i32.const 48) "\01")
|
||||
(data (i32.const 56) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s")
|
||||
(data (i32.const 96) "\01\00\00\00\08\00\00\00n\00u\00l\00l")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(export "memory" (memory $0))
|
||||
@ -17,48 +19,50 @@
|
||||
(export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall))
|
||||
(export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess))
|
||||
(export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall))
|
||||
(func $std/array-access/i32ArrayArrayElementAccess (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
(func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
local.tee $0
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
)
|
||||
(func $std/array-access/stringArrayPropertyAccess (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $std/array-access/i32ArrayArrayElementAccess (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
i32.const 1
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
)
|
||||
(func $std/array-access/stringArrayPropertyAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 0
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
i32.const 8
|
||||
i32.sub
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
i32.shr_u
|
||||
)
|
||||
(func $~lib/util/string/compareImpl (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(func $~lib/util/string/compareImpl (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
i32.const 16
|
||||
i32.const 56
|
||||
local.set $3
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -97,7 +101,7 @@
|
||||
end
|
||||
local.get $4
|
||||
)
|
||||
(func $~lib/string/String#startsWith (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/string/String#startsWith (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
@ -105,13 +109,13 @@
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 64
|
||||
i32.const 161
|
||||
i32.const 4
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 12
|
||||
i32.const 52
|
||||
i32.load
|
||||
i32.const 1
|
||||
i32.shr_u
|
||||
@ -144,69 +148,33 @@
|
||||
call $~lib/util/string/compareImpl
|
||||
i32.eqz
|
||||
)
|
||||
(func $std/array-access/stringArrayMethodCall (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $std/array-access/stringArrayMethodCall (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
call $~lib/string/String#startsWith
|
||||
)
|
||||
(func $std/array-access/stringArrayArrayPropertyAccess (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $std/array-access/stringArrayArrayPropertyAccess (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
i32.const 1
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
i32.const 8
|
||||
i32.sub
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
i32.shr_u
|
||||
)
|
||||
(func $std/array-access/stringArrayArrayMethodCall (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $std/array-access/stringArrayArrayMethodCall (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
i32.const 1
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
call $~lib/string/String#startsWith
|
||||
)
|
||||
(func $null (; 8 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 9 ;) (type $FUNCSIG$v)
|
||||
nop
|
||||
)
|
||||
)
|
||||
|
@ -1,20 +1,22 @@
|
||||
(module
|
||||
(type $FUNCSIG$ii (func (param i32) (result i32)))
|
||||
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
|
||||
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
|
||||
(type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||
(memory $0 1)
|
||||
(data (i32.const 8) "\01\00\00\00\00\00\00\00")
|
||||
(data (i32.const 16) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00")
|
||||
(data (i32.const 56) "\01\00\00\00\08\00\00\00n\00u\00l\00l\00")
|
||||
(data (i32.const 8) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
|
||||
(data (i32.const 48) "\01\00\00\00\00\00\00\00")
|
||||
(data (i32.const 56) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00")
|
||||
(data (i32.const 96) "\01\00\00\00\08\00\00\00n\00u\00l\00l\00")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
|
||||
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
|
||||
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
|
||||
(global $~lib/memory/HEAP_BASE i32 (i32.const 72))
|
||||
(global $~lib/memory/HEAP_BASE i32 (i32.const 112))
|
||||
(export "memory" (memory $0))
|
||||
(export "table" (table $0))
|
||||
(export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess))
|
||||
@ -22,40 +24,83 @@
|
||||
(export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall))
|
||||
(export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess))
|
||||
(export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall))
|
||||
(func $std/array-access/i32ArrayArrayElementAccess (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
)
|
||||
(func $~lib/string/String#get:length (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<i32>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $std/array-access/i32ArrayArrayElementAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.const 0
|
||||
call $~lib/array/Array<Array<i32>>#__get
|
||||
i32.const 1
|
||||
call $~lib/array/Array<i32>#__get
|
||||
)
|
||||
(func $~lib/array/Array<String>#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
global.get $~lib/runtime/HEADER_SIZE
|
||||
i32.sub
|
||||
@ -63,27 +108,13 @@
|
||||
i32.const 1
|
||||
i32.shr_u
|
||||
)
|
||||
(func $std/array-access/stringArrayPropertyAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $std/array-access/stringArrayPropertyAccess (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
call $~lib/string/String#get:length
|
||||
)
|
||||
(func $~lib/util/string/compareImpl (; 4 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
|
||||
(func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
|
||||
(local $5 i32)
|
||||
(local $6 i32)
|
||||
(local $7 i32)
|
||||
@ -136,7 +167,7 @@
|
||||
end
|
||||
local.get $5
|
||||
)
|
||||
(func $~lib/string/String#startsWith (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(func $~lib/string/String#startsWith (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
@ -149,7 +180,7 @@
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 64
|
||||
i32.const 161
|
||||
i32.const 4
|
||||
call $~lib/env/abort
|
||||
@ -159,7 +190,7 @@
|
||||
i32.const 0
|
||||
i32.eq
|
||||
if
|
||||
i32.const 64
|
||||
i32.const 104
|
||||
local.set $1
|
||||
end
|
||||
local.get $2
|
||||
@ -203,98 +234,55 @@
|
||||
call $~lib/util/string/compareImpl
|
||||
i32.eqz
|
||||
)
|
||||
(func $std/array-access/stringArrayMethodCall (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $std/array-access/stringArrayMethodCall (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 16
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 56
|
||||
i32.const 0
|
||||
call $~lib/string/String#startsWith
|
||||
)
|
||||
(func $std/array-access/stringArrayArrayPropertyAccess (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $~lib/array/Array<Array<String>>#__get (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 16
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $std/array-access/stringArrayArrayPropertyAccess (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
call $~lib/array/Array<Array<String>>#__get
|
||||
i32.const 1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
call $~lib/string/String#get:length
|
||||
)
|
||||
(func $std/array-access/stringArrayArrayMethodCall (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(func $std/array-access/stringArrayArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
local.tee $1
|
||||
i32.load offset=4
|
||||
call $~lib/array/Array<Array<String>>#__get
|
||||
i32.const 1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 16
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 56
|
||||
i32.const 0
|
||||
call $~lib/string/String#startsWith
|
||||
)
|
||||
(func $null (; 9 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 13 ;) (type $FUNCSIG$v)
|
||||
)
|
||||
)
|
||||
|
@ -12,16 +12,16 @@
|
||||
(data (i32.const 8) "\01\00\00\00\03\00\00\00\00\01\02")
|
||||
(data (i32.const 24) "\02\00\00\00\10\00\00\00\10\00\00\00\10\00\00\00\03\00\00\00\03")
|
||||
(data (i32.const 48) "\03\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
|
||||
(data (i32.const 96) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02")
|
||||
(data (i32.const 120) "\04\00\00\00\10\00\00\00h\00\00\00h\00\00\00\0c\00\00\00\03")
|
||||
(data (i32.const 144) "\01")
|
||||
(data (i32.const 152) "\04\00\00\00\10\00\00\00\98\00\00\00\98")
|
||||
(data (i32.const 176) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
||||
(data (i32.const 216) "\03\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
|
||||
(data (i32.const 264) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(data (i32.const 96) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(data (i32.const 136) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02")
|
||||
(data (i32.const 160) "\04\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\0c\00\00\00\03")
|
||||
(data (i32.const 184) "\01")
|
||||
(data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0")
|
||||
(data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
||||
(data (i32.const 256) "\03\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 160))
|
||||
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200))
|
||||
(global $std/array-literal/i (mut i32) (i32.const 0))
|
||||
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
|
||||
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
|
||||
@ -32,7 +32,49 @@
|
||||
(export "memory" (memory $0))
|
||||
(export "table" (table $0))
|
||||
(start $start)
|
||||
(func $~lib/memory/memory.allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<i8>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 104
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
i32.add
|
||||
i32.load8_s
|
||||
)
|
||||
(func $~lib/array/Array<i32>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 104
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
@ -94,7 +136,7 @@
|
||||
global.set $~lib/allocator/arena/offset
|
||||
local.get $1
|
||||
)
|
||||
(func $~lib/runtime/doAllocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
i32.const 1
|
||||
i32.const 32
|
||||
@ -115,7 +157,7 @@
|
||||
i32.const 8
|
||||
i32.add
|
||||
)
|
||||
(func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
block $~lib/util/memory/memset|inlined.0
|
||||
local.get $1
|
||||
@ -326,13 +368,13 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/assertUnregistered (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||
(func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||
local.get $0
|
||||
i32.const 300
|
||||
i32.const 304
|
||||
i32.le_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 191
|
||||
i32.const 2
|
||||
call $~lib/env/abort
|
||||
@ -346,14 +388,14 @@
|
||||
i32.ne
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 192
|
||||
i32.const 2
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/doRegister (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/runtime/doRegister (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $0
|
||||
call $~lib/runtime/assertUnregistered
|
||||
local.get $0
|
||||
@ -363,14 +405,14 @@
|
||||
i32.store
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
local.get $0
|
||||
i32.const 1073741816
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 224
|
||||
i32.const 264
|
||||
i32.const 24
|
||||
i32.const 43
|
||||
call $~lib/env/abort
|
||||
@ -385,7 +427,7 @@
|
||||
i32.const 1
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $~lib/runtime/ArrayBufferView#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/runtime/ArrayBufferView#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
i32.const 3
|
||||
i32.const 1073741816
|
||||
@ -394,7 +436,7 @@
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 226
|
||||
i32.const 57
|
||||
call $~lib/env/abort
|
||||
@ -435,7 +477,7 @@
|
||||
i32.store offset=8
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/util/memory/memcpy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/util/memory/memcpy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
@ -1332,7 +1374,7 @@
|
||||
i32.store8
|
||||
end
|
||||
)
|
||||
(func $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
block $~lib/util/memory/memmove|inlined.0
|
||||
@ -1526,7 +1568,7 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/doReallocate (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/runtime/doReallocate (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
@ -1550,7 +1592,7 @@
|
||||
i32.shl
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.const 300
|
||||
i32.const 304
|
||||
i32.gt_u
|
||||
select
|
||||
i32.const 1
|
||||
@ -1590,11 +1632,11 @@
|
||||
i32.eq
|
||||
if
|
||||
local.get $0
|
||||
i32.const 300
|
||||
i32.const 304
|
||||
i32.le_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 100
|
||||
i32.const 8
|
||||
call $~lib/env/abort
|
||||
@ -1620,15 +1662,11 @@
|
||||
i32.store offset=4
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/ensureCapacity (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/ensureCapacity (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load
|
||||
local.tee $3
|
||||
i32.const 8
|
||||
i32.sub
|
||||
i32.load offset=4
|
||||
i32.load offset=8
|
||||
local.get $2
|
||||
i32.shr_u
|
||||
i32.gt_u
|
||||
@ -1640,20 +1678,23 @@
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 272
|
||||
i32.const 12
|
||||
i32.const 104
|
||||
i32.const 10
|
||||
i32.const 64
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $3
|
||||
local.get $3
|
||||
local.get $0
|
||||
i32.load
|
||||
local.tee $3
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
call $~lib/runtime/doReallocate
|
||||
local.tee $1
|
||||
local.set $1
|
||||
local.get $1
|
||||
local.get $3
|
||||
i32.ne
|
||||
if
|
||||
local.get $0
|
||||
@ -1668,7 +1709,7 @@
|
||||
i32.store offset=8
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<i8>#__set (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/Array<i8>#__set (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -1693,7 +1734,7 @@
|
||||
i32.store offset=12
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<i32>#__set (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/Array<i32>#__set (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -1720,19 +1761,19 @@
|
||||
i32.store offset=12
|
||||
end
|
||||
)
|
||||
(func $std/array-literal/Ref#constructor (; 14 ;) (type $FUNCSIG$i) (result i32)
|
||||
(func $std/array-literal/Ref#constructor (; 16 ;) (type $FUNCSIG$i) (result i32)
|
||||
i32.const 0
|
||||
call $~lib/runtime/doAllocate
|
||||
i32.const 6
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $std/array-literal/RefWithCtor#constructor (; 15 ;) (type $FUNCSIG$i) (result i32)
|
||||
(func $std/array-literal/RefWithCtor#constructor (; 17 ;) (type $FUNCSIG$i) (result i32)
|
||||
i32.const 0
|
||||
call $~lib/runtime/doAllocate
|
||||
i32.const 8
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $start:std/array-literal (; 16 ;) (type $FUNCSIG$v)
|
||||
(func $start:std/array-literal (; 18 ;) (type $FUNCSIG$v)
|
||||
(local $0 i32)
|
||||
i32.const 44
|
||||
i32.load
|
||||
@ -1746,15 +1787,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const -1
|
||||
i32.const 32
|
||||
i32.const 0
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 56
|
||||
@ -1763,17 +1798,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const 32
|
||||
i32.const 1
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 1
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 1
|
||||
i32.ne
|
||||
if
|
||||
@ -1784,17 +1811,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const 32
|
||||
i32.const 2
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 2
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 2
|
||||
i32.ne
|
||||
if
|
||||
@ -1805,7 +1824,7 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 140
|
||||
i32.const 180
|
||||
i32.load
|
||||
i32.const 3
|
||||
i32.ne
|
||||
@ -1817,15 +1836,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 132
|
||||
i32.load
|
||||
i32.const -1
|
||||
i32.const 168
|
||||
i32.const 0
|
||||
i32.const 136
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 56
|
||||
@ -1834,17 +1847,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 132
|
||||
i32.load
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
i32.const 136
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 168
|
||||
i32.const 1
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 1
|
||||
i32.ne
|
||||
if
|
||||
@ -1855,17 +1860,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 132
|
||||
i32.load
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
i32.const 136
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 168
|
||||
i32.const 2
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 2
|
||||
i32.ne
|
||||
if
|
||||
@ -1937,15 +1934,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 56
|
||||
@ -1955,17 +1945,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 1
|
||||
i32.ne
|
||||
if
|
||||
@ -1977,17 +1958,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 2
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 2
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 2
|
||||
i32.ne
|
||||
if
|
||||
@ -2047,15 +2019,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 56
|
||||
@ -2065,17 +2030,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 1
|
||||
i32.ne
|
||||
if
|
||||
@ -2087,17 +2043,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 2
|
||||
i32.ne
|
||||
if
|
||||
@ -2185,10 +2132,10 @@
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $start (; 17 ;) (type $FUNCSIG$v)
|
||||
(func $start (; 19 ;) (type $FUNCSIG$v)
|
||||
call $start:std/array-literal
|
||||
)
|
||||
(func $null (; 18 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 20 ;) (type $FUNCSIG$v)
|
||||
nop
|
||||
)
|
||||
)
|
||||
|
@ -11,21 +11,21 @@
|
||||
(data (i32.const 8) "\01\00\00\00\03\00\00\00\00\01\02")
|
||||
(data (i32.const 24) "\02\00\00\00\10\00\00\00\10\00\00\00\10\00\00\00\03\00\00\00\03\00\00\00")
|
||||
(data (i32.const 48) "\03\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00")
|
||||
(data (i32.const 96) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00")
|
||||
(data (i32.const 120) "\04\00\00\00\10\00\00\00h\00\00\00h\00\00\00\0c\00\00\00\03\00\00\00")
|
||||
(data (i32.const 144) "\01\00\00\00\00\00\00\00")
|
||||
(data (i32.const 152) "\04\00\00\00\10\00\00\00\98\00\00\00\98\00\00\00\00\00\00\00\00\00\00\00")
|
||||
(data (i32.const 176) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
|
||||
(data (i32.const 216) "\03\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00")
|
||||
(data (i32.const 264) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
|
||||
(data (i32.const 96) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
|
||||
(data (i32.const 136) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00")
|
||||
(data (i32.const 160) "\04\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\0c\00\00\00\03\00\00\00")
|
||||
(data (i32.const 184) "\01\00\00\00\00\00\00\00")
|
||||
(data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0\00\00\00\00\00\00\00\00\00\00\00")
|
||||
(data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00")
|
||||
(data (i32.const 256) "\03\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(global $std/array-literal/staticArrayI8 i32 (i32.const 32))
|
||||
(global $~lib/runtime/GC_IMPLEMENTED i32 (i32.const 0))
|
||||
(global $~lib/runtime/HEADER_SIZE i32 (i32.const 8))
|
||||
(global $~lib/runtime/HEADER_MAGIC i32 (i32.const -1520547049))
|
||||
(global $std/array-literal/staticArrayI32 i32 (i32.const 128))
|
||||
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 160))
|
||||
(global $std/array-literal/staticArrayI32 i32 (i32.const 168))
|
||||
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200))
|
||||
(global $std/array-literal/i (mut i32) (i32.const 0))
|
||||
(global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816))
|
||||
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
|
||||
@ -35,7 +35,7 @@
|
||||
(global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0))
|
||||
(global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0))
|
||||
(global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0))
|
||||
(global $~lib/memory/HEAP_BASE i32 (i32.const 300))
|
||||
(global $~lib/memory/HEAP_BASE i32 (i32.const 304))
|
||||
(export "memory" (memory $0))
|
||||
(export "table" (table $0))
|
||||
(start $start)
|
||||
@ -43,11 +43,57 @@
|
||||
local.get $0
|
||||
i32.load offset=12
|
||||
)
|
||||
(func $~lib/array/Array<i32>#get:length (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<i8>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 0
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 104
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 0
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load8_s
|
||||
)
|
||||
(func $~lib/array/Array<i32>#get:length (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=12
|
||||
)
|
||||
(func $~lib/runtime/ADJUSTOBLOCK (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<i32>#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 104
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $~lib/runtime/ADJUSTOBLOCK (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
i32.const 1
|
||||
i32.const 32
|
||||
local.get $0
|
||||
@ -59,7 +105,7 @@
|
||||
i32.sub
|
||||
i32.shl
|
||||
)
|
||||
(func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/memory/memory.allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
@ -144,7 +190,7 @@
|
||||
end
|
||||
return
|
||||
)
|
||||
(func $~lib/runtime/doAllocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/runtime/doAllocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
local.get $0
|
||||
call $~lib/runtime/ADJUSTOBLOCK
|
||||
@ -160,7 +206,7 @@
|
||||
global.get $~lib/runtime/HEADER_SIZE
|
||||
i32.add
|
||||
)
|
||||
(func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i64)
|
||||
@ -416,14 +462,14 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/assertUnregistered (; 7 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||
(func $~lib/runtime/assertUnregistered (; 9 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||
local.get $0
|
||||
global.get $~lib/memory/HEAP_BASE
|
||||
i32.gt_u
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 191
|
||||
i32.const 2
|
||||
call $~lib/env/abort
|
||||
@ -438,14 +484,14 @@
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 192
|
||||
i32.const 2
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/doRegister (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/runtime/doRegister (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $0
|
||||
call $~lib/runtime/assertUnregistered
|
||||
local.get $0
|
||||
@ -455,7 +501,7 @@
|
||||
i32.store
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
local.get $1
|
||||
@ -463,7 +509,7 @@
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 224
|
||||
i32.const 264
|
||||
i32.const 24
|
||||
i32.const 43
|
||||
call $~lib/env/abort
|
||||
@ -488,11 +534,11 @@
|
||||
call $~lib/runtime/doRegister
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/ALLOCATE (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/runtime/ALLOCATE (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
call $~lib/runtime/doAllocate
|
||||
)
|
||||
(func $~lib/runtime/ArrayBufferView#constructor (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(func $~lib/runtime/ArrayBufferView#constructor (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $1
|
||||
@ -502,7 +548,7 @@
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 226
|
||||
i32.const 57
|
||||
call $~lib/env/abort
|
||||
@ -550,7 +596,7 @@
|
||||
i32.store offset=8
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/Array<i8>#constructor (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/array/Array<i8>#constructor (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
if (result i32)
|
||||
@ -575,13 +621,7 @@
|
||||
i32.store offset=12
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
global.get $~lib/runtime/HEADER_SIZE
|
||||
i32.sub
|
||||
i32.load offset=4
|
||||
)
|
||||
(func $~lib/util/memory/memcpy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
@ -1782,7 +1822,7 @@
|
||||
i32.store8
|
||||
end
|
||||
)
|
||||
(func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
block $~lib/util/memory/memmove|inlined.0
|
||||
local.get $0
|
||||
@ -2011,12 +2051,12 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/memory/memory.free (; 16 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||
(func $~lib/memory/memory.free (; 17 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||
(local $1 i32)
|
||||
local.get $0
|
||||
local.set $1
|
||||
)
|
||||
(func $~lib/runtime/doReallocate (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/runtime/doReallocate (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
@ -2080,7 +2120,7 @@
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 184
|
||||
i32.const 224
|
||||
i32.const 100
|
||||
i32.const 8
|
||||
call $~lib/env/abort
|
||||
@ -2113,22 +2153,16 @@
|
||||
i32.store offset=4
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/ensureCapacity (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/ensureCapacity (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
(local $6 i32)
|
||||
(local $7 i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load
|
||||
local.set $3
|
||||
local.get $3
|
||||
call $~lib/arraybuffer/ArrayBuffer#get:byteLength
|
||||
i32.load offset=8
|
||||
local.get $2
|
||||
i32.shr_u
|
||||
local.set $4
|
||||
local.get $1
|
||||
local.get $4
|
||||
i32.gt_u
|
||||
if
|
||||
local.get $1
|
||||
@ -2138,43 +2172,46 @@
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 272
|
||||
i32.const 12
|
||||
i32.const 104
|
||||
i32.const 10
|
||||
i32.const 64
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load
|
||||
local.set $3
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.shl
|
||||
local.set $5
|
||||
local.set $4
|
||||
block $~lib/runtime/REALLOCATE|inlined.0 (result i32)
|
||||
local.get $3
|
||||
local.set $5
|
||||
local.get $4
|
||||
local.set $6
|
||||
local.get $5
|
||||
local.set $7
|
||||
local.get $6
|
||||
local.get $7
|
||||
call $~lib/runtime/doReallocate
|
||||
end
|
||||
local.set $7
|
||||
local.get $7
|
||||
local.set $6
|
||||
local.get $6
|
||||
local.get $3
|
||||
i32.ne
|
||||
if
|
||||
local.get $0
|
||||
local.get $7
|
||||
local.get $6
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $7
|
||||
local.get $6
|
||||
i32.store offset=4
|
||||
end
|
||||
local.get $0
|
||||
local.get $5
|
||||
local.get $4
|
||||
i32.store offset=8
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<i8>#__set (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/Array<i8>#__set (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -2201,7 +2238,7 @@
|
||||
i32.store offset=12
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<i32>#constructor (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/array/Array<i32>#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
if (result i32)
|
||||
@ -2226,7 +2263,7 @@
|
||||
i32.store offset=12
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/Array<i32>#__set (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/Array<i32>#__set (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -2253,7 +2290,7 @@
|
||||
i32.store offset=12
|
||||
end
|
||||
)
|
||||
(func $std/array-literal/Ref#constructor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $std/array-literal/Ref#constructor (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
local.get $0
|
||||
i32.eqz
|
||||
@ -2270,7 +2307,7 @@
|
||||
end
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/Array<Ref>#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/array/Array<Ref>#constructor (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
if (result i32)
|
||||
@ -2295,7 +2332,7 @@
|
||||
i32.store offset=12
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/Array<Ref>#__set (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/Array<Ref>#__set (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -2322,11 +2359,11 @@
|
||||
i32.store offset=12
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<Ref>#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<Ref>#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=12
|
||||
)
|
||||
(func $std/array-literal/RefWithCtor#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $std/array-literal/RefWithCtor#constructor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
local.get $0
|
||||
i32.eqz
|
||||
@ -2343,7 +2380,7 @@
|
||||
end
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/Array<RefWithCtor>#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/array/Array<RefWithCtor>#constructor (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
if (result i32)
|
||||
@ -2368,7 +2405,7 @@
|
||||
i32.store offset=12
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/Array<RefWithCtor>#__set (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/array/Array<RefWithCtor>#__set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.const 1
|
||||
@ -2395,17 +2432,15 @@
|
||||
i32.store offset=12
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<RefWithCtor>#get:length (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<RefWithCtor>#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.load offset=12
|
||||
)
|
||||
(func $start:std/array-literal (; 30 ;) (type $FUNCSIG$v)
|
||||
(func $start:std/array-literal (; 31 ;) (type $FUNCSIG$v)
|
||||
(local $0 i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
global.get $std/array-literal/staticArrayI8
|
||||
call $~lib/array/Array<i8>#get:length
|
||||
i32.const 3
|
||||
@ -2420,18 +2455,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/staticArrayI8
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
local.tee $1
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 0
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2444,18 +2469,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/staticArrayI8
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
local.tee $1
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 1
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2468,18 +2483,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/staticArrayI8
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 2
|
||||
local.tee $1
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 2
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2505,20 +2510,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/staticArrayI32
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $1
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 0
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2531,20 +2524,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/staticArrayI32
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $1
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 1
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2557,20 +2538,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/staticArrayI32
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 2
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $1
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 2
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2609,12 +2578,12 @@
|
||||
i32.const 0
|
||||
i32.const 3
|
||||
call $~lib/array/Array<i8>#constructor
|
||||
local.set $2
|
||||
local.get $2
|
||||
local.set $0
|
||||
local.get $0
|
||||
i32.const 0
|
||||
global.get $std/array-literal/i
|
||||
call $~lib/array/Array<i8>#__set
|
||||
local.get $2
|
||||
local.get $0
|
||||
i32.const 1
|
||||
block (result i32)
|
||||
global.get $std/array-literal/i
|
||||
@ -2624,7 +2593,7 @@
|
||||
global.get $std/array-literal/i
|
||||
end
|
||||
call $~lib/array/Array<i8>#__set
|
||||
local.get $2
|
||||
local.get $0
|
||||
i32.const 2
|
||||
block (result i32)
|
||||
global.get $std/array-literal/i
|
||||
@ -2634,7 +2603,7 @@
|
||||
global.get $std/array-literal/i
|
||||
end
|
||||
call $~lib/array/Array<i8>#__set
|
||||
local.get $2
|
||||
local.get $0
|
||||
end
|
||||
global.set $std/array-literal/dynamicArrayI8
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
@ -2651,18 +2620,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
local.tee $2
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
local.tee $0
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 0
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2675,18 +2634,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
local.tee $2
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
local.tee $0
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 1
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2699,18 +2648,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI8
|
||||
local.tee $2
|
||||
i32.load offset=4
|
||||
i32.const 2
|
||||
local.tee $0
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load8_s
|
||||
call $~lib/array/Array<i8>#__get
|
||||
i32.const 2
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2728,12 +2667,12 @@
|
||||
i32.const 0
|
||||
i32.const 3
|
||||
call $~lib/array/Array<i32>#constructor
|
||||
local.set $3
|
||||
local.get $3
|
||||
local.set $1
|
||||
local.get $1
|
||||
i32.const 0
|
||||
global.get $std/array-literal/i
|
||||
call $~lib/array/Array<i32>#__set
|
||||
local.get $3
|
||||
local.get $1
|
||||
i32.const 1
|
||||
block (result i32)
|
||||
global.get $std/array-literal/i
|
||||
@ -2743,7 +2682,7 @@
|
||||
global.get $std/array-literal/i
|
||||
end
|
||||
call $~lib/array/Array<i32>#__set
|
||||
local.get $3
|
||||
local.get $1
|
||||
i32.const 2
|
||||
block (result i32)
|
||||
global.get $std/array-literal/i
|
||||
@ -2753,7 +2692,7 @@
|
||||
global.get $std/array-literal/i
|
||||
end
|
||||
call $~lib/array/Array<i32>#__set
|
||||
local.get $3
|
||||
local.get $1
|
||||
end
|
||||
global.set $std/array-literal/dynamicArrayI32
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
@ -2770,20 +2709,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
local.tee $3
|
||||
i32.load offset=4
|
||||
i32.const 0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 0
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2796,20 +2723,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
local.tee $3
|
||||
i32.load offset=4
|
||||
i32.const 1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 1
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2822,20 +2737,8 @@
|
||||
unreachable
|
||||
end
|
||||
global.get $std/array-literal/dynamicArrayI32
|
||||
local.tee $3
|
||||
i32.load offset=4
|
||||
i32.const 2
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $2
|
||||
i32.add
|
||||
i32.const -1
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 2
|
||||
i32.eq
|
||||
i32.eqz
|
||||
@ -2851,23 +2754,23 @@
|
||||
i32.const 0
|
||||
i32.const 3
|
||||
call $~lib/array/Array<Ref>#constructor
|
||||
local.set $4
|
||||
local.get $4
|
||||
local.set $2
|
||||
local.get $2
|
||||
i32.const 0
|
||||
i32.const 0
|
||||
call $std/array-literal/Ref#constructor
|
||||
call $~lib/array/Array<Ref>#__set
|
||||
local.get $4
|
||||
local.get $2
|
||||
i32.const 1
|
||||
i32.const 0
|
||||
call $std/array-literal/Ref#constructor
|
||||
call $~lib/array/Array<Ref>#__set
|
||||
local.get $4
|
||||
local.get $2
|
||||
i32.const 2
|
||||
i32.const 0
|
||||
call $std/array-literal/Ref#constructor
|
||||
call $~lib/array/Array<Ref>#__set
|
||||
local.get $4
|
||||
local.get $2
|
||||
end
|
||||
global.set $std/array-literal/dynamicArrayRef
|
||||
global.get $std/array-literal/dynamicArrayRef
|
||||
@ -2887,23 +2790,23 @@
|
||||
i32.const 0
|
||||
i32.const 3
|
||||
call $~lib/array/Array<RefWithCtor>#constructor
|
||||
local.set $5
|
||||
local.get $5
|
||||
local.set $3
|
||||
local.get $3
|
||||
i32.const 0
|
||||
i32.const 0
|
||||
call $std/array-literal/RefWithCtor#constructor
|
||||
call $~lib/array/Array<RefWithCtor>#__set
|
||||
local.get $5
|
||||
local.get $3
|
||||
i32.const 1
|
||||
i32.const 0
|
||||
call $std/array-literal/RefWithCtor#constructor
|
||||
call $~lib/array/Array<RefWithCtor>#__set
|
||||
local.get $5
|
||||
local.get $3
|
||||
i32.const 2
|
||||
i32.const 0
|
||||
call $std/array-literal/RefWithCtor#constructor
|
||||
call $~lib/array/Array<RefWithCtor>#__set
|
||||
local.get $5
|
||||
local.get $3
|
||||
end
|
||||
global.set $std/array-literal/dynamicArrayRefWithCtor
|
||||
global.get $std/array-literal/dynamicArrayRefWithCtor
|
||||
@ -2920,9 +2823,9 @@
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $start (; 31 ;) (type $FUNCSIG$v)
|
||||
(func $start (; 32 ;) (type $FUNCSIG$v)
|
||||
call $start:std/array-literal
|
||||
)
|
||||
(func $null (; 32 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 33 ;) (type $FUNCSIG$v)
|
||||
)
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,12 @@
|
||||
(module
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(type $FUNCSIG$ii (func (param i32) (result i32)))
|
||||
(type $FUNCSIG$vii (func (param i32 i32)))
|
||||
(type $FUNCSIG$ji (func (param i32) (result i64)))
|
||||
(type $FUNCSIG$fi (func (param i32) (result f32)))
|
||||
(type $FUNCSIG$di (func (param i32) (result f64)))
|
||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||
(memory $0 1)
|
||||
(data (i32.const 8) "\01\00\00\00\08\00\00\00\01\00\00\00\02")
|
||||
@ -13,12 +19,488 @@
|
||||
(data (i32.const 150) "\f4?\00\00\00\00\00\00\02@")
|
||||
(data (i32.const 160) "\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\10\00\00\00\02")
|
||||
(data (i32.const 184) "\06\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(data (i32.const 232) "\06\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(data (i32.const 272) "\06\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(export "memory" (memory $0))
|
||||
(export "table" (table $0))
|
||||
(start $start)
|
||||
(func $start:std/static-array (; 1 ;) (type $FUNCSIG$v)
|
||||
(func $~lib/array/Array<i32>#__get (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 240
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
local.get $0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
block $~lib/util/memory/memset|inlined.0
|
||||
local.get $1
|
||||
i32.eqz
|
||||
br_if $~lib/util/memory/memset|inlined.0
|
||||
local.get $0
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.add
|
||||
i32.const 1
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.le_u
|
||||
br_if $~lib/util/memory/memset|inlined.0
|
||||
local.get $0
|
||||
i32.const 1
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $0
|
||||
i32.const 2
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.add
|
||||
local.tee $2
|
||||
i32.const 2
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $2
|
||||
i32.const 3
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $1
|
||||
i32.const 6
|
||||
i32.le_u
|
||||
br_if $~lib/util/memory/memset|inlined.0
|
||||
local.get $0
|
||||
i32.const 3
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.add
|
||||
i32.const 4
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store8
|
||||
local.get $1
|
||||
i32.const 8
|
||||
i32.le_u
|
||||
br_if $~lib/util/memory/memset|inlined.0
|
||||
local.get $1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.sub
|
||||
i32.const 3
|
||||
i32.and
|
||||
local.tee $2
|
||||
i32.sub
|
||||
local.set $1
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.add
|
||||
local.tee $0
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $1
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $1
|
||||
local.get $0
|
||||
i32.add
|
||||
i32.const 4
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $1
|
||||
i32.const 8
|
||||
i32.le_u
|
||||
br_if $~lib/util/memory/memset|inlined.0
|
||||
local.get $0
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.add
|
||||
local.tee $2
|
||||
i32.const 12
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $2
|
||||
i32.const 8
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $1
|
||||
i32.const 24
|
||||
i32.le_u
|
||||
br_if $~lib/util/memory/memset|inlined.0
|
||||
local.get $0
|
||||
i32.const 12
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
i32.const 16
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
i32.const 20
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
i32.const 24
|
||||
i32.add
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.add
|
||||
local.tee $2
|
||||
i32.const 28
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $2
|
||||
i32.const 24
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $2
|
||||
i32.const 20
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $2
|
||||
i32.const 16
|
||||
i32.sub
|
||||
i32.const 0
|
||||
i32.store
|
||||
local.get $0
|
||||
i32.const 4
|
||||
i32.and
|
||||
i32.const 24
|
||||
i32.add
|
||||
local.tee $2
|
||||
local.get $0
|
||||
i32.add
|
||||
local.set $0
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.sub
|
||||
local.set $1
|
||||
loop $continue|0
|
||||
local.get $1
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
if
|
||||
local.get $0
|
||||
i64.const 0
|
||||
i64.store
|
||||
local.get $0
|
||||
i32.const 8
|
||||
i32.add
|
||||
i64.const 0
|
||||
i64.store
|
||||
local.get $0
|
||||
i32.const 16
|
||||
i32.add
|
||||
i64.const 0
|
||||
i64.store
|
||||
local.get $0
|
||||
i32.const 24
|
||||
i32.add
|
||||
i64.const 0
|
||||
i64.store
|
||||
local.get $1
|
||||
i32.const 32
|
||||
i32.sub
|
||||
local.set $1
|
||||
local.get $0
|
||||
i32.const 32
|
||||
i32.add
|
||||
local.set $0
|
||||
br $continue|0
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/runtime/doReallocate (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
local.get $0
|
||||
i32.const 8
|
||||
i32.sub
|
||||
local.tee $3
|
||||
i32.load offset=4
|
||||
local.tee $2
|
||||
local.get $1
|
||||
i32.lt_u
|
||||
if
|
||||
i32.const 1
|
||||
i32.const 32
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.add
|
||||
i32.clz
|
||||
i32.sub
|
||||
i32.shl
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.const 312
|
||||
i32.gt_u
|
||||
select
|
||||
i32.const 1
|
||||
i32.const 32
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.add
|
||||
i32.clz
|
||||
i32.sub
|
||||
i32.shl
|
||||
i32.lt_u
|
||||
if
|
||||
unreachable
|
||||
else
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.add
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.sub
|
||||
call $~lib/memory/memory.fill
|
||||
end
|
||||
end
|
||||
local.get $3
|
||||
local.get $1
|
||||
i32.store offset=4
|
||||
local.get $0
|
||||
)
|
||||
(func $~lib/array/ensureCapacity (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
i32.const 1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
local.get $1
|
||||
i32.shr_u
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 1
|
||||
i32.const 1073741816
|
||||
local.get $1
|
||||
i32.shr_u
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 240
|
||||
i32.const 10
|
||||
i32.const 64
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
local.get $1
|
||||
i32.shl
|
||||
local.tee $1
|
||||
call $~lib/runtime/doReallocate
|
||||
local.set $2
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.ne
|
||||
if
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $2
|
||||
i32.store offset=4
|
||||
end
|
||||
local.get $0
|
||||
local.get $1
|
||||
i32.store offset=8
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<i32>#__set (; 5 ;) (type $FUNCSIG$v)
|
||||
i32.const 32
|
||||
i32.const 2
|
||||
call $~lib/array/ensureCapacity
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.store
|
||||
i32.const 0
|
||||
i32.const 44
|
||||
i32.load
|
||||
i32.ge_s
|
||||
if
|
||||
i32.const 44
|
||||
i32.const 1
|
||||
i32.store
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<i64>#__get (; 6 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64)
|
||||
local.get $0
|
||||
i32.const 88
|
||||
i32.load
|
||||
i32.const 3
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 240
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 84
|
||||
i32.load
|
||||
local.get $0
|
||||
i32.const 3
|
||||
i32.shl
|
||||
i32.add
|
||||
i64.load
|
||||
)
|
||||
(func $~lib/array/Array<i64>#__set (; 7 ;) (type $FUNCSIG$v)
|
||||
i32.const 80
|
||||
i32.const 3
|
||||
call $~lib/array/ensureCapacity
|
||||
i32.const 84
|
||||
i32.load
|
||||
i64.const 4
|
||||
i64.store
|
||||
i32.const 0
|
||||
i32.const 92
|
||||
i32.load
|
||||
i32.ge_s
|
||||
if
|
||||
i32.const 92
|
||||
i32.const 1
|
||||
i32.store
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<f32>#__get (; 8 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32)
|
||||
local.get $0
|
||||
i32.const 128
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 240
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 124
|
||||
i32.load
|
||||
local.get $0
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
f32.load
|
||||
)
|
||||
(func $~lib/array/Array<f32>#__set (; 9 ;) (type $FUNCSIG$v)
|
||||
i32.const 120
|
||||
i32.const 2
|
||||
call $~lib/array/ensureCapacity
|
||||
i32.const 124
|
||||
i32.load
|
||||
f32.const 2.5
|
||||
f32.store
|
||||
i32.const 0
|
||||
i32.const 132
|
||||
i32.load
|
||||
i32.ge_s
|
||||
if
|
||||
i32.const 132
|
||||
i32.const 1
|
||||
i32.store
|
||||
end
|
||||
)
|
||||
(func $~lib/array/Array<f64>#__get (; 10 ;) (type $FUNCSIG$di) (param $0 i32) (result f64)
|
||||
local.get $0
|
||||
i32.const 176
|
||||
i32.load
|
||||
i32.const 3
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 240
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 172
|
||||
i32.load
|
||||
local.get $0
|
||||
i32.const 3
|
||||
i32.shl
|
||||
i32.add
|
||||
f64.load
|
||||
)
|
||||
(func $~lib/array/Array<f64>#__set (; 11 ;) (type $FUNCSIG$v)
|
||||
i32.const 168
|
||||
i32.const 3
|
||||
call $~lib/array/ensureCapacity
|
||||
i32.const 172
|
||||
i32.load
|
||||
f64.const 2.25
|
||||
f64.store
|
||||
i32.const 0
|
||||
i32.const 180
|
||||
i32.load
|
||||
i32.ge_s
|
||||
if
|
||||
i32.const 180
|
||||
i32.const 1
|
||||
i32.store
|
||||
end
|
||||
)
|
||||
(func $start:std/static-array (; 12 ;) (type $FUNCSIG$v)
|
||||
i32.const 44
|
||||
i32.load
|
||||
i32.const 2
|
||||
@ -31,15 +513,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 1
|
||||
i32.ne
|
||||
if
|
||||
@ -50,17 +525,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 2
|
||||
i32.ne
|
||||
if
|
||||
@ -71,19 +537,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.store
|
||||
i32.const 36
|
||||
i32.load
|
||||
i32.const -1
|
||||
call $~lib/array/Array<i32>#__set
|
||||
i32.const 0
|
||||
i32.const 40
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<i32>#__get
|
||||
i32.const 2
|
||||
i32.ne
|
||||
if
|
||||
@ -106,15 +562,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 84
|
||||
i32.load
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
i32.const 88
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i64.load
|
||||
call $~lib/array/Array<i64>#__get
|
||||
i64.const 3
|
||||
i64.ne
|
||||
if
|
||||
@ -125,17 +574,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 84
|
||||
i32.load
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
i32.const 88
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i64.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<i64>#__get
|
||||
i64.const 4
|
||||
i64.ne
|
||||
if
|
||||
@ -146,19 +586,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 84
|
||||
i32.load
|
||||
i64.const 4
|
||||
i64.store
|
||||
i32.const 84
|
||||
i32.load
|
||||
i32.const -1
|
||||
call $~lib/array/Array<i64>#__set
|
||||
i32.const 0
|
||||
i32.const 88
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
i64.load
|
||||
call $~lib/array/Array<i64>#__get
|
||||
i64.const 4
|
||||
i64.ne
|
||||
if
|
||||
@ -181,15 +611,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 124
|
||||
i32.load
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
i32.const 128
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
f32.load
|
||||
call $~lib/array/Array<f32>#__get
|
||||
f32.const 1.5
|
||||
f32.ne
|
||||
if
|
||||
@ -200,17 +623,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 124
|
||||
i32.load
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
i32.const 128
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
f32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<f32>#__get
|
||||
f32.const 2.5
|
||||
f32.ne
|
||||
if
|
||||
@ -221,19 +635,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 124
|
||||
i32.load
|
||||
f32.const 2.5
|
||||
f32.store
|
||||
i32.const 124
|
||||
i32.load
|
||||
i32.const -1
|
||||
call $~lib/array/Array<f32>#__set
|
||||
i32.const 0
|
||||
i32.const 128
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
f32.load
|
||||
call $~lib/array/Array<f32>#__get
|
||||
f32.const 2.5
|
||||
f32.ne
|
||||
if
|
||||
@ -256,15 +660,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 172
|
||||
i32.load
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
i32.const 176
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
f64.load
|
||||
call $~lib/array/Array<f64>#__get
|
||||
f64.const 1.25
|
||||
f64.ne
|
||||
if
|
||||
@ -275,17 +672,8 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 172
|
||||
i32.load
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
i32.const 176
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
f64.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<f64>#__get
|
||||
f64.const 2.25
|
||||
f64.ne
|
||||
if
|
||||
@ -296,19 +684,9 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i32.const 172
|
||||
i32.load
|
||||
f64.const 2.25
|
||||
f64.store
|
||||
i32.const 172
|
||||
i32.load
|
||||
i32.const -1
|
||||
call $~lib/array/Array<f64>#__set
|
||||
i32.const 0
|
||||
i32.const 176
|
||||
i32.load
|
||||
i32.lt_u
|
||||
select
|
||||
f64.load
|
||||
call $~lib/array/Array<f64>#__get
|
||||
f64.const 2.25
|
||||
f64.ne
|
||||
if
|
||||
@ -320,10 +698,10 @@
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $start (; 2 ;) (type $FUNCSIG$v)
|
||||
(func $start (; 13 ;) (type $FUNCSIG$v)
|
||||
call $start:std/static-array
|
||||
)
|
||||
(func $null (; 3 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 14 ;) (type $FUNCSIG$v)
|
||||
nop
|
||||
)
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3207,11 +3207,7 @@
|
||||
(local $3 i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load
|
||||
local.tee $2
|
||||
i32.const 8
|
||||
i32.sub
|
||||
i32.load offset=4
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.gt_u
|
||||
@ -3222,19 +3218,21 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 1440
|
||||
i32.const 12
|
||||
i32.const 10
|
||||
i32.const 64
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
local.get $2
|
||||
local.get $0
|
||||
i32.load
|
||||
local.tee $2
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
local.tee $3
|
||||
call $~lib/runtime/doReallocate
|
||||
local.tee $1
|
||||
local.get $2
|
||||
i32.ne
|
||||
if
|
||||
local.get $0
|
||||
@ -3541,7 +3539,30 @@
|
||||
end
|
||||
local.get $6
|
||||
)
|
||||
(func $~lib/util/number/decimalCount32 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/array/Array<String>#__get (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
local.get $1
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.const 2
|
||||
i32.shr_u
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 1440
|
||||
i32.const 68
|
||||
i32.const 61
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
i32.load offset=4
|
||||
local.get $1
|
||||
i32.const 2
|
||||
i32.shl
|
||||
i32.add
|
||||
i32.load
|
||||
)
|
||||
(func $~lib/util/number/decimalCount32 (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
local.get $0
|
||||
i32.const 100000
|
||||
i32.lt_u
|
||||
@ -3595,7 +3616,7 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/util/number/utoa32_lut (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(func $~lib/util/number/utoa32_lut (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
i32.const 2060
|
||||
@ -3705,7 +3726,7 @@
|
||||
i32.store16
|
||||
end
|
||||
)
|
||||
(func $~lib/util/number/itoa32 (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/util/number/itoa32 (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
@ -3747,7 +3768,7 @@
|
||||
i32.const 1
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $~lib/util/number/utoa32 (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(func $~lib/util/number/utoa32 (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
@ -3770,7 +3791,7 @@
|
||||
i32.const 1
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $~lib/util/number/decimalCount64 (; 43 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
|
||||
(func $~lib/util/number/decimalCount64 (; 44 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
|
||||
local.get $0
|
||||
i64.const 1000000000000000
|
||||
i64.lt_u
|
||||
@ -3824,7 +3845,7 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/util/number/utoa64_lut (; 44 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
|
||||
(func $~lib/util/number/utoa64_lut (; 45 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
@ -3921,7 +3942,7 @@
|
||||
local.get $2
|
||||
call $~lib/util/number/utoa32_lut
|
||||
)
|
||||
(func $~lib/util/number/utoa64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
|
||||
(func $~lib/util/number/utoa64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
@ -3963,7 +3984,7 @@
|
||||
i32.const 1
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $~lib/util/number/itoa64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
|
||||
(func $~lib/util/number/itoa64 (; 47 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
@ -4028,7 +4049,7 @@
|
||||
i32.const 1
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $~lib/util/number/genDigits (; 47 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32)
|
||||
(func $~lib/util/number/genDigits (; 48 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32)
|
||||
(local $7 i32)
|
||||
(local $8 i32)
|
||||
(local $9 i64)
|
||||
@ -4446,7 +4467,7 @@
|
||||
local.get $7
|
||||
end
|
||||
)
|
||||
(func $~lib/util/number/prettify (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(func $~lib/util/number/prettify (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $2
|
||||
@ -4707,7 +4728,7 @@
|
||||
end
|
||||
end
|
||||
)
|
||||
(func $~lib/util/number/dtoa_core (; 49 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32)
|
||||
(func $~lib/util/number/dtoa_core (; 50 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32)
|
||||
(local $2 i32)
|
||||
(local $3 i64)
|
||||
(local $4 i64)
|
||||
@ -5019,7 +5040,7 @@
|
||||
local.get $12
|
||||
i32.add
|
||||
)
|
||||
(func $~lib/string/String#substring (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(func $~lib/string/String#substring (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
@ -5117,7 +5138,7 @@
|
||||
i32.const 1
|
||||
call $~lib/runtime/doRegister
|
||||
)
|
||||
(func $~lib/util/number/dtoa (; 51 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
|
||||
(func $~lib/util/number/dtoa (; 52 ;) (type $FUNCSIG$id) (param $0 f64) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
@ -5162,7 +5183,7 @@
|
||||
call $~lib/runtime/assertUnregistered
|
||||
local.get $1
|
||||
)
|
||||
(func $start:std/string (; 52 ;) (type $FUNCSIG$v)
|
||||
(func $start:std/string (; 53 ;) (type $FUNCSIG$v)
|
||||
(local $0 i32)
|
||||
global.get $std/string/str
|
||||
i32.const 16
|
||||
@ -6664,15 +6685,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 312
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6714,15 +6728,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 312
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6749,15 +6756,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1480
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6786,15 +6786,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6803,17 +6796,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6822,17 +6806,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6861,15 +6836,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6878,17 +6846,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6897,17 +6856,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6937,15 +6887,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6954,17 +6897,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6973,17 +6907,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 312
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -6992,17 +6917,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 12
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 12
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 3
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7032,15 +6948,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 312
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7049,17 +6958,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7068,17 +6968,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7087,17 +6978,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 12
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 12
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 3
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7127,15 +7009,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7144,17 +7019,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7163,17 +7029,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7182,17 +7039,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 12
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 12
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 3
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 312
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7221,15 +7069,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7238,17 +7079,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7257,17 +7089,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7309,15 +7132,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7344,15 +7160,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7381,15 +7190,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7398,17 +7200,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7417,17 +7210,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7456,15 +7240,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7473,17 +7250,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7492,17 +7260,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7531,15 +7290,8 @@
|
||||
local.tee $0
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const -1
|
||||
i32.const 0
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 336
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7548,17 +7300,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 4
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 4
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 1
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 824
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -7567,17 +7310,8 @@
|
||||
end
|
||||
if
|
||||
global.get $std/string/sa
|
||||
local.tee $0
|
||||
i32.load offset=4
|
||||
i32.const 8
|
||||
i32.add
|
||||
i32.const -1
|
||||
i32.const 8
|
||||
local.get $0
|
||||
i32.load offset=8
|
||||
i32.lt_u
|
||||
select
|
||||
i32.load
|
||||
i32.const 2
|
||||
call $~lib/array/Array<String>#__get
|
||||
i32.const 1520
|
||||
call $~lib/string/String.__eq
|
||||
local.set $0
|
||||
@ -8776,13 +8510,13 @@
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $std/string/getString (; 53 ;) (type $FUNCSIG$i) (result i32)
|
||||
(func $std/string/getString (; 54 ;) (type $FUNCSIG$i) (result i32)
|
||||
global.get $std/string/str
|
||||
)
|
||||
(func $start (; 54 ;) (type $FUNCSIG$v)
|
||||
(func $start (; 55 ;) (type $FUNCSIG$v)
|
||||
call $start:std/string
|
||||
)
|
||||
(func $null (; 55 ;) (type $FUNCSIG$v)
|
||||
(func $null (; 56 ;) (type $FUNCSIG$v)
|
||||
nop
|
||||
)
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user