Use new RC utility for inlining so we can eventually inline everything

This commit is contained in:
dcode 2019-05-29 03:41:03 +02:00
parent d9fbf8a2dd
commit b19005f5bb
28 changed files with 2127 additions and 2108 deletions

View File

@ -84,7 +84,8 @@ import {
import {
FlowFlags,
Flow,
LocalFlags
LocalFlags,
findUsedLocals
} from "./flow";
import {
@ -2523,7 +2524,16 @@ export class Compiler extends DiagnosticEmitter {
declaration.isAny(CommonFlags.LET | CommonFlags.CONST) ||
flow.is(FlowFlags.INLINE_CONTEXT)
) { // here: not top-level
local = flow.addScopedLocal(name, type, declaration.name); // reports if duplicate
let existingLocal = flow.getScopedLocal(name);
if (existingLocal) {
this.error(
DiagnosticCode.Duplicate_identifier_0,
declaration.name.range, declaration.name.text
);
local = existingLocal;
} else {
local = flow.addScopedLocal(name, type);
}
if (isConst) flow.setLocalFlag(local.index, LocalFlags.CONSTANT);
} else {
if (flow.lookupLocal(name)) {
@ -5888,7 +5898,6 @@ export class Compiler extends DiagnosticEmitter {
expression.arguments,
expression,
thisExpr,
false,
contextualFlags
);
}
@ -6114,7 +6123,6 @@ export class Compiler extends DiagnosticEmitter {
argumentExpressions: Expression[],
reportNode: Node,
thisArg: ExpressionRef = 0,
inlineCanAlias: bool = false,
contextualFlags: ContextualFlags = ContextualFlags.NONE
): ExpressionRef {
var numArguments = argumentExpressions.length;
@ -6139,7 +6147,7 @@ export class Compiler extends DiagnosticEmitter {
);
} else {
this.currentInlineFunctions.push(instance);
let expr = this.compileCallInlinePrechecked(instance, argumentExpressions, thisArg, inlineCanAlias, (contextualFlags & ContextualFlags.WILL_DROP) != 0);
let expr = this.compileCallInlinePrechecked(instance, argumentExpressions, thisArg, (contextualFlags & ContextualFlags.WILL_DROP) != 0);
this.currentInlineFunctions.pop();
return expr;
}
@ -6203,7 +6211,6 @@ export class Compiler extends DiagnosticEmitter {
instance: Function,
argumentExpressions: Expression[],
thisArg: ExpressionRef = 0,
canAlias: bool = false,
immediatelyDropped: bool = false
): ExpressionRef {
var numArguments = argumentExpressions.length;
@ -6211,93 +6218,76 @@ export class Compiler extends DiagnosticEmitter {
var parameterTypes = signature.parameterTypes;
assert(numArguments <= parameterTypes.length);
var args = new Array<ExpressionRef>(numArguments);
var flow = this.currentFlow;
// compile arguments possibly using their own temp locals
var temps = flow.blockLocalsBeforeInlining(instance);
for (let i = 0; i < numArguments; ++i) {
args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i],
ContextualFlags.IMPLICIT
);
}
flow.unblockLocals(temps);
return this.makeCallInlinePrechecked(instance, args, thisArg, canAlias, immediatelyDropped);
return this.makeCallInlinePrechecked(instance, args, thisArg, immediatelyDropped);
}
makeCallInlinePrechecked(
instance: Function,
args: ExpressionRef[],
operands: ExpressionRef[] | null,
thisArg: ExpressionRef = 0,
canAlias: bool = false,
immediatelyDropped: bool = false
): ExpressionRef {
// CAUTION: Imagine a call like `theCall(a, b)`. Unless canAlias, inlining needs a temporary local for
// each argument, looking something like `BLOCK { t1 = a, t2 = b, inlinedTheCall }`. Now, if argument b,
// which is compiled beforehand, itself required a temporary local, it is likely that it did pick `t1`
// for this, making it something like `BLOCK { t1 = a, t2 = (t1 = c, t1), inlinedTheCall }`, which is
// overwriting t1. Hence, whenever makeCallInline is used, this condition must be taken into account.
// Flows provide the helpers Flow#blockLocalsBeforeInlining and Flow#unblockLocals for this.
var module = this.module;
var numArguments = operands ? operands.length : 0;
var signature = instance.signature;
var parameterTypes = signature.parameterTypes;
var numParameters = parameterTypes.length;
// Create a new inline flow and use it to compile the function as a block
var previousFlow = this.currentFlow;
var flow = Flow.createInline(previousFlow.parentFunction, instance);
var body = [];
var usedLocals = new Set<i32>();
// Convert provided call arguments to temporary locals
// Prepare compiled arguments right to left, keeping track of used locals.
for (let i = numArguments - 1; i >= 0; --i) {
// This is necessary because a later expression must not set an earlier argument local, which
// is also just a temporary, when being executed. Take for example `t1=1, t2=(t1 = 2)`, where
// the right expression would reassign the foregoing argument local. So, we iterate from right
// to left, remembering what's used later, and don't use these for earlier arguments, making
// the example above essentially `t2=1, t1=(t1 = 2)`.
let paramExpr = operands![i];
let paramType = parameterTypes[i];
let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), paramType, usedLocals);
findUsedLocals(paramExpr, usedLocals);
// Normal function wouldn't know about wrap/nonnull states, but inlining does:
if (!previousFlow.canOverflow(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);
if (flow.isNonnull(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);
if (paramType.isManaged) {
flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);
body.unshift(
module.local_set(argumentLocal.index,
this.makeRetain(paramExpr)
)
);
} else {
body.unshift(
module.local_set(argumentLocal.index, paramExpr)
);
}
}
if (thisArg) {
let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);
let thisType = assert(instance.signature.thisType);
if (canAlias && getExpressionId(thisArg) == ExpressionId.LocalGet) {
flow.addScopedAlias(CommonSymbols.this_, thisType, getLocalGetIndex(thisArg));
let baseInstance = (<Class>classInstance).base;
if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, getLocalGetIndex(thisArg));
} else {
let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType);
// No need to retain `this` as it can't be reassigned and thus can't become prematurely released
body.push(
module.local_set(thisLocal.index, thisArg)
);
let baseInstance = (<Class>classInstance).base;
if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index);
}
let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType, usedLocals);
// No need to retain `this` as it can't be reassigned and thus can't become prematurely released
body.unshift(
module.local_set(thisLocal.index, thisArg)
);
let baseInstance = (<Class>classInstance).base;
if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index);
} else {
assert(!instance.signature.thisType);
}
var numArguments = args.length;
var signature = instance.signature;
var parameterTypes = signature.parameterTypes;
for (let i = 0; i < numArguments; ++i) {
let paramExpr = args[i];
let paramType = parameterTypes[i];
if (canAlias && getExpressionId(paramExpr) == ExpressionId.LocalGet) {
flow.addScopedAlias(signature.getParameterName(i), paramType, getLocalGetIndex(paramExpr));
} else {
let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), paramType);
// Normal function wouldn't know about wrap/nonnull states, but inlining does:
if (!previousFlow.canOverflow(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);
if (flow.isNonnull(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);
if (paramType.isManaged) {
flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);
body.push(
module.local_set(argumentLocal.index,
this.makeRetain(paramExpr)
)
);
} else {
body.push(
module.local_set(argumentLocal.index, paramExpr)
);
}
}
}
// Compile optional parameter initializers in the scope of the inlined flow
// Compile omitted arguments with final argument locals blocked. Doesn't need to take care of
// side-effects within earlier expressions because these already happened on set.
this.currentFlow = flow;
var numParameters = signature.parameterTypes.length;
for (let i = numArguments; i < numParameters; ++i) {
let initType = parameterTypes[i];
let initExpr = this.compileExpression(
@ -6305,24 +6295,20 @@ export class Compiler extends DiagnosticEmitter {
initType,
ContextualFlags.IMPLICIT
);
if (canAlias && getExpressionId(initExpr) == ExpressionId.LocalGet) {
flow.addScopedAlias(signature.getParameterName(i), initType, getLocalGetIndex(initExpr));
let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), initType);
if (!flow.canOverflow(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);
if (flow.isNonnull(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);
if (initType.isManaged) {
flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);
body.push(
module.local_set(argumentLocal.index,
this.makeRetain(initExpr)
)
);
} else {
let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), initType);
if (!flow.canOverflow(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);
if (flow.isNonnull(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);
if (initType.isManaged) {
flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);
body.push(
module.local_set(argumentLocal.index,
this.makeRetain(initExpr)
)
);
} else {
body.push(
module.local_set(argumentLocal.index, initExpr)
);
}
body.push(
module.local_set(argumentLocal.index, initExpr)
);
}
}
@ -6539,7 +6525,7 @@ export class Compiler extends DiagnosticEmitter {
var flow = this.currentFlow;
var usizeType = this.options.usizeType;
var nativeSizeType = this.options.nativeSizeType;
var temp1 = flow.getTempLocal(usizeType, oldExpr);
var temp1 = flow.getTempLocal(usizeType, findUsedLocals(oldExpr));
var temp2 = flow.getAndFreeTempLocal(usizeType);
flow.freeTempLocal(temp1);
return module.block(null, [
@ -6567,7 +6553,7 @@ export class Compiler extends DiagnosticEmitter {
var flow = this.currentFlow;
var usizeType = this.options.usizeType;
var nativeSizeType = this.options.nativeSizeType;
var temp = flow.getAndFreeTempLocal(usizeType, oldExpr);
var temp = flow.getAndFreeTempLocal(usizeType, findUsedLocals(oldExpr));
return module.block(null, [
module.local_set(temp.index, newExpr),
this.makeRelease(oldExpr),
@ -6961,7 +6947,7 @@ export class Compiler extends DiagnosticEmitter {
);
return this.compileCallDirect(indexedGet, [
expression.elementExpression
], expression, thisArg, false, contextualFlags & (ContextualFlags.WILL_DROP | ContextualFlags.SKIP_AUTORELEASE));
], expression, thisArg, contextualFlags & (ContextualFlags.WILL_DROP | ContextualFlags.SKIP_AUTORELEASE));
}
}
this.error(
@ -7931,7 +7917,6 @@ export class Compiler extends DiagnosticEmitter {
argumentExpressions,
reportNode,
this.options.usizeType.toNativeZero(this.module),
false,
contextualFlags
);
if (getExpressionType(expr) != NativeType.None) { // possibly IMM_DROPPED

View File

@ -299,7 +299,7 @@ export class Flow {
}
/** Gets a free temporary local of the specified type. */
getTempLocal(type: Type, except: ExpressionRef = 0): Local {
getTempLocal(type: Type, except: Set<i32> | null = null): Local {
var parentFunction = this.parentFunction;
var temps: Local[] | null;
switch (type.toNativeType()) {
@ -313,14 +313,14 @@ export class Flow {
var local: Local;
if (except) {
if (temps && temps.length) {
let usedLocals = new Set<i32>();
traverse(except, usedLocals, findUsedLocals);
for (let i = 0, k = temps.length; i < k; ++i) {
if (!usedLocals.has(temps[i].index)) {
if (!except.has(temps[i].index)) {
local = temps[i];
let k = temps.length - 1;
while (i < k) unchecked(temps[i] = temps[i++ + 1]);
temps.length = k;
local.type = type;
local.flags = CommonFlags.NONE;
this.unsetLocalFlag(local.index, ~0);
return local;
}
@ -341,7 +341,7 @@ export class Flow {
}
/** Gets a local that sticks around until this flow is exited, and then released. */
getAutoreleaseLocal(type: Type, except: ExpressionRef = 0): Local {
getAutoreleaseLocal(type: Type, except: Set<i32> | null = null): Local {
var local = this.getTempLocal(type, except);
local.set(CommonFlags.SCOPED);
var scopedLocals = this.scopedLocals;
@ -386,30 +386,27 @@ export class Flow {
}
/** Gets and immediately frees a temporary local of the specified type. */
getAndFreeTempLocal(type: Type, except: ExpressionRef = 0): Local {
getAndFreeTempLocal(type: Type, except: Set<i32> | null = null): Local {
var local = this.getTempLocal(type, except);
this.freeTempLocal(local);
return local;
}
/** Gets the scoped local of the specified name. */
getScopedLocal(name: string): Local | null {
var scopedLocals = this.scopedLocals;
if (scopedLocals && scopedLocals.has(name)) return scopedLocals.get(name);
return null;
}
/** Adds a new scoped local of the specified name. */
addScopedLocal(name: string, type: Type, reportNode: Node | null = null): Local {
var scopedLocal = this.getTempLocal(type);
if (!this.scopedLocals) this.scopedLocals = new Map();
else {
let existingLocal = this.scopedLocals.get(name);
if (existingLocal) {
if (reportNode) {
this.parentFunction.program.error(
DiagnosticCode.Duplicate_identifier_0,
reportNode.range
);
}
return existingLocal;
}
}
addScopedLocal(name: string, type: Type, except: Set<i32> | null = null): Local {
var scopedLocal = this.getTempLocal(type, except);
var scopedLocals = this.scopedLocals;
if (!scopedLocals) this.scopedLocals = scopedLocals = new Map();
else assert(!scopedLocals.has(name));
scopedLocal.set(CommonFlags.SCOPED);
this.scopedLocals.set(name, scopedLocal);
scopedLocals.set(name, scopedLocal);
return scopedLocal;
}
@ -429,38 +426,12 @@ export class Flow {
}
}
assert(index < this.parentFunction.localsByIndex.length);
var scopedAlias = new Local(
name,
index,
type,
this.parentFunction
);
var scopedAlias = new Local(name, index, type, this.parentFunction);
// not flagged as SCOPED as it must not be free'd when the flow is finalized
this.scopedLocals.set(name, scopedAlias);
return scopedAlias;
}
/** Blocks any locals that might be used in an inlining operation. */
blockLocalsBeforeInlining(instance: Function): Local[] {
var signature = instance.signature;
var parameterTypes = signature.parameterTypes;
var numParameters = parameterTypes.length;
var temps = new Array<Local>(numParameters);
for (let i = 0; i < numParameters; ++i) {
temps[i] = this.getTempLocal(parameterTypes[i]);
}
var thisType = signature.thisType;
if (thisType) temps.push(this.getTempLocal(thisType));
return temps;
}
/** Unblocks the specified locals. */
unblockLocals(temps: Local[]): void {
for (let i = 0, k = temps.length; i < k; ++i) {
this.freeTempLocal(temps[i]);
}
}
/** Frees this flow's scoped variables and returns its parent flow. */
freeScopedLocals(): void {
if (this.scopedLocals) {
@ -1080,8 +1051,14 @@ function canConversionOverflow(fromType: Type, toType: Type): bool {
|| fromType.is(TypeFlags.SIGNED) != toType.is(TypeFlags.SIGNED);
}
/** Finds all indexes of locals used in the specified expression. */
export function findUsedLocals(expr: ExpressionRef, used: Set<i32> = new Set()): Set<i32> {
traverse(expr, used, findUsedLocalsVisit);
return used;
}
/** A visitor function for use with `traverse` that finds all indexes of used locals. */
function findUsedLocals(expr: ExpressionRef, used: Set<i32>): void {
function findUsedLocalsVisit(expr: ExpressionRef, used: Set<i32>): void {
switch (getExpressionId(expr)) {
case ExpressionId.LocalGet: {
used.add(getLocalGetIndex(expr));
@ -1091,6 +1068,6 @@ function findUsedLocals(expr: ExpressionRef, used: Set<i32>): void {
used.add(getLocalSetIndex(expr));
// fall-through for value
}
default: traverse(expr, used, findUsedLocals);
default: traverse(expr, used, findUsedLocalsVisit);
}
}

View File

@ -7,6 +7,7 @@
(global $inlining-blocklocals/b (mut i32) (i32.const 2))
(global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0))
(global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0))
(global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0))
(export "memory" (memory $0))
(start $start)
(func $inlining-blocklocals/test (; 1 ;) (type $FUNCSIG$v)
@ -20,13 +21,15 @@
global.set $inlining-blocklocals/theCall_a
local.get $0
global.set $inlining-blocklocals/theCall_b
i32.const 3
global.set $inlining-blocklocals/theCall_c
global.get $inlining-blocklocals/theCall_a
i32.const 1
i32.ne
if
i32.const 0
i32.const 24
i32.const 16
i32.const 18
i32.const 2
call $~lib/builtins/abort
unreachable
@ -37,7 +40,18 @@
if
i32.const 0
i32.const 24
i32.const 17
i32.const 19
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $inlining-blocklocals/theCall_c
i32.const 3
i32.ne
if
i32.const 0
i32.const 24
i32.const 20
i32.const 2
call $~lib/builtins/abort
unreachable

View File

@ -2,18 +2,22 @@ var b: i32 = 2;
var theCall_a: i32;
var theCall_b: i32;
var theCall_c: i32;
@inline function theCall(a: i32, b: i32): void {
@inline function theCall(a: i32, b: i32, c: i32): void {
theCall_a = a;
theCall_b = b;
theCall_c = c;
}
function test(): void {
var a = 1;
// no blocking: t1 = a; t2 = (t1 = b) + 1, t1; theCall ✖
// blocking: t1 = a; t2 = (t3 = b) + 1, t3; theCall ✔
theCall(a, b++);
// see comment in Compiler#makeCallInlinePrechecked
// theCall($3, $2=[except $3], $1=[except $3,$2])
theCall(a++, b++, ++a);
assert(theCall_a == 1);
assert(theCall_b == 2);
assert(theCall_c == 3);
assert(a == 3);
}
test();

View File

@ -9,6 +9,7 @@
(global $inlining-blocklocals/b (mut i32) (i32.const 2))
(global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0))
(global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0))
(global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0))
(export "memory" (memory $0))
(start $start)
(func $inlining-blocklocals/test (; 1 ;) (type $FUNCSIG$v)
@ -19,21 +20,35 @@
i32.const 1
local.set $0
block $inlining-blocklocals/theCall|inlined.0
local.get $0
local.set $2
block (result i32)
local.get $0
local.tee $1
i32.const 1
i32.add
local.set $0
local.get $1
end
local.set $3
block (result i32)
global.get $inlining-blocklocals/b
local.tee $3
local.tee $1
i32.const 1
i32.add
global.set $inlining-blocklocals/b
local.get $3
local.get $1
end
local.set $2
local.get $0
i32.const 1
i32.add
local.tee $0
local.set $1
local.get $2
local.get $3
global.set $inlining-blocklocals/theCall_a
local.get $1
local.get $2
global.set $inlining-blocklocals/theCall_b
local.get $1
global.set $inlining-blocklocals/theCall_c
end
global.get $inlining-blocklocals/theCall_a
i32.const 1
@ -42,7 +57,7 @@
if
i32.const 0
i32.const 24
i32.const 16
i32.const 18
i32.const 2
call $~lib/builtins/abort
unreachable
@ -54,7 +69,31 @@
if
i32.const 0
i32.const 24
i32.const 17
i32.const 19
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $inlining-blocklocals/theCall_c
i32.const 3
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 20
i32.const 2
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 3
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 21
i32.const 2
call $~lib/builtins/abort
unreachable

View File

@ -195,18 +195,18 @@
end
block $inlining/func_ii_loc|inlined.1 (result i32)
i32.const 3
local.set $4
local.get $4
local.set $3
local.get $3
local.set $6
local.get $6
local.set $5
local.get $5
i32.const 1
i32.add
local.set $4
local.get $4
local.set $2
local.get $2
local.set $6
local.get $6
i32.const 1
i32.add
local.set $3
local.get $3
end
i32.const 4
i32.eq
@ -245,10 +245,10 @@
end
block $inlining/Foo.method_static|inlined.0 (result i32)
i32.const 42
local.set $3
local.set $6
i32.const 2
local.set $2
local.get $3
local.get $6
local.get $2
i32.add
end
@ -270,7 +270,7 @@
local.get $7
local.set $4
i32.const 43
local.set $3
local.set $5
i32.const 3
local.set $2
local.get $4
@ -431,7 +431,7 @@
i32.store offset=4
local.get $3
end
local.tee $2
local.tee $3
local.set $1
local.get $1
i32.const 3
@ -444,7 +444,7 @@
i32.store offset=12
local.get $1
end
local.tee $2
local.tee $3
call $~lib/rt/stub/__retain
local.set $4
local.get $4
@ -499,7 +499,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $2
local.get $3
call $~lib/rt/stub/__release
local.get $4
call $~lib/rt/stub/__release

View File

@ -1051,31 +1051,31 @@
local.get $3
i32.const 1
i32.sub
local.tee $1
local.tee $2
i32.const 0
i32.lt_s
local.tee $2
local.tee $1
if
i32.const 0
local.get $1
local.get $2
i32.sub
local.set $1
local.set $2
end
local.get $1
local.get $2
end
local.get $1
local.get $2
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.tee $1
local.tee $2
call $~lib/util/number/utoa_simple<u32>
local.get $0
i32.const 45
i32.const 43
local.get $2
local.get $1
select
i32.store16
local.get $1
local.get $2
i32.const 2
i32.add
else

View File

@ -632,11 +632,11 @@
(local $17 i32)
(local $18 i32)
(local $19 i64)
(local $20 i32)
(local $20 i64)
(local $21 i64)
(local $22 i64)
(local $23 i64)
(local $24 i64)
(local $24 i32)
(local $25 i32)
(local $26 i32)
i32.const 0
@ -927,13 +927,13 @@
global.set $~lib/util/number/_K
block $~lib/util/number/grisuRound|inlined.0
local.get $0
local.set $20
local.set $24
local.get $15
local.set $18
local.get $5
local.set $24
local.get $19
local.set $23
local.get $19
local.set $22
local.get $16
local.get $14
i32.const 2
@ -943,10 +943,10 @@
local.get $7
i64.extend_i32_s
i64.shl
local.set $22
local.get $10
local.set $21
local.get $20
local.get $10
local.set $20
local.get $24
local.get $18
i32.const 1
i32.sub
@ -959,34 +959,34 @@
local.set $26
block $break|2
loop $continue|2
local.get $23
local.get $21
local.get $22
local.get $20
i64.lt_u
if (result i32)
local.get $24
local.get $23
i64.sub
local.get $22
i64.sub
local.get $21
i64.ge_u
else
i32.const 0
end
if (result i32)
local.get $23
local.get $22
i64.add
local.get $21
i64.add
local.get $20
i64.lt_u
if (result i32)
i32.const 1
else
local.get $21
local.get $23
i64.sub
local.get $23
local.get $20
local.get $22
i64.sub
local.get $22
i64.add
local.get $21
i64.add
local.get $20
i64.sub
i64.gt_u
end
@ -998,10 +998,10 @@
i32.const 1
i32.sub
local.set $26
local.get $23
local.get $22
local.get $21
i64.add
local.set $23
local.set $22
br $continue|2
end
end
@ -1090,58 +1090,58 @@
local.set $10
block $~lib/util/number/grisuRound|inlined.1
local.get $0
local.set $26
local.get $15
local.set $17
local.get $5
local.set $24
local.get $13
local.get $15
local.set $18
local.get $5
local.set $23
local.get $8
local.get $13
local.set $22
local.get $10
local.get $8
local.set $21
local.get $26
local.get $17
local.get $10
local.set $20
local.get $24
local.get $18
i32.const 1
i32.sub
i32.const 1
i32.shl
i32.add
local.set $25
local.get $25
local.set $17
local.get $17
i32.load16_u
local.set $18
local.set $26
block $break|4
loop $continue|4
local.get $23
local.get $21
local.get $22
local.get $20
i64.lt_u
if (result i32)
local.get $24
local.get $23
i64.sub
local.get $22
i64.sub
local.get $21
i64.ge_u
else
i32.const 0
end
if (result i32)
local.get $23
local.get $22
i64.add
local.get $21
i64.add
local.get $20
i64.lt_u
if (result i32)
i32.const 1
else
local.get $21
local.get $23
i64.sub
local.get $23
local.get $20
local.get $22
i64.sub
local.get $22
i64.add
local.get $21
i64.add
local.get $20
i64.sub
i64.gt_u
end
@ -1149,20 +1149,20 @@
i32.const 0
end
if
local.get $18
local.get $26
i32.const 1
i32.sub
local.set $18
local.get $23
local.set $26
local.get $22
local.get $21
i64.add
local.set $23
local.set $22
br $continue|4
end
end
end
local.get $25
local.get $18
local.get $17
local.get $26
i32.store16
end
local.get $15
@ -2789,31 +2789,31 @@
local.get $0
i32.const 4
i32.add
local.set $5
local.set $4
local.get $3
i32.const 1
i32.sub
local.set $4
local.get $4
local.set $5
local.get $5
i32.const 0
i32.lt_s
local.set $6
local.get $6
if
i32.const 0
local.get $4
local.get $5
i32.sub
local.set $4
local.set $5
end
local.get $4
local.get $5
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.set $7
block $~lib/util/number/utoa32_core|inlined.1
local.get $5
local.set $10
local.get $4
local.set $10
local.get $5
local.set $9
local.get $7
local.set $8
@ -2822,7 +2822,7 @@
local.get $8
call $~lib/util/number/utoa32_lut
end
local.get $5
local.get $4
i32.const 45
i32.const 43
local.get $6
@ -2865,46 +2865,46 @@
i32.add
i32.const 4
i32.add
local.set $4
local.set $9
local.get $3
i32.const 1
i32.sub
local.set $6
local.get $6
local.set $8
local.get $8
i32.const 0
i32.lt_s
local.set $5
local.get $5
local.set $6
local.get $6
if
i32.const 0
local.get $6
local.get $8
i32.sub
local.set $6
local.set $8
end
local.get $6
local.get $8
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.set $8
local.set $4
block $~lib/util/number/utoa32_core|inlined.2
local.get $4
local.set $11
local.get $6
local.set $10
local.get $8
local.set $9
local.get $11
local.get $10
local.get $9
local.set $11
local.get $8
local.set $5
local.get $4
local.set $10
local.get $11
local.get $5
local.get $10
call $~lib/util/number/utoa32_lut
end
local.get $4
local.get $9
i32.const 45
i32.const 43
local.get $5
local.get $6
select
i32.store16
local.get $8
local.get $4
end
i32.add
local.set $1
@ -2924,15 +2924,15 @@
)
(func $~lib/util/number/dtoa_core (; 20 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32)
(local $2 i32)
(local $3 f64)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $5 f64)
(local $6 i64)
(local $7 i32)
(local $8 i64)
(local $9 i64)
(local $10 i64)
(local $11 i32)
(local $10 i32)
(local $11 i64)
(local $12 i64)
(local $13 i32)
(local $14 i32)
@ -2965,12 +2965,12 @@
end
block $~lib/util/number/grisu2|inlined.0 (result i32)
local.get $1
local.set $3
local.get $0
local.set $5
local.get $2
local.get $0
local.set $4
local.get $3
local.get $2
local.set $3
local.get $5
i64.reinterpret_f64
local.set $6
local.get $6
@ -3006,16 +3006,16 @@
local.set $7
block $~lib/util/number/normalizedBoundaries|inlined.0
local.get $9
local.set $10
local.get $7
local.set $11
local.get $10
local.get $7
local.set $10
local.get $11
i64.const 1
i64.shl
i64.const 1
i64.add
local.set $12
local.get $11
local.get $10
i32.const 1
i32.sub
local.set $13
@ -3033,20 +3033,20 @@
i32.sub
local.set $13
i32.const 1
local.get $10
local.get $11
i64.const 4503599627370496
i64.eq
i32.add
local.set $15
local.get $12
global.set $~lib/util/number/_frc_plus
local.get $10
local.get $11
local.get $15
i64.extend_i32_s
i64.shl
i64.const 1
i64.sub
local.get $11
local.get $10
local.get $15
i32.sub
local.get $13
@ -3059,9 +3059,9 @@
end
block $~lib/util/number/getCachedPower|inlined.0
global.get $~lib/util/number/_exp
local.set $15
local.set $10
i32.const -61
local.get $15
local.get $10
i32.sub
f64.convert_i32_s
f64.const 0.30102999566398114
@ -3071,62 +3071,62 @@
local.set $16
local.get $16
i32.trunc_f64_s
local.set $14
local.get $14
local.get $14
local.set $15
local.get $15
local.get $15
f64.convert_i32_s
local.get $16
f64.ne
i32.add
local.set $14
local.get $14
local.set $15
local.get $15
i32.const 3
i32.shr_s
i32.const 1
i32.add
local.set $13
local.set $14
i32.const 348
local.get $13
local.get $14
i32.const 3
i32.shl
i32.sub
global.set $~lib/util/number/_K
i32.const 1392
local.get $13
local.get $14
call $~lib/array/Array<u64>#__unchecked_get
global.set $~lib/util/number/_frc_pow
i32.const 1616
local.get $13
local.get $14
call $~lib/array/Array<i16>#__unchecked_get
global.set $~lib/util/number/_exp_pow
end
local.get $9
i64.clz
i32.wrap_i64
local.set $13
local.set $14
local.get $9
local.get $13
local.get $14
i64.extend_i32_s
i64.shl
local.set $9
local.get $7
local.get $13
local.get $14
i32.sub
local.set $7
global.get $~lib/util/number/_frc_pow
local.set $12
global.get $~lib/util/number/_exp_pow
local.set $14
local.set $15
block $~lib/util/number/umul64f|inlined.0 (result i64)
local.get $9
local.set $17
local.get $12
local.set $10
local.set $11
local.get $17
i64.const 4294967295
i64.and
local.set $18
local.get $10
local.get $11
i64.const 4294967295
i64.and
local.set $19
@ -3134,7 +3134,7 @@
i64.const 32
i64.shr_u
local.set $20
local.get $10
local.get $11
i64.const 32
i64.shr_u
local.set $21
@ -3181,53 +3181,53 @@
local.set $24
block $~lib/util/number/umul64e|inlined.0 (result i32)
local.get $7
local.set $11
local.get $14
local.set $15
local.get $11
local.set $10
local.get $15
local.set $13
local.get $10
local.get $13
i32.add
i32.const 64
i32.add
end
local.set $15
local.set $10
block $~lib/util/number/umul64f|inlined.1 (result i64)
global.get $~lib/util/number/_frc_plus
local.set $22
local.set $17
local.get $12
local.set $11
local.get $17
i64.const 4294967295
i64.and
local.set $23
local.get $22
local.get $11
i64.const 4294967295
i64.and
local.set $22
local.get $17
i64.const 32
i64.shr_u
local.set $21
local.get $23
i64.const 4294967295
i64.and
local.get $11
i64.const 32
i64.shr_u
local.set $20
local.get $22
i64.const 32
i64.shr_u
local.set $19
local.get $23
i64.const 32
i64.shr_u
local.set $18
local.get $22
i64.mul
local.set $19
local.get $21
local.get $20
local.get $22
i64.mul
local.set $10
local.get $19
local.get $20
i64.mul
local.get $10
i64.const 32
i64.shr_u
i64.add
local.set $17
local.get $21
local.get $18
local.set $18
local.get $23
local.get $20
i64.mul
local.get $17
local.get $18
i64.const 4294967295
i64.and
i64.add
@ -3236,18 +3236,18 @@
i64.const 2147483647
i64.add
local.set $25
local.get $17
local.get $18
i64.const 32
i64.shr_u
local.set $17
local.set $18
local.get $25
i64.const 32
i64.shr_u
local.set $25
local.get $19
local.get $18
local.get $21
local.get $20
i64.mul
local.get $17
local.get $18
i64.add
local.get $25
i64.add
@ -3258,52 +3258,52 @@
block $~lib/util/number/umul64e|inlined.1 (result i32)
global.get $~lib/util/number/_exp
local.set $26
local.get $14
local.set $11
local.get $15
local.set $13
local.get $26
local.get $11
local.get $13
i32.add
i32.const 64
i32.add
end
local.set $11
local.set $26
block $~lib/util/number/umul64f|inlined.2 (result i64)
global.get $~lib/util/number/_frc_minus
local.set $10
local.get $12
local.set $17
local.get $10
local.get $12
local.set $11
local.get $17
i64.const 4294967295
i64.and
local.set $18
local.get $17
local.get $11
i64.const 4294967295
i64.and
local.set $19
local.get $10
local.get $17
i64.const 32
i64.shr_u
local.set $20
local.get $17
local.get $11
i64.const 32
i64.shr_u
local.set $21
local.get $18
local.get $19
i64.mul
local.set $23
local.set $22
local.get $20
local.get $19
i64.mul
local.get $23
local.get $22
i64.const 32
i64.shr_u
i64.add
local.set $22
local.set $23
local.get $18
local.get $21
i64.mul
local.get $22
local.get $23
i64.const 4294967295
i64.and
i64.add
@ -3312,10 +3312,10 @@
i64.const 2147483647
i64.add
local.set $27
local.get $22
local.get $23
i64.const 32
i64.shr_u
local.set $22
local.set $23
local.get $27
i64.const 32
i64.shr_u
@ -3323,7 +3323,7 @@
local.get $20
local.get $21
i64.mul
local.get $22
local.get $23
i64.add
local.get $27
i64.add
@ -3334,14 +3334,14 @@
local.get $25
local.get $27
i64.sub
local.set $22
local.get $5
local.get $24
local.get $15
local.get $25
local.get $11
local.get $22
local.set $23
local.get $4
local.get $24
local.get $10
local.get $25
local.get $26
local.get $23
local.get $3
call $~lib/util/number/genDigits
end
local.set $28

View File

@ -277,30 +277,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -432,17 +432,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -454,7 +454,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -473,17 +473,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -592,16 +592,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -625,21 +625,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -652,16 +652,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -672,8 +672,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -952,9 +952,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -962,23 +962,23 @@
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -986,37 +986,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.2
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1182,23 +1182,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1222,12 +1222,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1239,14 +1239,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -271,30 +271,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -426,17 +426,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -448,7 +448,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -467,17 +467,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -586,16 +586,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -619,21 +619,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -646,16 +646,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -666,8 +666,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -946,9 +946,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -956,23 +956,23 @@
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -980,37 +980,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.2
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1176,23 +1176,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1216,12 +1216,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1233,14 +1233,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -210,30 +210,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -365,17 +365,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -387,7 +387,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -406,17 +406,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -525,16 +525,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -558,21 +558,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -585,16 +585,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -605,8 +605,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -831,9 +831,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -841,23 +841,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -865,37 +865,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1061,23 +1061,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1101,12 +1101,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1118,14 +1118,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -210,30 +210,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -365,17 +365,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -387,7 +387,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -406,17 +406,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -525,16 +525,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -558,21 +558,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -585,16 +585,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -605,8 +605,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -831,9 +831,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -841,23 +841,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -865,37 +865,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1061,23 +1061,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1101,12 +1101,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1118,14 +1118,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -210,30 +210,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -365,17 +365,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -387,7 +387,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -406,17 +406,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -525,16 +525,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -558,21 +558,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -585,16 +585,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -605,8 +605,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -831,9 +831,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -841,23 +841,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -865,37 +865,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1061,23 +1061,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1101,12 +1101,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1118,14 +1118,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -212,30 +212,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -367,17 +367,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -389,7 +389,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -408,17 +408,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -527,16 +527,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -560,21 +560,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -587,16 +587,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -607,8 +607,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -833,9 +833,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -843,23 +843,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -867,37 +867,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1063,23 +1063,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1103,12 +1103,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1120,14 +1120,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -219,30 +219,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -374,17 +374,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -396,7 +396,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -415,17 +415,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -534,16 +534,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -567,21 +567,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -594,16 +594,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -614,8 +614,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -840,9 +840,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -850,23 +850,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -874,37 +874,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1070,23 +1070,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1110,12 +1110,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1127,14 +1127,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -208,30 +208,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -363,17 +363,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -385,7 +385,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -404,17 +404,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -523,16 +523,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -556,21 +556,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -583,16 +583,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -603,8 +603,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -829,9 +829,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -839,23 +839,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -863,37 +863,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1059,23 +1059,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1099,12 +1099,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1116,14 +1116,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -289,30 +289,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -444,17 +444,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -466,7 +466,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -485,17 +485,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -604,16 +604,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -637,21 +637,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -664,16 +664,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -684,8 +684,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -910,9 +910,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -920,23 +920,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -944,37 +944,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1140,23 +1140,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1180,12 +1180,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1197,14 +1197,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -8553,31 +8553,31 @@
local.get $3
i32.const 1
i32.sub
local.tee $1
local.tee $2
i32.const 0
i32.lt_s
local.tee $2
local.tee $1
if
i32.const 0
local.get $1
local.get $2
i32.sub
local.set $1
local.set $2
end
local.get $1
local.get $2
end
local.get $1
local.get $2
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.tee $1
local.tee $2
call $~lib/util/number/utoa_simple<u32>
local.get $0
i32.const 45
i32.const 43
local.get $2
local.get $1
select
i32.store16
local.get $1
local.get $2
i32.const 2
i32.add
else

File diff suppressed because it is too large Load Diff

View File

@ -157,25 +157,25 @@
(local $6 i64)
block $~lib/date/Date.UTC|inlined.0 (result i64)
i32.const 1970
local.set $5
i32.const 0
local.set $4
i32.const 1
local.set $3
i32.const 0
local.set $2
i32.const 0
local.set $1
i32.const 0
i32.const 1
local.set $0
i32.const 0
local.set $3
i32.const 0
local.set $4
i32.const 0
local.set $5
i64.const 0
local.set $6
local.get $5
local.get $4
local.get $3
local.get $2
local.get $1
local.get $0
local.get $3
local.get $4
local.get $5
local.get $6
f64.convert_i64_s
call $~lib/bindings/Date/UTC

View File

@ -235,13 +235,13 @@
block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32)
i32.const 24
call $~lib/rt/stub/__retain
local.set $0
local.get $0
call $~lib/util/hash/hashStr
local.set $1
local.get $0
call $~lib/rt/stub/__release
local.get $1
call $~lib/util/hash/hashStr
local.set $0
local.get $1
call $~lib/rt/stub/__release
local.get $0
br $~lib/util/hash/HASH<~lib/string/String>|inlined.1
end
call $std/hash/check
@ -263,13 +263,13 @@
block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32)
i32.const 64
call $~lib/rt/stub/__retain
local.set $0
local.get $0
call $~lib/util/hash/hashStr
local.set $1
local.get $0
call $~lib/rt/stub/__release
local.get $1
call $~lib/util/hash/hashStr
local.set $0
local.get $1
call $~lib/rt/stub/__release
local.get $0
br $~lib/util/hash/HASH<~lib/string/String>|inlined.3
end
call $std/hash/check

View File

@ -221,30 +221,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -376,17 +376,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -398,7 +398,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -417,17 +417,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -536,16 +536,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -569,21 +569,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -596,16 +596,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -616,8 +616,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -842,9 +842,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -852,23 +852,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -876,37 +876,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1072,23 +1072,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1112,12 +1112,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1129,14 +1129,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

File diff suppressed because it is too large Load Diff

View File

@ -1799,24 +1799,24 @@
local.get $0
call $~lib/rt/stub/__retain
end
local.tee $0
local.tee $1
call $~lib/rt/stub/__retain
global.set $std/pointer/one
block $std/pointer/Pointer<std/pointer/Entry>#constructor|inlined.1 (result i32)
i32.const 0
local.set $2
i32.const 24
local.set $1
local.get $1
local.set $0
local.get $0
call $~lib/rt/stub/__retain
end
local.tee $1
local.tee $2
call $~lib/rt/stub/__retain
global.set $std/pointer/two
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.0 (result i32)
global.get $std/pointer/one
local.set $2
local.get $2
local.set $0
local.get $0
end
i32.const 8
i32.eq
@ -1831,8 +1831,8 @@
end
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.1 (result i32)
global.get $std/pointer/two
local.set $2
local.get $2
local.set $0
local.get $0
end
i32.const 24
i32.eq
@ -1847,24 +1847,24 @@
end
block $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.0 (result i32)
global.get $std/pointer/one
local.set $2
local.get $2
local.set $0
local.get $0
br $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.0
end
i32.const 1
i32.store
block $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.1 (result i32)
global.get $std/pointer/one
local.set $2
local.get $2
local.set $0
local.get $0
br $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.1
end
i32.const 2
i32.store offset=4
block $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.2 (result i32)
global.get $std/pointer/one
local.set $2
local.get $2
local.set $0
local.get $0
br $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.2
end
i32.load
@ -1881,8 +1881,8 @@
end
block $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.3 (result i32)
global.get $std/pointer/one
local.set $2
local.get $2
local.set $0
local.get $0
br $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.3
end
i32.load offset=4
@ -1900,7 +1900,7 @@
global.get $std/pointer/one
global.get $std/pointer/two
call $std/pointer/Pointer<std/pointer/Entry>#add
local.tee $2
local.tee $0
call $~lib/rt/stub/__retain
global.set $std/pointer/add
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.2 (result i32)
@ -1994,8 +1994,8 @@
end
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.5 (result i32)
global.get $std/pointer/one
local.set $5
local.get $5
local.set $6
local.get $6
end
i32.const 16
i32.eq
@ -2062,8 +2062,8 @@
global.set $std/pointer/two
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.7 (result i32)
global.get $std/pointer/two
local.set $7
local.get $7
local.set $8
local.get $8
end
i32.const 8
i32.eq
@ -2096,8 +2096,8 @@
end
block $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.5 (result i32)
global.get $std/pointer/two
local.set $7
local.get $7
local.set $8
local.get $8
br $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.5
end
i32.load offset=4
@ -2122,8 +2122,8 @@
call $std/pointer/Pointer<std/pointer/Entry>#set:value
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.8 (result i32)
global.get $std/pointer/one
local.set $7
local.get $7
local.set $8
local.get $8
end
block $std/pointer/Pointer<std/pointer/Entry>#get:offset|inlined.9 (result i32)
global.get $std/pointer/two
@ -2142,8 +2142,8 @@
end
block $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.7 (result i32)
global.get $std/pointer/one
local.set $7
local.get $7
local.set $8
local.get $8
br $std/pointer/Pointer<std/pointer/Entry>#get:value|inlined.7
end
i32.load
@ -2177,11 +2177,11 @@
unreachable
end
block $std/pointer/Pointer<f32>#constructor|inlined.0 (result i32)
i32.const 0
local.set $8
i32.const 0
local.set $7
local.get $7
i32.const 0
local.set $8
local.get $8
call $~lib/rt/stub/__retain
end
local.tee $7

View File

@ -221,30 +221,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -376,17 +376,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -398,7 +398,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -417,17 +417,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -536,16 +536,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -569,21 +569,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -596,16 +596,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -616,8 +616,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -842,9 +842,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -852,23 +852,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -876,37 +876,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1072,23 +1072,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1112,12 +1112,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1129,14 +1129,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4

View File

@ -4954,31 +4954,31 @@
local.get $3
i32.const 1
i32.sub
local.tee $1
local.tee $2
i32.const 0
i32.lt_s
local.tee $2
local.tee $1
if
i32.const 0
local.get $1
local.get $2
i32.sub
local.set $1
local.set $2
end
local.get $1
local.get $2
end
local.get $1
local.get $2
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.tee $1
local.tee $2
call $~lib/util/number/utoa_simple<u32>
local.get $0
i32.const 45
i32.const 43
local.get $2
local.get $1
select
i32.store16
local.get $1
local.get $2
i32.const 2
i32.add
else
@ -8695,11 +8695,11 @@
call $~lib/rt/pure/__release
local.get $10
call $~lib/rt/pure/__release
local.get $11
local.get $13
call $~lib/rt/pure/__release
local.get $12
call $~lib/rt/pure/__release
local.get $13
local.get $11
call $~lib/rt/pure/__release
local.get $14
call $~lib/rt/pure/__release

File diff suppressed because it is too large Load Diff

View File

@ -284,30 +284,30 @@
i32.add
i32.load offset=4
end
local.set $8
local.set $9
block $~lib/rt/tlsf/SETSL|inlined.1
local.get $0
local.set $11
local.set $8
local.get $4
local.set $10
local.get $8
local.set $11
local.get $9
i32.const 1
local.get $5
i32.shl
i32.const -1
i32.xor
i32.and
local.tee $8
local.set $9
local.tee $9
local.set $10
local.get $8
local.get $11
local.get $10
i32.const 2
i32.shl
i32.add
local.get $9
local.get $10
i32.store offset=4
end
local.get $8
local.get $9
i32.eqz
if
local.get $0
@ -439,17 +439,17 @@
if
block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32)
local.get $1
local.set $3
local.get $3
local.set $6
local.get $6
i32.const 4
i32.sub
i32.load
end
local.set $3
local.get $3
i32.load
local.set $6
local.get $6
i32.load
local.set $3
local.get $3
i32.const 1
i32.and
i32.eqz
@ -461,7 +461,7 @@
call $~lib/builtins/abort
unreachable
end
local.get $6
local.get $3
i32.const 3
i32.const -1
i32.xor
@ -480,17 +480,17 @@
i32.lt_u
if
local.get $0
local.get $3
call $~lib/rt/tlsf/removeBlock
local.get $3
local.get $6
call $~lib/rt/tlsf/removeBlock
local.get $6
local.get $3
i32.const 3
i32.and
local.get $7
i32.or
local.tee $2
i32.store
local.get $3
local.get $6
local.set $1
end
end
@ -599,16 +599,16 @@
end
block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32)
local.get $0
local.set $3
local.get $9
local.set $6
local.get $10
local.set $7
local.get $9
local.set $3
local.get $10
local.set $6
local.get $7
local.get $3
local.get $6
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
@ -632,21 +632,21 @@
local.get $0
local.set $12
local.get $9
local.set $3
local.get $10
local.set $6
local.get $1
local.set $7
local.get $10
local.set $3
local.get $1
local.set $6
local.get $12
local.get $3
local.get $7
i32.const 4
i32.shl
local.get $6
local.get $3
i32.add
i32.const 2
i32.shl
i32.add
local.get $7
local.get $6
i32.store offset=96
end
local.get $0
@ -659,16 +659,16 @@
i32.store
block $~lib/rt/tlsf/SETSL|inlined.2
local.get $0
local.set $3
local.set $13
local.get $9
local.set $6
local.set $12
block $~lib/rt/tlsf/GETSL|inlined.1 (result i32)
local.get $0
local.set $13
local.set $3
local.get $9
local.set $12
local.get $13
local.get $12
local.set $6
local.get $3
local.get $6
i32.const 2
i32.shl
i32.add
@ -679,8 +679,8 @@
i32.shl
i32.or
local.set $7
local.get $3
local.get $6
local.get $13
local.get $12
i32.const 2
i32.shl
i32.add
@ -905,9 +905,9 @@
end
block $break|0
i32.const 0
local.set $4
local.set $5
loop $repeat|0
local.get $4
local.get $5
i32.const 23
i32.lt_u
i32.eqz
@ -915,23 +915,23 @@
block $~lib/rt/tlsf/SETSL|inlined.0
local.get $3
local.set $7
local.get $4
local.get $5
local.set $6
i32.const 0
local.set $5
local.set $4
local.get $7
local.get $6
i32.const 2
i32.shl
i32.add
local.get $5
local.get $4
i32.store offset=4
end
block $break|1
i32.const 0
local.set $5
local.set $7
loop $repeat|1
local.get $5
local.get $7
i32.const 16
i32.lt_u
i32.eqz
@ -939,37 +939,37 @@
block $~lib/rt/tlsf/SETHEAD|inlined.0
local.get $3
local.set $9
local.get $4
local.set $8
local.get $5
local.set $7
i32.const 0
local.set $8
local.get $7
local.set $6
i32.const 0
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $7
local.get $6
i32.add
i32.const 2
i32.shl
i32.add
local.get $6
local.get $4
i32.store offset=96
end
local.get $5
local.get $7
i32.const 1
i32.add
local.set $5
local.set $7
br $repeat|1
unreachable
end
unreachable
end
local.get $4
local.get $5
i32.const 1
i32.add
local.set $4
local.set $5
br $repeat|0
unreachable
end
@ -1135,23 +1135,23 @@
i32.add
i32.shl
i32.and
local.set $4
local.get $4
local.set $5
local.get $5
i32.eqz
if
i32.const 0
local.set $7
else
local.get $4
local.get $5
i32.ctz
local.set $2
block $~lib/rt/tlsf/GETSL|inlined.3 (result i32)
local.get $0
local.set $8
local.get $2
local.set $5
local.set $4
local.get $8
local.get $5
local.get $4
i32.const 2
i32.shl
i32.add
@ -1175,12 +1175,12 @@
local.set $8
local.get $6
i32.ctz
local.set $5
local.set $4
local.get $9
local.get $8
i32.const 4
i32.shl
local.get $5
local.get $4
i32.add
i32.const 2
i32.shl
@ -1192,14 +1192,14 @@
else
block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32)
local.get $0
local.set $8
local.set $9
local.get $2
local.set $5
local.set $8
local.get $6
i32.ctz
local.set $4
local.get $9
local.get $8
local.get $5
i32.const 4
i32.shl
local.get $4
@ -6893,28 +6893,28 @@
local.get $4
)
(func $~lib/typedarray/Int64Array#reduce<i64> (; 107 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64)
(local $3 i32)
(local $3 i64)
(local $4 i32)
(local $5 i64)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i64)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
block
i32.const 0
local.set $7
local.get $4
local.get $5
call $~lib/typedarray/Int64Array#get:length
local.set $8
end
@ -6927,7 +6927,7 @@
block (result i64)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 3
@ -6935,11 +6935,11 @@
i32.add
i64.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$jjjii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.add
@ -6949,9 +6949,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $9
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $9
)
@ -7037,28 +7037,28 @@
local.get $4
)
(func $~lib/typedarray/Uint64Array#reduce<u64> (; 111 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64)
(local $3 i32)
(local $3 i64)
(local $4 i32)
(local $5 i64)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i64)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
block
i32.const 0
local.set $7
local.get $4
local.get $5
call $~lib/typedarray/Uint64Array#get:length
local.set $8
end
@ -7071,7 +7071,7 @@
block (result i64)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 3
@ -7079,11 +7079,11 @@
i32.add
i64.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$jjjii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.add
@ -7093,9 +7093,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $9
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $9
)
@ -7181,28 +7181,28 @@
local.get $4
)
(func $~lib/typedarray/Float32Array#reduce<f32> (; 115 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32)
(local $3 i32)
(local $3 f32)
(local $4 i32)
(local $5 f32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 f32)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
block
i32.const 0
local.set $7
local.get $4
local.get $5
call $~lib/typedarray/Float32Array#get:length
local.set $8
end
@ -7215,7 +7215,7 @@
block (result f32)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 2
@ -7223,11 +7223,11 @@
i32.add
f32.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$fffii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.add
@ -7237,9 +7237,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $9
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $9
)
@ -7301,28 +7301,28 @@
local.get $4
)
(func $~lib/typedarray/Float64Array#reduce<f64> (; 118 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64)
(local $3 i32)
(local $3 f64)
(local $4 i32)
(local $5 f64)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 f64)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
block
i32.const 0
local.set $7
local.get $4
local.get $5
call $~lib/typedarray/Float64Array#get:length
local.set $8
end
@ -7335,7 +7335,7 @@
block (result f64)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 3
@ -7343,11 +7343,11 @@
i32.add
f64.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$dddii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.add
@ -7357,9 +7357,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $9
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $9
)
@ -8247,24 +8247,24 @@
local.get $4
)
(func $~lib/typedarray/Int64Array#reduceRight<i64> (; 142 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64)
(local $3 i32)
(local $3 i64)
(local $4 i32)
(local $5 i64)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i64)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
local.get $4
local.get $5
call $~lib/typedarray/Int64Array#get:length
i32.const 1
i32.sub
@ -8278,7 +8278,7 @@
block (result i64)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 3
@ -8286,11 +8286,11 @@
i32.add
i64.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$jjjii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.sub
@ -8300,9 +8300,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $8
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $8
)
@ -8364,24 +8364,24 @@
local.get $4
)
(func $~lib/typedarray/Uint64Array#reduceRight<u64> (; 145 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64)
(local $3 i32)
(local $3 i64)
(local $4 i32)
(local $5 i64)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i64)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
local.get $4
local.get $5
call $~lib/typedarray/Uint64Array#get:length
i32.const 1
i32.sub
@ -8395,7 +8395,7 @@
block (result i64)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 3
@ -8403,11 +8403,11 @@
i32.add
i64.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$jjjii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.sub
@ -8417,9 +8417,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $8
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $8
)
@ -8481,24 +8481,24 @@
local.get $4
)
(func $~lib/typedarray/Float32Array#reduceRight<f32> (; 148 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32)
(local $3 i32)
(local $3 f32)
(local $4 i32)
(local $5 f32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 f32)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
local.get $4
local.get $5
call $~lib/typedarray/Float32Array#get:length
i32.const 1
i32.sub
@ -8512,7 +8512,7 @@
block (result f32)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 2
@ -8520,11 +8520,11 @@
i32.add
f32.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$fffii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.sub
@ -8534,9 +8534,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $8
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $8
)
@ -8598,24 +8598,24 @@
local.get $4
)
(func $~lib/typedarray/Float64Array#reduceRight<f64> (; 151 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64)
(local $3 i32)
(local $3 f64)
(local $4 i32)
(local $5 f64)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 f64)
local.get $0
call $~lib/rt/pure/__retain
local.set $4
local.get $1
local.set $3
local.get $2
local.set $5
local.get $4
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
i32.load offset=4
local.set $6
block $break|0
local.get $4
local.get $5
call $~lib/typedarray/Float64Array#get:length
i32.const 1
i32.sub
@ -8629,7 +8629,7 @@
block (result f64)
i32.const 4
global.set $~lib/argc
local.get $5
local.get $3
local.get $6
local.get $7
i32.const 3
@ -8637,11 +8637,11 @@
i32.add
f64.load
local.get $7
local.get $5
local.get $4
local.get $3
call_indirect (type $FUNCSIG$dddii)
end
local.set $5
local.set $3
local.get $7
i32.const 1
i32.sub
@ -8651,9 +8651,9 @@
end
unreachable
end
local.get $5
local.get $3
local.set $8
local.get $4
local.get $5
call $~lib/rt/pure/__release
local.get $8
)