mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-05-11 15:01:57 +00:00
alias locals when inlining a tail call
This commit is contained in:
parent
0c388ca4c6
commit
2d76da9465
@ -56,18 +56,17 @@ import {
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
ElementKind,
|
ElementKind,
|
||||||
OperatorKind,
|
|
||||||
FunctionPrototype,
|
FunctionPrototype,
|
||||||
Class,
|
Class,
|
||||||
Field,
|
Field,
|
||||||
Global,
|
Global,
|
||||||
DecoratorFlags,
|
DecoratorFlags,
|
||||||
ClassPrototype,
|
|
||||||
Local
|
Local
|
||||||
} from "./program";
|
} from "./program";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
FlowFlags, Flow
|
FlowFlags,
|
||||||
|
Flow
|
||||||
} from "./flow";
|
} from "./flow";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -75,6 +75,7 @@ export enum CommonFlags {
|
|||||||
|
|
||||||
// Other
|
// Other
|
||||||
|
|
||||||
|
/** Is quoted. */
|
||||||
QUOTED = 1 << 28
|
QUOTED = 1 << 28
|
||||||
}
|
}
|
||||||
|
|
||||||
|
101
src/compiler.ts
101
src/compiler.ts
@ -39,7 +39,8 @@ import {
|
|||||||
getBlockChildCount,
|
getBlockChildCount,
|
||||||
getBlockChild,
|
getBlockChild,
|
||||||
getBlockName,
|
getBlockName,
|
||||||
needsExplicitUnreachable
|
needsExplicitUnreachable,
|
||||||
|
getGetLocalIndex
|
||||||
} from "./module";
|
} from "./module";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -1467,7 +1468,10 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compileStatement(statement: Statement, isLastStatementInBody: bool = false): ExpressionRef {
|
compileStatement(
|
||||||
|
statement: Statement,
|
||||||
|
isLastStatementInBody: bool = false
|
||||||
|
): ExpressionRef {
|
||||||
var module = this.module;
|
var module = this.module;
|
||||||
var stmt: ExpressionRef;
|
var stmt: ExpressionRef;
|
||||||
switch (statement.kind) {
|
switch (statement.kind) {
|
||||||
@ -1492,7 +1496,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NodeKind.EXPRESSION: {
|
case NodeKind.EXPRESSION: {
|
||||||
stmt = this.compileExpressionStatement(<ExpressionStatement>statement);
|
stmt = this.compileExpressionStatement(<ExpressionStatement>statement, isLastStatementInBody);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NodeKind.FOR: {
|
case NodeKind.FOR: {
|
||||||
@ -1691,8 +1695,15 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
return this.module.createNop();
|
return this.module.createNop();
|
||||||
}
|
}
|
||||||
|
|
||||||
compileExpressionStatement(statement: ExpressionStatement): ExpressionRef {
|
compileExpressionStatement(statement: ExpressionStatement, isLastStatementInBody: bool = false): ExpressionRef {
|
||||||
var expr = this.compileExpression(statement.expression, Type.void, ConversionKind.NONE, WrapMode.NONE);
|
var expr = this.compileExpression(
|
||||||
|
statement.expression,
|
||||||
|
Type.void,
|
||||||
|
ConversionKind.NONE,
|
||||||
|
WrapMode.NONE,
|
||||||
|
null,
|
||||||
|
isLastStatementInBody
|
||||||
|
);
|
||||||
if (this.currentType != Type.void) {
|
if (this.currentType != Type.void) {
|
||||||
expr = this.module.createDrop(expr);
|
expr = this.module.createDrop(expr);
|
||||||
this.currentType = Type.void;
|
this.currentType = Type.void;
|
||||||
@ -2342,7 +2353,8 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
contextualType: Type,
|
contextualType: Type,
|
||||||
conversionKind: ConversionKind,
|
conversionKind: ConversionKind,
|
||||||
wrapMode: WrapMode,
|
wrapMode: WrapMode,
|
||||||
context: Element | null = null
|
context: Element | null = null,
|
||||||
|
isLastStatementInBody: bool = false
|
||||||
): ExpressionRef {
|
): ExpressionRef {
|
||||||
this.currentType = contextualType;
|
this.currentType = contextualType;
|
||||||
var expr: ExpressionRef;
|
var expr: ExpressionRef;
|
||||||
@ -2356,7 +2368,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NodeKind.CALL: {
|
case NodeKind.CALL: {
|
||||||
expr = this.compileCallExpression(<CallExpression>expression, contextualType);
|
expr = this.compileCallExpression(<CallExpression>expression, contextualType, isLastStatementInBody);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NodeKind.COMMA: {
|
case NodeKind.COMMA: {
|
||||||
@ -4988,7 +5000,11 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
return module.createUnreachable();
|
return module.createUnreachable();
|
||||||
}
|
}
|
||||||
|
|
||||||
compileCallExpression(expression: CallExpression, contextualType: Type): ExpressionRef {
|
compileCallExpression(
|
||||||
|
expression: CallExpression,
|
||||||
|
contextualType: Type,
|
||||||
|
isLastStatementInBody: bool = false
|
||||||
|
): ExpressionRef {
|
||||||
var module = this.module;
|
var module = this.module;
|
||||||
var flow = this.currentFlow;
|
var flow = this.currentFlow;
|
||||||
|
|
||||||
@ -5184,7 +5200,8 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
instance,
|
instance,
|
||||||
expression.arguments,
|
expression.arguments,
|
||||||
expression,
|
expression,
|
||||||
thisExpr
|
thisExpr,
|
||||||
|
isLastStatementInBody
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5413,7 +5430,8 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
instance: Function,
|
instance: Function,
|
||||||
argumentExpressions: Expression[],
|
argumentExpressions: Expression[],
|
||||||
reportNode: Node,
|
reportNode: Node,
|
||||||
thisArg: ExpressionRef = 0
|
thisArg: ExpressionRef = 0,
|
||||||
|
inlineCanAlias: bool = false
|
||||||
): ExpressionRef {
|
): ExpressionRef {
|
||||||
var numArguments = argumentExpressions.length;
|
var numArguments = argumentExpressions.length;
|
||||||
var signature = instance.signature;
|
var signature = instance.signature;
|
||||||
@ -5437,7 +5455,7 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.currentInlineFunctions.push(instance);
|
this.currentInlineFunctions.push(instance);
|
||||||
let expr = this.compileCallInlinePrechecked(instance, argumentExpressions, thisArg);
|
let expr = this.compileCallInlinePrechecked(instance, argumentExpressions, thisArg, inlineCanAlias);
|
||||||
this.currentInlineFunctions.pop();
|
this.currentInlineFunctions.pop();
|
||||||
return expr;
|
return expr;
|
||||||
}
|
}
|
||||||
@ -5468,7 +5486,8 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
private compileCallInlinePrechecked(
|
private compileCallInlinePrechecked(
|
||||||
instance: Function,
|
instance: Function,
|
||||||
argumentExpressions: Expression[],
|
argumentExpressions: Expression[],
|
||||||
thisArg: ExpressionRef = 0
|
thisArg: ExpressionRef = 0,
|
||||||
|
canAlias: bool = false
|
||||||
): ExpressionRef {
|
): ExpressionRef {
|
||||||
var module = this.module;
|
var module = this.module;
|
||||||
|
|
||||||
@ -5483,12 +5502,18 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
if (thisArg) {
|
if (thisArg) {
|
||||||
let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);
|
let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);
|
||||||
let thisType = assert(instance.signature.thisType);
|
let thisType = assert(instance.signature.thisType);
|
||||||
let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType, false);
|
if (canAlias && getExpressionId(thisArg) == ExpressionId.GetLocal) {
|
||||||
body.push(
|
flow.addScopedAlias(CommonSymbols.this_, thisType, getGetLocalIndex(thisArg));
|
||||||
module.createSetLocal(thisLocal.index, thisArg)
|
let baseInstance = (<Class>classInstance).base;
|
||||||
);
|
if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, getGetLocalIndex(thisArg));
|
||||||
let baseInstance = (<Class>classInstance).base;
|
} else {
|
||||||
if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index);
|
let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType, false);
|
||||||
|
body.push(
|
||||||
|
module.createSetLocal(thisLocal.index, thisArg)
|
||||||
|
);
|
||||||
|
let baseInstance = (<Class>classInstance).base;
|
||||||
|
if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var numArguments = argumentExpressions.length;
|
var numArguments = argumentExpressions.length;
|
||||||
@ -5501,14 +5526,18 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
ConversionKind.IMPLICIT,
|
ConversionKind.IMPLICIT,
|
||||||
WrapMode.NONE
|
WrapMode.NONE
|
||||||
);
|
);
|
||||||
let argumentLocal = flow.addScopedLocal(
|
if (canAlias && getExpressionId(paramExpr) == ExpressionId.GetLocal) {
|
||||||
signature.getParameterName(i),
|
flow.addScopedAlias(signature.getParameterName(i), parameterTypes[i], getGetLocalIndex(paramExpr));
|
||||||
parameterTypes[i],
|
} else {
|
||||||
!previousFlow.canOverflow(paramExpr, parameterTypes[i])
|
let argumentLocal = flow.addScopedLocal(
|
||||||
);
|
signature.getParameterName(i),
|
||||||
body.push(
|
parameterTypes[i],
|
||||||
module.createSetLocal(argumentLocal.index, paramExpr)
|
!previousFlow.canOverflow(paramExpr, parameterTypes[i])
|
||||||
);
|
);
|
||||||
|
body.push(
|
||||||
|
module.createSetLocal(argumentLocal.index, paramExpr)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compile optional parameter initializers in the scope of the inlined flow
|
// Compile optional parameter initializers in the scope of the inlined flow
|
||||||
@ -5521,14 +5550,18 @@ export class Compiler extends DiagnosticEmitter {
|
|||||||
ConversionKind.IMPLICIT,
|
ConversionKind.IMPLICIT,
|
||||||
WrapMode.WRAP
|
WrapMode.WRAP
|
||||||
);
|
);
|
||||||
let argumentLocal = flow.addScopedLocal(
|
if (canAlias && getExpressionId(initExpr) == ExpressionId.GetLocal) {
|
||||||
signature.getParameterName(i),
|
flow.addScopedAlias(signature.getParameterName(i), parameterTypes[i], getGetLocalIndex(initExpr));
|
||||||
parameterTypes[i],
|
} else {
|
||||||
!flow.canOverflow(initExpr, parameterTypes[i])
|
let argumentLocal = flow.addScopedLocal(
|
||||||
);
|
signature.getParameterName(i),
|
||||||
body.push(
|
parameterTypes[i],
|
||||||
module.createSetLocal(argumentLocal.index, initExpr)
|
!flow.canOverflow(initExpr, parameterTypes[i])
|
||||||
);
|
);
|
||||||
|
body.push(
|
||||||
|
module.createSetLocal(argumentLocal.index, initExpr)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compile the called function's body in the scope of the inlined flow
|
// Compile the called function's body in the scope of the inlined flow
|
||||||
|
@ -84,7 +84,12 @@ import {
|
|||||||
} from "./module";
|
} from "./module";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
CharCode, writeI32, writeI8, writeI16, writeF32, writeF64
|
CharCode,
|
||||||
|
writeI8,
|
||||||
|
writeI16,
|
||||||
|
writeI32,
|
||||||
|
writeF32,
|
||||||
|
writeF64
|
||||||
} from "./util";
|
} from "./util";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -40,7 +40,7 @@ export declare function CLASSID<T>(): u32;
|
|||||||
export declare function ITERATEROOTS(fn: (ref: usize) => void): void;
|
export declare function ITERATEROOTS(fn: (ref: usize) => void): void;
|
||||||
|
|
||||||
/** Adjusts an allocation to actual block size. Primarily targets TLSF. */
|
/** Adjusts an allocation to actual block size. Primarily targets TLSF. */
|
||||||
function adjustToBlock(payloadSize: usize): usize {
|
export function ADJUSTOBLOCK(payloadSize: usize): usize {
|
||||||
// round up to power of 2, e.g. with HEADER_SIZE=8:
|
// round up to power of 2, e.g. with HEADER_SIZE=8:
|
||||||
// 0 -> 2^3 = 8
|
// 0 -> 2^3 = 8
|
||||||
// 1..8 -> 2^4 = 16
|
// 1..8 -> 2^4 = 16
|
||||||
@ -58,7 +58,7 @@ export function ALLOCATE(payloadSize: usize): usize {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function doAllocate(payloadSize: usize): usize {
|
function doAllocate(payloadSize: usize): usize {
|
||||||
var header = changetype<HEADER>(memory.allocate(adjustToBlock(payloadSize)));
|
var header = changetype<HEADER>(memory.allocate(ADJUSTOBLOCK(payloadSize)));
|
||||||
header.classId = HEADER_MAGIC;
|
header.classId = HEADER_MAGIC;
|
||||||
header.payloadSize = payloadSize;
|
header.payloadSize = payloadSize;
|
||||||
if (GC_IMPLEMENTED) {
|
if (GC_IMPLEMENTED) {
|
||||||
@ -83,8 +83,8 @@ function doReallocate(ref: usize, newPayloadSize: usize): usize {
|
|||||||
var header = changetype<HEADER>(ref - HEADER_SIZE);
|
var header = changetype<HEADER>(ref - HEADER_SIZE);
|
||||||
var payloadSize = header.payloadSize;
|
var payloadSize = header.payloadSize;
|
||||||
if (payloadSize < newPayloadSize) {
|
if (payloadSize < newPayloadSize) {
|
||||||
let newAdjustedSize = adjustToBlock(newPayloadSize);
|
let newAdjustedSize = ADJUSTOBLOCK(newPayloadSize);
|
||||||
if (select(adjustToBlock(payloadSize), 0, ref > HEAP_BASE) < newAdjustedSize) {
|
if (select(ADJUSTOBLOCK(payloadSize), 0, ref > HEAP_BASE) < newAdjustedSize) {
|
||||||
// move if the allocation isn't large enough or not a heap object
|
// move if the allocation isn't large enough or not a heap object
|
||||||
let newHeader = changetype<HEADER>(memory.allocate(newAdjustedSize));
|
let newHeader = changetype<HEADER>(memory.allocate(newAdjustedSize));
|
||||||
newHeader.classId = header.classId;
|
newHeader.classId = header.classId;
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
(export "memory" (memory $0))
|
(export "memory" (memory $0))
|
||||||
(export "table" (table $0))
|
(export "table" (table $0))
|
||||||
(start $start)
|
(start $start)
|
||||||
(func $~lib/runtime/adjustToBlock (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/ADJUSTOBLOCK (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
local.get $0
|
local.get $0
|
||||||
@ -135,7 +135,7 @@
|
|||||||
(func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
(local $1 i32)
|
(local $1 i32)
|
||||||
local.get $0
|
local.get $0
|
||||||
call $~lib/runtime/adjustToBlock
|
call $~lib/runtime/ADJUSTOBLOCK
|
||||||
call $~lib/memory/memory.allocate
|
call $~lib/memory/memory.allocate
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $1
|
local.get $1
|
||||||
@ -194,261 +194,252 @@
|
|||||||
(func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
(func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
(local $5 i32)
|
(local $5 i64)
|
||||||
(local $6 i32)
|
|
||||||
(local $7 i32)
|
|
||||||
(local $8 i64)
|
|
||||||
block $~lib/util/memory/memset|inlined.0
|
block $~lib/util/memory/memset|inlined.0
|
||||||
local.get $0
|
|
||||||
local.set $3
|
|
||||||
local.get $1
|
|
||||||
local.set $4
|
|
||||||
local.get $2
|
local.get $2
|
||||||
local.set $5
|
|
||||||
local.get $5
|
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 6
|
i32.const 6
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
i32.const 0
|
i32.const 0
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.sub
|
i32.sub
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.and
|
i32.and
|
||||||
local.set $6
|
|
||||||
local.get $3
|
|
||||||
local.get $6
|
|
||||||
i32.add
|
|
||||||
local.set $3
|
local.set $3
|
||||||
local.get $5
|
local.get $0
|
||||||
local.get $6
|
local.get $3
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
|
local.get $2
|
||||||
|
local.get $3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const -4
|
i32.const -4
|
||||||
i32.and
|
i32.and
|
||||||
local.set $5
|
local.set $2
|
||||||
i32.const -1
|
i32.const -1
|
||||||
i32.const 255
|
i32.const 255
|
||||||
i32.div_u
|
i32.div_u
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.const 255
|
i32.const 255
|
||||||
i32.and
|
i32.and
|
||||||
i32.mul
|
i32.mul
|
||||||
local.set $7
|
local.set $4
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 12
|
i32.const 12
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 12
|
i32.const 12
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 20
|
i32.const 20
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 28
|
i32.const 28
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 20
|
i32.const 20
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
i32.const 24
|
i32.const 24
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.and
|
i32.and
|
||||||
i32.add
|
i32.add
|
||||||
local.set $6
|
|
||||||
local.get $3
|
|
||||||
local.get $6
|
|
||||||
i32.add
|
|
||||||
local.set $3
|
local.set $3
|
||||||
local.get $5
|
local.get $0
|
||||||
local.get $6
|
local.get $3
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
|
local.get $2
|
||||||
|
local.get $3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $7
|
local.get $4
|
||||||
i64.extend_i32_u
|
i64.extend_i32_u
|
||||||
local.get $7
|
local.get $4
|
||||||
i64.extend_i32_u
|
i64.extend_i32_u
|
||||||
i64.const 32
|
i64.const 32
|
||||||
i64.shl
|
i64.shl
|
||||||
i64.or
|
i64.or
|
||||||
local.set $8
|
local.set $5
|
||||||
block $break|0
|
block $break|0
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
|
||||||
i64.store
|
|
||||||
local.get $5
|
local.get $5
|
||||||
|
i64.store
|
||||||
|
local.get $2
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.add
|
i32.add
|
||||||
local.set $3
|
local.set $0
|
||||||
end
|
end
|
||||||
br $continue|0
|
br $continue|0
|
||||||
end
|
end
|
||||||
|
@ -11,12 +11,18 @@
|
|||||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||||
(import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64)))
|
(import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64)))
|
||||||
(memory $0 1)
|
(memory $0 1)
|
||||||
(data (i32.const 8) "\01\00\00\00,\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s")
|
(data (i32.const 8) "\01\00\00\00,")
|
||||||
(data (i32.const 64) "\01\00\00\00\1c\00\00\00s\00t\00d\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
(data (i32.const 24) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s")
|
||||||
(data (i32.const 104) "\01\00\00\00\10\00\00\00b\00a\00r\00r\00i\00e\00r\001")
|
(data (i32.const 72) "\01\00\00\00\1c")
|
||||||
(data (i32.const 128) "\01\00\00\00\10\00\00\00b\00a\00r\00r\00i\00e\00r\002")
|
(data (i32.const 88) "s\00t\00d\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
||||||
(data (i32.const 152) "\01\00\00\00\10\00\00\00b\00a\00r\00r\00i\00e\00r\003")
|
(data (i32.const 120) "\01\00\00\00\10")
|
||||||
(data (i32.const 176) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
(data (i32.const 136) "b\00a\00r\00r\00i\00e\00r\001")
|
||||||
|
(data (i32.const 152) "\01\00\00\00\10")
|
||||||
|
(data (i32.const 168) "b\00a\00r\00r\00i\00e\00r\002")
|
||||||
|
(data (i32.const 184) "\01\00\00\00\10")
|
||||||
|
(data (i32.const 200) "b\00a\00r\00r\00i\00e\00r\003")
|
||||||
|
(data (i32.const 216) "\01\00\00\00\1e")
|
||||||
|
(data (i32.const 232) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
|
||||||
(table $0 1 funcref)
|
(table $0 1 funcref)
|
||||||
(elem (i32.const 0) $null)
|
(elem (i32.const 0) $null)
|
||||||
(global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0))
|
(global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0))
|
||||||
@ -41,7 +47,7 @@
|
|||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 130
|
i32.const 130
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -61,7 +67,7 @@
|
|||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 153
|
i32.const 153
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -72,7 +78,7 @@
|
|||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 154
|
i32.const 154
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -98,7 +104,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 76
|
i32.const 76
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -116,7 +122,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 77
|
i32.const 77
|
||||||
i32.const 11
|
i32.const 11
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -129,7 +135,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 414
|
i32.const 414
|
||||||
i32.const 2
|
i32.const 2
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -146,7 +152,7 @@
|
|||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 144
|
i32.const 144
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -157,7 +163,7 @@
|
|||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 145
|
i32.const 145
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -180,7 +186,7 @@
|
|||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 124
|
i32.const 124
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -206,7 +212,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 244
|
i32.const 244
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -229,7 +235,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 246
|
i32.const 246
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -330,7 +336,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 68
|
i32.const 68
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -344,7 +350,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 69
|
i32.const 69
|
||||||
i32.const 11
|
i32.const 11
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -360,7 +366,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 320
|
i32.const 320
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -372,7 +378,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 321
|
i32.const 321
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -385,7 +391,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 322
|
i32.const 322
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -407,7 +413,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 175
|
i32.const 175
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -421,7 +427,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 177
|
i32.const 177
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -445,7 +451,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 179
|
i32.const 179
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -457,7 +463,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 183
|
i32.const 183
|
||||||
i32.const 23
|
i32.const 23
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -499,7 +505,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 197
|
i32.const 197
|
||||||
i32.const 24
|
i32.const 24
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -513,7 +519,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 199
|
i32.const 199
|
||||||
i32.const 6
|
i32.const 6
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -562,7 +568,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 212
|
i32.const 212
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -641,7 +647,7 @@
|
|||||||
i32.gt_u
|
i32.gt_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 363
|
i32.const 363
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -652,7 +658,7 @@
|
|||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 364
|
i32.const 364
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -663,7 +669,7 @@
|
|||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 365
|
i32.const 365
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -680,7 +686,7 @@
|
|||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 370
|
i32.const 370
|
||||||
i32.const 6
|
i32.const 6
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -708,7 +714,7 @@
|
|||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 379
|
i32.const 379
|
||||||
i32.const 6
|
i32.const 6
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -761,7 +767,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 408
|
i32.const 408
|
||||||
i32.const 2
|
i32.const 2
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -786,7 +792,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 282
|
i32.const 282
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -866,7 +872,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 309
|
i32.const 309
|
||||||
i32.const 16
|
i32.const 16
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -894,7 +900,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 334
|
i32.const 334
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -914,7 +920,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 335
|
i32.const 335
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -925,7 +931,7 @@
|
|||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 336
|
i32.const 336
|
||||||
i32.const 4
|
i32.const 4
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -977,7 +983,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 354
|
i32.const 354
|
||||||
i32.const 25
|
i32.const 25
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -1022,14 +1028,14 @@
|
|||||||
if
|
if
|
||||||
unreachable
|
unreachable
|
||||||
end
|
end
|
||||||
i32.const 216
|
i32.const 264
|
||||||
local.set $3
|
local.set $3
|
||||||
i32.const 216
|
i32.const 264
|
||||||
global.set $~lib/allocator/tlsf/ROOT
|
global.set $~lib/allocator/tlsf/ROOT
|
||||||
i32.const 2912
|
i32.const 2912
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.store
|
i32.store
|
||||||
i32.const 216
|
i32.const 264
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.store
|
i32.store
|
||||||
i32.const 0
|
i32.const 0
|
||||||
@ -1039,7 +1045,7 @@
|
|||||||
i32.const 22
|
i32.const 22
|
||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
i32.const 216
|
i32.const 264
|
||||||
local.get $0
|
local.get $0
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/allocator/tlsf/Root#setSLMap
|
call $~lib/allocator/tlsf/Root#setSLMap
|
||||||
@ -1050,7 +1056,7 @@
|
|||||||
i32.const 32
|
i32.const 32
|
||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
i32.const 216
|
i32.const 264
|
||||||
local.get $0
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 0
|
i32.const 0
|
||||||
@ -1069,8 +1075,8 @@
|
|||||||
br $repeat|0
|
br $repeat|0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
i32.const 216
|
i32.const 264
|
||||||
i32.const 3136
|
i32.const 3184
|
||||||
current_memory
|
current_memory
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.shl
|
i32.shl
|
||||||
@ -1140,7 +1146,7 @@
|
|||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 467
|
i32.const 467
|
||||||
i32.const 12
|
i32.const 12
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -1155,7 +1161,7 @@
|
|||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 470
|
i32.const 470
|
||||||
i32.const 2
|
i32.const 2
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -1166,7 +1172,7 @@
|
|||||||
local.get $2
|
local.get $2
|
||||||
call $~lib/allocator/tlsf/Root#use
|
call $~lib/allocator/tlsf/Root#use
|
||||||
)
|
)
|
||||||
(func $~lib/runtime/ALLOCATE (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/doAllocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
(local $1 i32)
|
(local $1 i32)
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
@ -2094,94 +2100,91 @@
|
|||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
block $~lib/util/memory/memmove|inlined.0
|
block $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $2
|
|
||||||
local.set $3
|
|
||||||
local.get $1
|
|
||||||
local.get $0
|
local.get $0
|
||||||
local.tee $2
|
local.get $1
|
||||||
i32.eq
|
i32.eq
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
|
||||||
i32.add
|
|
||||||
local.get $2
|
local.get $2
|
||||||
|
i32.add
|
||||||
|
local.get $0
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
|
local.get $0
|
||||||
local.get $2
|
local.get $2
|
||||||
local.get $3
|
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.set $0
|
local.set $3
|
||||||
end
|
end
|
||||||
local.get $0
|
local.get $3
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
call $~lib/util/memory/memcpy
|
call $~lib/util/memory/memcpy
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $3
|
local.set $2
|
||||||
local.get $2
|
local.get $0
|
||||||
local.tee $4
|
local.tee $4
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $2
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $4
|
local.get $4
|
||||||
local.get $0
|
local.get $3
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
br $continue|0
|
br $continue|0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|1
|
loop $continue|1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
|
||||||
i32.const 8
|
|
||||||
i32.sub
|
|
||||||
local.set $3
|
|
||||||
local.get $2
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.sub
|
||||||
local.set $2
|
local.set $2
|
||||||
|
local.get $0
|
||||||
|
i32.const 8
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
@ -2191,26 +2194,26 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|2
|
loop $continue|2
|
||||||
local.get $3
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.tee $4
|
local.tee $4
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $2
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $4
|
local.get $4
|
||||||
local.get $0
|
local.get $3
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $3
|
local.set $2
|
||||||
br $continue|2
|
br $continue|2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -2218,29 +2221,29 @@
|
|||||||
local.get $1
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
loop $continue|3
|
loop $continue|3
|
||||||
|
local.get $0
|
||||||
local.get $2
|
local.get $2
|
||||||
local.get $3
|
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -2248,18 +2251,18 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|4
|
loop $continue|4
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
@ -2268,16 +2271,16 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|5
|
loop $continue|5
|
||||||
local.get $3
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -2517,7 +2520,7 @@
|
|||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 16
|
i32.const 24
|
||||||
i32.const 483
|
i32.const 483
|
||||||
i32.const 6
|
i32.const 6
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2536,7 +2539,7 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
(func $~lib/runtime/REALLOCATE (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
(func $~lib/runtime/doReallocate (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
|
||||||
(local $2 i32)
|
(local $2 i32)
|
||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
@ -2560,7 +2563,7 @@
|
|||||||
i32.shl
|
i32.shl
|
||||||
i32.const 0
|
i32.const 0
|
||||||
local.get $0
|
local.get $0
|
||||||
i32.const 216
|
i32.const 264
|
||||||
i32.gt_u
|
i32.gt_u
|
||||||
select
|
select
|
||||||
i32.const 1
|
i32.const 1
|
||||||
@ -2606,12 +2609,12 @@
|
|||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
local.get $0
|
local.get $0
|
||||||
i32.const 216
|
i32.const 264
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 184
|
i32.const 232
|
||||||
i32.const 92
|
i32.const 100
|
||||||
i32.const 8
|
i32.const 8
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
@ -2641,14 +2644,14 @@
|
|||||||
i32.store offset=4
|
i32.store offset=4
|
||||||
local.get $0
|
local.get $0
|
||||||
)
|
)
|
||||||
(func $~lib/runtime/ASSERT_UNREGISTERED (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
|
(func $~lib/runtime/assertUnregistered (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
|
||||||
local.get $0
|
local.get $0
|
||||||
i32.const 216
|
i32.const 264
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 184
|
i32.const 232
|
||||||
i32.const 145
|
i32.const 188
|
||||||
i32.const 2
|
i32.const 2
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
@ -2661,8 +2664,8 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 184
|
i32.const 232
|
||||||
i32.const 146
|
i32.const 189
|
||||||
i32.const 2
|
i32.const 2
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
@ -2673,41 +2676,41 @@
|
|||||||
(local $1 i32)
|
(local $1 i32)
|
||||||
(local $2 i32)
|
(local $2 i32)
|
||||||
loop $repeat|0
|
loop $repeat|0
|
||||||
local.get $0
|
local.get $1
|
||||||
i32.const 9000
|
i32.const 9000
|
||||||
i32.lt_s
|
i32.lt_s
|
||||||
if
|
if
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
local.get $0
|
local.get $1
|
||||||
i32.const 15
|
i32.const 15
|
||||||
i32.add
|
i32.add
|
||||||
i32.clz
|
i32.clz
|
||||||
i32.sub
|
i32.sub
|
||||||
i32.shl
|
i32.shl
|
||||||
local.tee $1
|
local.tee $2
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.ne
|
i32.ne
|
||||||
local.tee $2
|
local.tee $0
|
||||||
if (result i32)
|
if
|
||||||
local.get $1
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $1
|
local.get $2
|
||||||
i32.and
|
i32.and
|
||||||
i32.eqz
|
i32.eqz
|
||||||
else
|
local.set $0
|
||||||
local.get $2
|
|
||||||
end
|
end
|
||||||
|
local.get $0
|
||||||
if
|
if
|
||||||
local.get $0
|
local.get $1
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $0
|
local.set $1
|
||||||
br $repeat|0
|
br $repeat|0
|
||||||
else
|
else
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 31
|
i32.const 31
|
||||||
i32.const 2
|
i32.const 2
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2726,6 +2729,7 @@
|
|||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
global.get $std/runtime/barrier2
|
global.get $std/runtime/barrier2
|
||||||
|
local.tee $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
i32.clz
|
i32.clz
|
||||||
@ -2733,7 +2737,7 @@
|
|||||||
i32.shl
|
i32.shl
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
global.get $std/runtime/barrier2
|
local.get $0
|
||||||
i32.const 15
|
i32.const 15
|
||||||
i32.add
|
i32.add
|
||||||
i32.clz
|
i32.clz
|
||||||
@ -2756,6 +2760,7 @@
|
|||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
global.get $std/runtime/barrier3
|
global.get $std/runtime/barrier3
|
||||||
|
local.tee $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
i32.clz
|
i32.clz
|
||||||
@ -2763,7 +2768,7 @@
|
|||||||
i32.shl
|
i32.shl
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
global.get $std/runtime/barrier3
|
local.get $0
|
||||||
i32.const 15
|
i32.const 15
|
||||||
i32.add
|
i32.add
|
||||||
i32.clz
|
i32.clz
|
||||||
@ -2778,7 +2783,7 @@
|
|||||||
br $continue|2
|
br $continue|2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
i32.const 112
|
i32.const 136
|
||||||
i32.const 1
|
i32.const 1
|
||||||
global.get $std/runtime/barrier1
|
global.get $std/runtime/barrier1
|
||||||
f64.convert_i32_u
|
f64.convert_i32_u
|
||||||
@ -2787,7 +2792,7 @@
|
|||||||
f64.const 0
|
f64.const 0
|
||||||
f64.const 0
|
f64.const 0
|
||||||
call $~lib/env/trace
|
call $~lib/env/trace
|
||||||
i32.const 136
|
i32.const 168
|
||||||
i32.const 1
|
i32.const 1
|
||||||
global.get $std/runtime/barrier2
|
global.get $std/runtime/barrier2
|
||||||
f64.convert_i32_u
|
f64.convert_i32_u
|
||||||
@ -2796,7 +2801,7 @@
|
|||||||
f64.const 0
|
f64.const 0
|
||||||
f64.const 0
|
f64.const 0
|
||||||
call $~lib/env/trace
|
call $~lib/env/trace
|
||||||
i32.const 160
|
i32.const 200
|
||||||
i32.const 1
|
i32.const 1
|
||||||
global.get $std/runtime/barrier3
|
global.get $std/runtime/barrier3
|
||||||
f64.convert_i32_u
|
f64.convert_i32_u
|
||||||
@ -2806,7 +2811,7 @@
|
|||||||
f64.const 0
|
f64.const 0
|
||||||
call $~lib/env/trace
|
call $~lib/env/trace
|
||||||
i32.const 1
|
i32.const 1
|
||||||
call $~lib/runtime/ALLOCATE
|
call $~lib/runtime/doAllocate
|
||||||
global.set $std/runtime/ref1
|
global.set $std/runtime/ref1
|
||||||
global.get $std/runtime/ref1
|
global.get $std/runtime/ref1
|
||||||
i32.const 16
|
i32.const 16
|
||||||
@ -2818,7 +2823,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 46
|
i32.const 46
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2830,21 +2835,23 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 47
|
i32.const 47
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
end
|
end
|
||||||
global.get $std/runtime/ref1
|
global.get $std/runtime/ref1
|
||||||
local.tee $0
|
local.tee $1
|
||||||
local.get $0
|
|
||||||
global.get $std/runtime/barrier1
|
global.get $std/runtime/barrier1
|
||||||
call $~lib/runtime/REALLOCATE
|
call $~lib/runtime/doReallocate
|
||||||
|
local.set $2
|
||||||
|
local.get $1
|
||||||
|
local.get $2
|
||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 48
|
i32.const 48
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2856,7 +2863,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 49
|
i32.const 49
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2864,14 +2871,14 @@
|
|||||||
end
|
end
|
||||||
global.get $std/runtime/ref1
|
global.get $std/runtime/ref1
|
||||||
global.get $std/runtime/barrier2
|
global.get $std/runtime/barrier2
|
||||||
call $~lib/runtime/REALLOCATE
|
call $~lib/runtime/doReallocate
|
||||||
global.set $std/runtime/ref2
|
global.set $std/runtime/ref2
|
||||||
global.get $std/runtime/ref1
|
global.get $std/runtime/ref1
|
||||||
global.get $std/runtime/ref2
|
global.get $std/runtime/ref2
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 51
|
i32.const 51
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2887,39 +2894,39 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 53
|
i32.const 53
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
end
|
end
|
||||||
global.get $std/runtime/ref2
|
global.get $std/runtime/ref2
|
||||||
local.tee $0
|
local.tee $1
|
||||||
call $~lib/runtime/ASSERT_UNREGISTERED
|
call $~lib/runtime/assertUnregistered
|
||||||
local.get $0
|
local.get $1
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.sub
|
i32.sub
|
||||||
call $~lib/memory/memory.free
|
call $~lib/memory/memory.free
|
||||||
global.get $std/runtime/barrier2
|
global.get $std/runtime/barrier2
|
||||||
call $~lib/runtime/ALLOCATE
|
call $~lib/runtime/doAllocate
|
||||||
global.set $std/runtime/ref3
|
global.set $std/runtime/ref3
|
||||||
global.get $std/runtime/ref1
|
global.get $std/runtime/ref1
|
||||||
global.get $std/runtime/ref3
|
global.get $std/runtime/ref3
|
||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 56
|
i32.const 56
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
end
|
end
|
||||||
global.get $std/runtime/barrier1
|
global.get $std/runtime/barrier1
|
||||||
call $~lib/runtime/ALLOCATE
|
call $~lib/runtime/doAllocate
|
||||||
global.set $std/runtime/ref4
|
global.set $std/runtime/ref4
|
||||||
global.get $std/runtime/ref4
|
global.get $std/runtime/ref4
|
||||||
local.tee $0
|
local.tee $0
|
||||||
call $~lib/runtime/ASSERT_UNREGISTERED
|
call $~lib/runtime/assertUnregistered
|
||||||
local.get $0
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.sub
|
i32.sub
|
||||||
@ -2932,7 +2939,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 60
|
i32.const 60
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2948,7 +2955,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 62
|
i32.const 62
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2960,14 +2967,14 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 63
|
i32.const 63
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
unreachable
|
unreachable
|
||||||
end
|
end
|
||||||
i32.const 10
|
i32.const 10
|
||||||
call $~lib/runtime/ALLOCATE
|
call $~lib/runtime/doAllocate
|
||||||
global.set $std/runtime/ref5
|
global.set $std/runtime/ref5
|
||||||
global.get $std/runtime/ref5
|
global.get $std/runtime/ref5
|
||||||
i32.const 16
|
i32.const 16
|
||||||
@ -2977,7 +2984,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 66
|
i32.const 66
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
@ -2993,7 +3000,7 @@
|
|||||||
i32.ne
|
i32.ne
|
||||||
if
|
if
|
||||||
i32.const 0
|
i32.const 0
|
||||||
i32.const 72
|
i32.const 88
|
||||||
i32.const 67
|
i32.const 67
|
||||||
i32.const 0
|
i32.const 0
|
||||||
call $~lib/env/abort
|
call $~lib/env/abort
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import "allocator/tlsf";
|
import "allocator/tlsf";
|
||||||
import { CLASSID, ADJUST, ALLOCATE, REALLOCATE, REGISTER, DISCARD, HEADER, HEADER_SIZE, HEADER_MAGIC } from "runtime";
|
import { CLASSID, ADJUSTOBLOCK, ALLOCATE, REALLOCATE, REGISTER, DISCARD, HEADER, HEADER_SIZE, HEADER_MAGIC } from "runtime";
|
||||||
|
|
||||||
var register_ref: usize = 0;
|
var register_ref: usize = 0;
|
||||||
|
|
||||||
@ -26,16 +26,16 @@ function isPowerOf2(x: i32): bool {
|
|||||||
return x != 0 && (x & (x - 1)) == 0;
|
return x != 0 && (x & (x - 1)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(ADJUST(0) > 0);
|
assert(ADJUSTOBLOCK(0) > 0);
|
||||||
for (let i = 0; i < 9000; ++i) {
|
for (let i = 0; i < 9000; ++i) {
|
||||||
assert(isPowerOf2(ADJUST(i)));
|
assert(isPowerOf2(ADJUSTOBLOCK(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
var barrier1 = ADJUST(0);
|
var barrier1 = ADJUSTOBLOCK(0);
|
||||||
var barrier2 = barrier1 + 1;
|
var barrier2 = barrier1 + 1;
|
||||||
while (ADJUST(barrier2 + 1) == ADJUST(barrier2)) ++barrier2;
|
while (ADJUSTOBLOCK(barrier2 + 1) == ADJUSTOBLOCK(barrier2)) ++barrier2;
|
||||||
var barrier3 = barrier2 + 1;
|
var barrier3 = barrier2 + 1;
|
||||||
while (ADJUST(barrier3 + 1) == ADJUST(barrier3)) ++barrier3;
|
while (ADJUSTOBLOCK(barrier3 + 1) == ADJUSTOBLOCK(barrier3)) ++barrier3;
|
||||||
|
|
||||||
trace("barrier1", 1, barrier1);
|
trace("barrier1", 1, barrier1);
|
||||||
trace("barrier2", 1, barrier2);
|
trace("barrier2", 1, barrier2);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -37,7 +37,7 @@
|
|||||||
(export "memory" (memory $0))
|
(export "memory" (memory $0))
|
||||||
(export "table" (table $0))
|
(export "table" (table $0))
|
||||||
(start $start)
|
(start $start)
|
||||||
(func $~lib/runtime/adjustToBlock (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/ADJUSTOBLOCK (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
local.get $0
|
local.get $0
|
||||||
@ -137,7 +137,7 @@
|
|||||||
(func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/doAllocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
(local $1 i32)
|
(local $1 i32)
|
||||||
local.get $0
|
local.get $0
|
||||||
call $~lib/runtime/adjustToBlock
|
call $~lib/runtime/ADJUSTOBLOCK
|
||||||
call $~lib/memory/memory.allocate
|
call $~lib/memory/memory.allocate
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $1
|
local.get $1
|
||||||
@ -196,261 +196,252 @@
|
|||||||
(func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
(func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
(local $5 i32)
|
(local $5 i64)
|
||||||
(local $6 i32)
|
|
||||||
(local $7 i32)
|
|
||||||
(local $8 i64)
|
|
||||||
block $~lib/util/memory/memset|inlined.0
|
block $~lib/util/memory/memset|inlined.0
|
||||||
local.get $0
|
|
||||||
local.set $3
|
|
||||||
local.get $1
|
|
||||||
local.set $4
|
|
||||||
local.get $2
|
local.get $2
|
||||||
local.set $5
|
|
||||||
local.get $5
|
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 6
|
i32.const 6
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
i32.const 0
|
i32.const 0
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.sub
|
i32.sub
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.and
|
i32.and
|
||||||
local.set $6
|
|
||||||
local.get $3
|
|
||||||
local.get $6
|
|
||||||
i32.add
|
|
||||||
local.set $3
|
local.set $3
|
||||||
local.get $5
|
local.get $0
|
||||||
local.get $6
|
local.get $3
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
|
local.get $2
|
||||||
|
local.get $3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const -4
|
i32.const -4
|
||||||
i32.and
|
i32.and
|
||||||
local.set $5
|
local.set $2
|
||||||
i32.const -1
|
i32.const -1
|
||||||
i32.const 255
|
i32.const 255
|
||||||
i32.div_u
|
i32.div_u
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.const 255
|
i32.const 255
|
||||||
i32.and
|
i32.and
|
||||||
i32.mul
|
i32.mul
|
||||||
local.set $7
|
local.set $4
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 12
|
i32.const 12
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 12
|
i32.const 12
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 20
|
i32.const 20
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 28
|
i32.const 28
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 20
|
i32.const 20
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
i32.const 24
|
i32.const 24
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.and
|
i32.and
|
||||||
i32.add
|
i32.add
|
||||||
local.set $6
|
|
||||||
local.get $3
|
|
||||||
local.get $6
|
|
||||||
i32.add
|
|
||||||
local.set $3
|
local.set $3
|
||||||
local.get $5
|
local.get $0
|
||||||
local.get $6
|
local.get $3
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
|
local.get $2
|
||||||
|
local.get $3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $7
|
local.get $4
|
||||||
i64.extend_i32_u
|
i64.extend_i32_u
|
||||||
local.get $7
|
local.get $4
|
||||||
i64.extend_i32_u
|
i64.extend_i32_u
|
||||||
i64.const 32
|
i64.const 32
|
||||||
i64.shl
|
i64.shl
|
||||||
i64.or
|
i64.or
|
||||||
local.set $8
|
local.set $5
|
||||||
block $break|0
|
block $break|0
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
|
||||||
i64.store
|
|
||||||
local.get $5
|
local.get $5
|
||||||
|
i64.store
|
||||||
|
local.get $2
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.add
|
i32.add
|
||||||
local.set $3
|
local.set $0
|
||||||
end
|
end
|
||||||
br $continue|0
|
br $continue|0
|
||||||
end
|
end
|
||||||
|
@ -1571,94 +1571,91 @@
|
|||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
block $~lib/util/memory/memmove|inlined.0
|
block $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $2
|
|
||||||
local.set $3
|
|
||||||
local.get $1
|
|
||||||
local.get $0
|
local.get $0
|
||||||
local.tee $2
|
local.get $1
|
||||||
i32.eq
|
i32.eq
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
|
||||||
i32.add
|
|
||||||
local.get $2
|
local.get $2
|
||||||
|
i32.add
|
||||||
|
local.get $0
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
|
local.get $0
|
||||||
local.get $2
|
local.get $2
|
||||||
local.get $3
|
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.set $0
|
local.set $3
|
||||||
end
|
end
|
||||||
local.get $0
|
local.get $3
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
call $~lib/util/memory/memcpy
|
call $~lib/util/memory/memcpy
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $3
|
local.set $2
|
||||||
local.get $2
|
local.get $0
|
||||||
local.tee $4
|
local.tee $4
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $2
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $4
|
local.get $4
|
||||||
local.get $0
|
local.get $3
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
br $continue|0
|
br $continue|0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|1
|
loop $continue|1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
|
||||||
i32.const 8
|
|
||||||
i32.sub
|
|
||||||
local.set $3
|
|
||||||
local.get $2
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.sub
|
||||||
local.set $2
|
local.set $2
|
||||||
|
local.get $0
|
||||||
|
i32.const 8
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
@ -1668,26 +1665,26 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|2
|
loop $continue|2
|
||||||
local.get $3
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.tee $4
|
local.tee $4
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $2
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $4
|
local.get $4
|
||||||
local.get $0
|
local.get $3
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $3
|
local.set $2
|
||||||
br $continue|2
|
br $continue|2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1695,29 +1692,29 @@
|
|||||||
local.get $1
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
loop $continue|3
|
loop $continue|3
|
||||||
|
local.get $0
|
||||||
local.get $2
|
local.get $2
|
||||||
local.get $3
|
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -1725,18 +1722,18 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|4
|
loop $continue|4
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
@ -1745,16 +1742,16 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|5
|
loop $continue|5
|
||||||
local.get $3
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
|
@ -245,7 +245,7 @@
|
|||||||
i32.add
|
i32.add
|
||||||
i32.load16_u
|
i32.load16_u
|
||||||
)
|
)
|
||||||
(func $~lib/runtime/adjustToBlock (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/ADJUSTOBLOCK (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.const 32
|
i32.const 32
|
||||||
local.get $0
|
local.get $0
|
||||||
@ -345,7 +345,7 @@
|
|||||||
(func $~lib/runtime/doAllocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
(func $~lib/runtime/doAllocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
|
||||||
(local $1 i32)
|
(local $1 i32)
|
||||||
local.get $0
|
local.get $0
|
||||||
call $~lib/runtime/adjustToBlock
|
call $~lib/runtime/ADJUSTOBLOCK
|
||||||
call $~lib/memory/memory.allocate
|
call $~lib/memory/memory.allocate
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $1
|
local.get $1
|
||||||
@ -2014,87 +2014,78 @@
|
|||||||
)
|
)
|
||||||
(func $~lib/memory/memory.copy (; 16 ;) (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)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
|
||||||
(local $5 i32)
|
|
||||||
(local $6 i32)
|
|
||||||
block $~lib/util/memory/memmove|inlined.0
|
block $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $0
|
local.get $0
|
||||||
local.set $3
|
|
||||||
local.get $1
|
local.get $1
|
||||||
local.set $4
|
|
||||||
local.get $2
|
|
||||||
local.set $5
|
|
||||||
local.get $3
|
|
||||||
local.get $4
|
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $4
|
local.get $1
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.tee $6
|
local.tee $3
|
||||||
if (result i32)
|
if (result i32)
|
||||||
local.get $6
|
|
||||||
else
|
|
||||||
local.get $3
|
local.get $3
|
||||||
local.get $5
|
else
|
||||||
|
local.get $0
|
||||||
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.le_u
|
i32.le_u
|
||||||
end
|
end
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $4
|
local.get $1
|
||||||
local.get $5
|
local.get $2
|
||||||
call $~lib/util/memory/memcpy
|
call $~lib/util/memory/memcpy
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
block $break|0
|
block $break|0
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
block (result i32)
|
block (result i32)
|
||||||
local.get $3
|
local.get $0
|
||||||
local.tee $6
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $3
|
local.set $0
|
||||||
local.get $6
|
local.get $3
|
||||||
end
|
end
|
||||||
block (result i32)
|
block (result i32)
|
||||||
local.get $4
|
local.get $1
|
||||||
local.tee $6
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $4
|
local.set $1
|
||||||
local.get $6
|
local.get $3
|
||||||
end
|
end
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -2105,27 +2096,27 @@
|
|||||||
end
|
end
|
||||||
block $break|1
|
block $break|1
|
||||||
loop $continue|1
|
loop $continue|1
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $4
|
local.get $1
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.set $3
|
local.set $0
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.set $4
|
local.set $1
|
||||||
end
|
end
|
||||||
br $continue|1
|
br $continue|1
|
||||||
end
|
end
|
||||||
@ -2134,67 +2125,67 @@
|
|||||||
end
|
end
|
||||||
block $break|2
|
block $break|2
|
||||||
loop $continue|2
|
loop $continue|2
|
||||||
local.get $5
|
local.get $2
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
block (result i32)
|
block (result i32)
|
||||||
local.get $3
|
local.get $0
|
||||||
local.tee $6
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $3
|
local.set $0
|
||||||
local.get $6
|
local.get $3
|
||||||
end
|
end
|
||||||
block (result i32)
|
block (result i32)
|
||||||
local.get $4
|
local.get $1
|
||||||
local.tee $6
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $4
|
local.set $1
|
||||||
local.get $6
|
local.get $3
|
||||||
end
|
end
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
end
|
end
|
||||||
br $continue|2
|
br $continue|2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
block $break|3
|
block $break|3
|
||||||
loop $continue|3
|
loop $continue|3
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $5
|
local.tee $2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -2205,20 +2196,20 @@
|
|||||||
end
|
end
|
||||||
block $break|4
|
block $break|4
|
||||||
loop $continue|4
|
loop $continue|4
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
@ -2230,16 +2221,16 @@
|
|||||||
end
|
end
|
||||||
block $break|5
|
block $break|5
|
||||||
loop $continue|5
|
loop $continue|5
|
||||||
local.get $5
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $5
|
local.tee $2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -3515,261 +3506,252 @@
|
|||||||
(func $~lib/memory/memory.fill (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
(func $~lib/memory/memory.fill (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
(local $5 i32)
|
(local $5 i64)
|
||||||
(local $6 i32)
|
|
||||||
(local $7 i32)
|
|
||||||
(local $8 i64)
|
|
||||||
block $~lib/util/memory/memset|inlined.0
|
block $~lib/util/memory/memset|inlined.0
|
||||||
local.get $0
|
|
||||||
local.set $3
|
|
||||||
local.get $1
|
|
||||||
local.set $4
|
|
||||||
local.get $2
|
local.get $2
|
||||||
local.set $5
|
|
||||||
local.get $5
|
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 2
|
i32.const 2
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 6
|
i32.const 6
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.add
|
i32.add
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
i32.const 0
|
i32.const 0
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.sub
|
i32.sub
|
||||||
i32.const 3
|
i32.const 3
|
||||||
i32.and
|
i32.and
|
||||||
local.set $6
|
|
||||||
local.get $3
|
|
||||||
local.get $6
|
|
||||||
i32.add
|
|
||||||
local.set $3
|
local.set $3
|
||||||
local.get $5
|
local.get $0
|
||||||
local.get $6
|
local.get $3
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
|
local.get $2
|
||||||
|
local.get $3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const -4
|
i32.const -4
|
||||||
i32.and
|
i32.and
|
||||||
local.set $5
|
local.set $2
|
||||||
i32.const -1
|
i32.const -1
|
||||||
i32.const 255
|
i32.const 255
|
||||||
i32.div_u
|
i32.div_u
|
||||||
local.get $4
|
local.get $1
|
||||||
i32.const 255
|
i32.const 255
|
||||||
i32.and
|
i32.and
|
||||||
i32.mul
|
i32.mul
|
||||||
local.set $7
|
local.set $4
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 12
|
i32.const 12
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.le_u
|
i32.le_u
|
||||||
if
|
if
|
||||||
br $~lib/util/memory/memset|inlined.0
|
br $~lib/util/memory/memset|inlined.0
|
||||||
end
|
end
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 12
|
i32.const 12
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 20
|
i32.const 20
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.add
|
i32.add
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 28
|
i32.const 28
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 20
|
i32.const 20
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.sub
|
i32.sub
|
||||||
local.get $7
|
local.get $4
|
||||||
i32.store
|
i32.store
|
||||||
i32.const 24
|
i32.const 24
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 4
|
i32.const 4
|
||||||
i32.and
|
i32.and
|
||||||
i32.add
|
i32.add
|
||||||
local.set $6
|
|
||||||
local.get $3
|
|
||||||
local.get $6
|
|
||||||
i32.add
|
|
||||||
local.set $3
|
local.set $3
|
||||||
local.get $5
|
local.get $0
|
||||||
local.get $6
|
local.get $3
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
|
local.get $2
|
||||||
|
local.get $3
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $7
|
local.get $4
|
||||||
i64.extend_i32_u
|
i64.extend_i32_u
|
||||||
local.get $7
|
local.get $4
|
||||||
i64.extend_i32_u
|
i64.extend_i32_u
|
||||||
i64.const 32
|
i64.const 32
|
||||||
i64.shl
|
i64.shl
|
||||||
i64.or
|
i64.or
|
||||||
local.set $8
|
local.set $5
|
||||||
block $break|0
|
block $break|0
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $5
|
local.get $2
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
block
|
block
|
||||||
local.get $3
|
local.get $0
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 16
|
i32.const 16
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
local.get $5
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 24
|
i32.const 24
|
||||||
i32.add
|
i32.add
|
||||||
local.get $8
|
|
||||||
i64.store
|
|
||||||
local.get $5
|
local.get $5
|
||||||
|
i64.store
|
||||||
|
local.get $2
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $5
|
local.set $2
|
||||||
local.get $3
|
local.get $0
|
||||||
i32.const 32
|
i32.const 32
|
||||||
i32.add
|
i32.add
|
||||||
local.set $3
|
local.set $0
|
||||||
end
|
end
|
||||||
br $continue|0
|
br $continue|0
|
||||||
end
|
end
|
||||||
@ -3928,10 +3910,10 @@
|
|||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
local.get $1
|
local.get $1
|
||||||
call $~lib/runtime/adjustToBlock
|
call $~lib/runtime/ADJUSTOBLOCK
|
||||||
local.set $4
|
local.set $4
|
||||||
local.get $3
|
local.get $3
|
||||||
call $~lib/runtime/adjustToBlock
|
call $~lib/runtime/ADJUSTOBLOCK
|
||||||
i32.const 0
|
i32.const 0
|
||||||
local.get $0
|
local.get $0
|
||||||
global.get $~lib/memory/HEAP_BASE
|
global.get $~lib/memory/HEAP_BASE
|
||||||
|
@ -2717,94 +2717,91 @@
|
|||||||
(local $3 i32)
|
(local $3 i32)
|
||||||
(local $4 i32)
|
(local $4 i32)
|
||||||
block $~lib/util/memory/memmove|inlined.0
|
block $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $2
|
|
||||||
local.set $3
|
|
||||||
local.get $1
|
|
||||||
local.get $0
|
local.get $0
|
||||||
local.tee $2
|
local.get $1
|
||||||
i32.eq
|
i32.eq
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
|
||||||
i32.add
|
|
||||||
local.get $2
|
local.get $2
|
||||||
|
i32.add
|
||||||
|
local.get $0
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.eqz
|
i32.eqz
|
||||||
if
|
if
|
||||||
|
local.get $0
|
||||||
local.get $2
|
local.get $2
|
||||||
local.get $3
|
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.le_u
|
i32.le_u
|
||||||
local.set $0
|
local.set $3
|
||||||
end
|
end
|
||||||
local.get $0
|
local.get $3
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
call $~lib/util/memory/memcpy
|
call $~lib/util/memory/memcpy
|
||||||
br $~lib/util/memory/memmove|inlined.0
|
br $~lib/util/memory/memmove|inlined.0
|
||||||
end
|
end
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.lt_u
|
i32.lt_u
|
||||||
if
|
if
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
loop $continue|0
|
loop $continue|0
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $3
|
local.set $2
|
||||||
local.get $2
|
local.get $0
|
||||||
local.tee $4
|
local.tee $4
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $2
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $4
|
local.get $4
|
||||||
local.get $0
|
local.get $3
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
br $continue|0
|
br $continue|0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|1
|
loop $continue|1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
local.get $3
|
|
||||||
i32.const 8
|
|
||||||
i32.sub
|
|
||||||
local.set $3
|
|
||||||
local.get $2
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.sub
|
||||||
local.set $2
|
local.set $2
|
||||||
|
local.get $0
|
||||||
|
i32.const 8
|
||||||
|
i32.add
|
||||||
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.add
|
i32.add
|
||||||
@ -2814,26 +2811,26 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|2
|
loop $continue|2
|
||||||
local.get $3
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $2
|
local.get $0
|
||||||
local.tee $4
|
local.tee $4
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $2
|
local.set $0
|
||||||
local.get $1
|
local.get $1
|
||||||
local.tee $0
|
local.tee $3
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.add
|
i32.add
|
||||||
local.set $1
|
local.set $1
|
||||||
local.get $4
|
local.get $4
|
||||||
local.get $0
|
local.get $3
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.set $3
|
local.set $2
|
||||||
br $continue|2
|
br $continue|2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -2841,29 +2838,29 @@
|
|||||||
local.get $1
|
local.get $1
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
i32.eq
|
i32.eq
|
||||||
if
|
if
|
||||||
loop $continue|3
|
loop $continue|3
|
||||||
|
local.get $0
|
||||||
local.get $2
|
local.get $2
|
||||||
local.get $3
|
|
||||||
i32.add
|
i32.add
|
||||||
i32.const 7
|
i32.const 7
|
||||||
i32.and
|
i32.and
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.eqz
|
i32.eqz
|
||||||
br_if $~lib/util/memory/memmove|inlined.0
|
br_if $~lib/util/memory/memmove|inlined.0
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
@ -2871,18 +2868,18 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|4
|
loop $continue|4
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.ge_u
|
i32.ge_u
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 8
|
i32.const 8
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i64.load
|
i64.load
|
||||||
i64.store
|
i64.store
|
||||||
@ -2891,16 +2888,16 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
loop $continue|5
|
loop $continue|5
|
||||||
local.get $3
|
local.get $2
|
||||||
if
|
if
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.const 1
|
i32.const 1
|
||||||
i32.sub
|
i32.sub
|
||||||
local.tee $3
|
local.tee $2
|
||||||
local.get $2
|
local.get $0
|
||||||
i32.add
|
i32.add
|
||||||
local.get $1
|
local.get $1
|
||||||
local.get $3
|
local.get $2
|
||||||
i32.add
|
i32.add
|
||||||
i32.load8_u
|
i32.load8_u
|
||||||
i32.store8
|
i32.store8
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user