mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-27 16:02:16 +00:00
reduce tlsf footprint
This commit is contained in:
parent
bb659bbdcd
commit
8b5c629cde
@ -15,23 +15,23 @@ import { AL_BITS, AL_SIZE, AL_MASK } from "../util/allocator";
|
||||
import { HEAP_BASE, memory } from "../memory";
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const SL_BITS: u32 = 5;
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const SL_SIZE: usize = 1 << <usize>SL_BITS;
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const SB_BITS: usize = <usize>(SL_BITS + AL_BITS);
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const SB_SIZE: usize = 1 << <usize>SB_BITS;
|
||||
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const FL_BITS: u32 = (sizeof<usize>() == sizeof<u32>()
|
||||
? 30 // ^= up to 1GB per block
|
||||
: 32 // ^= up to 4GB per block
|
||||
@ -55,17 +55,17 @@ const FL_BITS: u32 = (sizeof<usize>() == sizeof<u32>()
|
||||
|
||||
/** Tag indicating that this block is free. */
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const FREE: usize = 1 << 0;
|
||||
|
||||
/** Tag indicating that this block's left block is free. */
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const LEFT_FREE: usize = 1 << 1;
|
||||
|
||||
/** Mask to obtain all tags. */
|
||||
// @ts-ignore: decorator
|
||||
@lazy
|
||||
@inline
|
||||
const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
/** Block structure. */
|
||||
@ -73,10 +73,16 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
/** Info field holding this block's size and tags. */
|
||||
info: usize;
|
||||
/** Class id. */ // TODO
|
||||
// classId: u32; //
|
||||
/** Size of the payload. */ //
|
||||
// payloadSize: u32; //
|
||||
/** Reference count. */ //
|
||||
// refCount: u32; //
|
||||
|
||||
/** End offset of the {@link Block#info} field. User data starts here. */
|
||||
@lazy
|
||||
static readonly INFO: usize = (sizeof<usize>() + AL_MASK) & ~AL_MASK;
|
||||
/** Size of the always present header fields. User data starts here. */
|
||||
@inline
|
||||
static readonly HEADER_SIZE: usize = (offsetof<Block>("prev") + AL_MASK) & ~AL_MASK;
|
||||
|
||||
/** Previous free block, if any. Only valid if free. */
|
||||
prev: Block | null;
|
||||
@ -84,16 +90,16 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
next: Block | null;
|
||||
|
||||
/** Minimum size of a block, excluding {@link Block#info}. */
|
||||
@lazy
|
||||
@inline
|
||||
static readonly MIN_SIZE: usize = (3 * sizeof<usize>() + AL_MASK) & ~AL_MASK;// prev + next + jump
|
||||
|
||||
/** Maximum size of a used block, excluding {@link Block#info}. */
|
||||
@lazy
|
||||
@inline
|
||||
static readonly MAX_SIZE: usize = 1 << (FL_BITS + SB_BITS);
|
||||
|
||||
/** Gets this block's left (free) block in memory. */
|
||||
get left(): Block {
|
||||
assert(this.info & LEFT_FREE); // must be free to contain a jump
|
||||
assert(this.info & LEFT_FREE); // left must be free or it doesn't contain 'jump'
|
||||
return assert(
|
||||
load<Block>(changetype<usize>(this) - sizeof<usize>())
|
||||
); // can't be null
|
||||
@ -101,10 +107,10 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
/** Gets this block's right block in memory. */
|
||||
get right(): Block {
|
||||
assert(this.info & ~TAGS); // can't skip beyond the tail block
|
||||
assert(this.info & ~TAGS); // can't skip beyond the tail block (the only valid empty block)
|
||||
return assert(
|
||||
changetype<Block>(
|
||||
changetype<usize>(this) + Block.INFO + (this.info & ~TAGS)
|
||||
changetype<usize>(this) + Block.HEADER_SIZE + (this.info & ~TAGS)
|
||||
)
|
||||
); // can't be null
|
||||
}
|
||||
@ -143,7 +149,7 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
flMap: usize = 0;
|
||||
|
||||
/** Start offset of second level maps. */
|
||||
@lazy
|
||||
@inline
|
||||
private static readonly SL_START: usize = sizeof<usize>();
|
||||
|
||||
// Using *one* SL map per *FL bit*
|
||||
@ -161,19 +167,18 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
}
|
||||
|
||||
/** End offset of second level maps. */
|
||||
@lazy
|
||||
@inline
|
||||
private static readonly SL_END: usize = Root.SL_START + FL_BITS * 4;
|
||||
|
||||
// Using *number bits per SL* heads per *FL bit*
|
||||
|
||||
/** Start offset of FL/SL heads. */
|
||||
@lazy
|
||||
@inline
|
||||
private static readonly HL_START: usize = (Root.SL_END + AL_MASK) & ~AL_MASK;
|
||||
|
||||
/** Gets the head of the specified first and second level index. */
|
||||
getHead(fl: usize, sl: u32): Block | null {
|
||||
assert(fl < FL_BITS); // fl out of range
|
||||
assert(sl < SL_SIZE); // sl out of range
|
||||
assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range
|
||||
return changetype<Block>(load<usize>(
|
||||
changetype<usize>(this) + (fl * SL_SIZE + <usize>sl) * sizeof<usize>()
|
||||
, Root.HL_START));
|
||||
@ -181,25 +186,23 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
/** Sets the head of the specified first and second level index. */
|
||||
setHead(fl: usize, sl: u32, value: Block | null): void {
|
||||
assert(fl < FL_BITS); // fl out of range
|
||||
assert(sl < SL_SIZE); // sl out of range
|
||||
assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range
|
||||
store<usize>(
|
||||
changetype<usize>(this) + (fl * SL_SIZE + <usize>sl) * sizeof<usize>()
|
||||
, changetype<usize>(value)
|
||||
, Root.HL_START);
|
||||
changetype<usize>(this) + (fl * SL_SIZE + <usize>sl) * sizeof<usize>(),
|
||||
changetype<usize>(value),
|
||||
Root.HL_START
|
||||
);
|
||||
}
|
||||
|
||||
/** End offset of FL/SL heads. */
|
||||
@lazy
|
||||
private static readonly HL_END: usize = (
|
||||
Root.HL_START + FL_BITS * SL_SIZE * sizeof<usize>()
|
||||
);
|
||||
@inline
|
||||
private static readonly HL_END: usize = Root.HL_START + FL_BITS * SL_SIZE * sizeof<usize>();
|
||||
|
||||
get tailRef(): usize { return load<usize>(0, Root.HL_END); }
|
||||
set tailRef(value: usize) { store<usize>(0, value, Root.HL_END); }
|
||||
|
||||
/** Total size of the {@link Root} structure. */
|
||||
@lazy
|
||||
@inline
|
||||
static readonly SIZE: usize = Root.HL_END + sizeof<usize>();
|
||||
|
||||
/** Inserts a previously used block back into the free list. */
|
||||
@ -208,18 +211,14 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
assert(block); // cannot be null
|
||||
var blockInfo = block.info;
|
||||
assert(blockInfo & FREE); // must be free
|
||||
var size: usize;
|
||||
assert(
|
||||
(size = block.info & ~TAGS) >= Block.MIN_SIZE && size < Block.MAX_SIZE
|
||||
); // must be valid, not necessary to compute yet if noAssert=true
|
||||
|
||||
var right: Block = assert(block.right); // can't be null
|
||||
var right = block.right; // asserts != null
|
||||
var rightInfo = right.info;
|
||||
|
||||
// merge with right block if also free
|
||||
if (rightInfo & FREE) {
|
||||
this.remove(right);
|
||||
block.info = (blockInfo += Block.INFO + (rightInfo & ~TAGS));
|
||||
block.info = (blockInfo += Block.HEADER_SIZE + (rightInfo & ~TAGS));
|
||||
right = block.right;
|
||||
rightInfo = right.info;
|
||||
// jump is set below
|
||||
@ -227,11 +226,11 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
// merge with left block if also free
|
||||
if (blockInfo & LEFT_FREE) {
|
||||
let left: Block = assert(block.left); // can't be null
|
||||
let left = block.left; // asserts != null
|
||||
let leftInfo = left.info;
|
||||
assert(leftInfo & FREE); // must be free according to tags
|
||||
assert(leftInfo & FREE); // must be free according to right tags
|
||||
this.remove(left);
|
||||
left.info = (leftInfo += Block.INFO + (blockInfo & ~TAGS));
|
||||
left.info = (leftInfo += Block.HEADER_SIZE + (blockInfo & ~TAGS));
|
||||
block = left;
|
||||
blockInfo = leftInfo;
|
||||
// jump is set below
|
||||
@ -241,7 +240,7 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
this.setJump(block, right);
|
||||
// right is no longer used now, hence rightInfo is not synced
|
||||
|
||||
size = blockInfo & ~TAGS;
|
||||
var size = blockInfo & ~TAGS;
|
||||
assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid
|
||||
|
||||
// mapping_insert
|
||||
@ -312,7 +311,7 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
/** Searches for a free block of at least the specified size. */
|
||||
search(size: usize): Block | null {
|
||||
assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE);
|
||||
// size was already asserted by caller
|
||||
|
||||
// mapping_search
|
||||
var fl: usize, sl: u32;
|
||||
@ -350,9 +349,11 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
/** Links a free left with its right block in memory. */
|
||||
private setJump(left: Block, right: Block): void {
|
||||
assert(left.info & FREE); // must be free
|
||||
assert(left.right == right); // right block must match
|
||||
assert(right.info & LEFT_FREE); // right block must be tagged as LEFT_FREE
|
||||
assert(
|
||||
(left.info & FREE) != 0 && // must be free to contain 'jump'
|
||||
left.right == right && // right block must match
|
||||
(right.info & LEFT_FREE) != 0 // free status must match
|
||||
);
|
||||
store<Block>(
|
||||
changetype<usize>(right) - sizeof<usize>()
|
||||
, left); // last word in left block's (free) data region
|
||||
@ -363,39 +364,43 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
* splitting it if possible, and returns its data pointer.
|
||||
*/
|
||||
use(block: Block, size: usize): usize {
|
||||
var blockInfo = block.info;
|
||||
assert(blockInfo & FREE); // must be free so we can use it
|
||||
assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid
|
||||
assert(!(size & AL_MASK)); // size must be aligned so the new block is
|
||||
// size was already asserted by caller
|
||||
|
||||
var blockInfo = block.info;
|
||||
assert(
|
||||
(blockInfo & FREE) != 0 && // must be free
|
||||
!(size & AL_MASK) // size must be aligned so the new block is
|
||||
);
|
||||
this.remove(block);
|
||||
|
||||
// split if the block can hold another MIN_SIZE block
|
||||
var remaining = (blockInfo & ~TAGS) - size;
|
||||
if (remaining >= Block.INFO + Block.MIN_SIZE) {
|
||||
if (remaining >= Block.HEADER_SIZE + Block.MIN_SIZE) {
|
||||
block.info = size | (blockInfo & LEFT_FREE); // also discards FREE
|
||||
|
||||
let spare = changetype<Block>(
|
||||
changetype<usize>(block) + Block.INFO + size
|
||||
changetype<usize>(block) + Block.HEADER_SIZE + size
|
||||
);
|
||||
spare.info = (remaining - Block.INFO) | FREE; // not LEFT_FREE
|
||||
spare.info = (remaining - Block.HEADER_SIZE) | FREE; // not LEFT_FREE
|
||||
this.insert(spare); // also sets jump
|
||||
|
||||
// otherwise tag block as no longer FREE and right as no longer LEFT_FREE
|
||||
} else {
|
||||
block.info = blockInfo & ~FREE;
|
||||
let right: Block = assert(block.right); // can't be null (tail)
|
||||
let right = block.right; // asserts != null
|
||||
right.info &= ~LEFT_FREE;
|
||||
}
|
||||
|
||||
return changetype<usize>(block) + Block.INFO;
|
||||
return changetype<usize>(block) + Block.HEADER_SIZE;
|
||||
}
|
||||
|
||||
/** Adds more memory to the pool. */
|
||||
addMemory(start: usize, end: usize): bool {
|
||||
assert(start <= end);
|
||||
assert(!(start & AL_MASK)); // must be aligned
|
||||
assert(!(end & AL_MASK)); // must be aligned
|
||||
assert(
|
||||
start <= end && // must be valid
|
||||
!(start & AL_MASK) && // must be aligned
|
||||
!(end & AL_MASK) // must be aligned
|
||||
);
|
||||
|
||||
var tailRef = this.tailRef;
|
||||
var tailInfo: usize = 0;
|
||||
@ -403,8 +408,8 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
assert(start >= tailRef + sizeof<usize>()); // starts after tail
|
||||
|
||||
// merge with current tail if adjacent
|
||||
if (start - Block.INFO == tailRef) {
|
||||
start -= Block.INFO;
|
||||
if (start - Block.HEADER_SIZE == tailRef) {
|
||||
start -= Block.HEADER_SIZE;
|
||||
tailInfo = changetype<Block>(tailRef).info;
|
||||
}
|
||||
|
||||
@ -414,19 +419,19 @@ const TAGS: usize = FREE | LEFT_FREE;
|
||||
|
||||
// check if size is large enough for a free block and the tail block
|
||||
var size = end - start;
|
||||
if (size < Block.INFO + Block.MIN_SIZE + Block.INFO) {
|
||||
if (size < Block.HEADER_SIZE + Block.MIN_SIZE + Block.HEADER_SIZE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// left size is total minus its own and the zero-length tail's header
|
||||
var leftSize = size - 2 * Block.INFO;
|
||||
var leftSize = size - 2 * Block.HEADER_SIZE;
|
||||
var left = changetype<Block>(start);
|
||||
left.info = leftSize | FREE | (tailInfo & LEFT_FREE);
|
||||
left.prev = null;
|
||||
left.next = null;
|
||||
|
||||
// tail is a zero-length used block
|
||||
var tail = changetype<Block>(start + size - Block.INFO);
|
||||
var tail = changetype<Block>(start + size - Block.HEADER_SIZE);
|
||||
tail.info = 0 | LEFT_FREE;
|
||||
this.tailRef = changetype<usize>(tail);
|
||||
|
||||
@ -502,7 +507,7 @@ function __mem_allocate(size: usize): usize {
|
||||
block = assert(root.search(size)); // must be found now
|
||||
}
|
||||
|
||||
assert((block.info & ~TAGS) >= size);
|
||||
assert((block.info & ~TAGS) >= size); // must fit
|
||||
return root.use(<Block>block, size);
|
||||
}
|
||||
|
||||
@ -511,13 +516,14 @@ function __mem_allocate(size: usize): usize {
|
||||
@unsafe @global
|
||||
function __mem_free(data: usize): void {
|
||||
if (data) {
|
||||
assert(!(data & AL_MASK)); // must be aligned
|
||||
let root = ROOT;
|
||||
if (root) {
|
||||
let block = changetype<Block>(data - Block.INFO);
|
||||
let block = changetype<Block>(data - Block.HEADER_SIZE);
|
||||
let blockInfo = block.info;
|
||||
assert(!(blockInfo & FREE)); // must be used
|
||||
block.info = blockInfo | FREE;
|
||||
root.insert(changetype<Block>(data - Block.INFO));
|
||||
root.insert(changetype<Block>(data - Block.HEADER_SIZE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -95,7 +95,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 159
|
||||
i32.const 165
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -109,24 +109,19 @@
|
||||
i32.store offset=4
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#setHead (; 4 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 184
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.lt_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 185
|
||||
i32.const 189
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -152,7 +147,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 104
|
||||
i32.const 110
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -170,7 +165,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 105
|
||||
i32.const 111
|
||||
i32.const 11
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -183,7 +178,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 447
|
||||
i32.const 452
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -194,24 +189,19 @@
|
||||
i32.sub
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#getHead (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 175
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.lt_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 176
|
||||
i32.const 181
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -234,7 +224,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 153
|
||||
i32.const 159
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -260,7 +250,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 277
|
||||
i32.const 276
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -282,7 +272,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 279
|
||||
i32.const 278
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -383,7 +373,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 96
|
||||
i32.const 102
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -397,7 +387,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 97
|
||||
i32.const 103
|
||||
i32.const 11
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -409,36 +399,29 @@
|
||||
i32.load
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 353
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $0
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.get $1
|
||||
i32.ne
|
||||
if
|
||||
i32.eq
|
||||
else
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 354
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $1
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.and
|
||||
i32.const 0
|
||||
i32.ne
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 355
|
||||
i32.const 352
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -459,7 +442,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 208
|
||||
i32.const 211
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -473,54 +456,21 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 210
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.load
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $3
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
if (result i32)
|
||||
local.get $3
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 212
|
||||
i32.const 213
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $3
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 216
|
||||
i32.const 23
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $3
|
||||
local.tee $5
|
||||
i32.load
|
||||
local.tee $4
|
||||
i32.const 1
|
||||
i32.and
|
||||
if
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $5
|
||||
call $~lib/allocator/tlsf/Root#remove
|
||||
local.get $1
|
||||
local.get $4
|
||||
@ -534,7 +484,7 @@
|
||||
i32.store
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $3
|
||||
local.tee $5
|
||||
i32.load
|
||||
local.set $4
|
||||
end
|
||||
@ -545,25 +495,15 @@
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:left
|
||||
local.tee $1
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 230
|
||||
i32.const 24
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.load
|
||||
local.tee $5
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 232
|
||||
i32.const 231
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -577,27 +517,27 @@
|
||||
i32.and
|
||||
i32.const 8
|
||||
i32.add
|
||||
local.get $5
|
||||
local.get $3
|
||||
i32.add
|
||||
local.tee $2
|
||||
i32.store
|
||||
end
|
||||
local.get $3
|
||||
local.get $5
|
||||
local.get $4
|
||||
i32.const 2
|
||||
i32.or
|
||||
i32.store
|
||||
local.get $1
|
||||
local.get $3
|
||||
local.get $5
|
||||
call $~lib/allocator/tlsf/Root#setJump
|
||||
local.get $2
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $2
|
||||
local.tee $3
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
if (result i32)
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
else
|
||||
@ -607,72 +547,72 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 245
|
||||
i32.const 244
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 256
|
||||
i32.lt_u
|
||||
if (result i32)
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 8
|
||||
i32.div_u
|
||||
local.set $2
|
||||
local.set $3
|
||||
i32.const 0
|
||||
else
|
||||
local.get $2
|
||||
local.get $2
|
||||
local.get $3
|
||||
local.get $3
|
||||
call $~lib/allocator/tlsf/fls<usize>
|
||||
local.tee $3
|
||||
local.tee $2
|
||||
i32.const 5
|
||||
i32.sub
|
||||
i32.shr_u
|
||||
i32.const 32
|
||||
i32.xor
|
||||
local.set $2
|
||||
local.get $3
|
||||
local.set $3
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.sub
|
||||
end
|
||||
local.tee $3
|
||||
local.get $2
|
||||
local.tee $4
|
||||
local.get $3
|
||||
call $~lib/allocator/tlsf/Root#getHead
|
||||
local.set $4
|
||||
local.set $2
|
||||
local.get $1
|
||||
i32.const 0
|
||||
i32.store offset=4
|
||||
local.get $1
|
||||
local.get $4
|
||||
local.get $2
|
||||
i32.store offset=8
|
||||
local.get $4
|
||||
local.get $2
|
||||
if
|
||||
local.get $4
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.store offset=4
|
||||
end
|
||||
local.get $0
|
||||
local.get $4
|
||||
local.get $3
|
||||
local.get $2
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Root#setHead
|
||||
local.get $0
|
||||
local.get $0
|
||||
i32.load
|
||||
i32.const 1
|
||||
local.get $3
|
||||
local.get $4
|
||||
i32.shl
|
||||
i32.or
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $4
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $4
|
||||
call $~lib/allocator/tlsf/Root#getSLMap
|
||||
i32.const 1
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.shl
|
||||
i32.or
|
||||
call $~lib/allocator/tlsf/Root#setSLMap
|
||||
@ -680,35 +620,26 @@
|
||||
(func $~lib/allocator/tlsf/Root#addMemory (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 396
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.and
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 397
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
i32.const 0
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.le_u
|
||||
select
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 398
|
||||
i32.const 399
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -725,7 +656,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 403
|
||||
i32.const 408
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -753,7 +684,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 412
|
||||
i32.const 417
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -806,7 +737,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 441
|
||||
i32.const 446
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -818,23 +749,6 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
local.get $1
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 315
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.const 256
|
||||
i32.lt_u
|
||||
if (result i32)
|
||||
@ -906,7 +820,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 342
|
||||
i32.const 341
|
||||
i32.const 16
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -929,39 +843,19 @@
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 367
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $2
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 368
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 369
|
||||
i32.const 370
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1009,16 +903,6 @@
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $0
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 387
|
||||
i32.const 25
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.get $0
|
||||
i32.load
|
||||
i32.const -3
|
||||
@ -1171,7 +1055,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 502
|
||||
i32.const 507
|
||||
i32.const 12
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1186,7 +1070,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 505
|
||||
i32.const 510
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1552,6 +1436,17 @@
|
||||
(local $3 i32)
|
||||
local.get $0
|
||||
if
|
||||
local.get $0
|
||||
i32.const 7
|
||||
i32.and
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 519
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
global.get $~lib/allocator/tlsf/ROOT
|
||||
local.tee $1
|
||||
if
|
||||
@ -1566,7 +1461,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 24
|
||||
i32.const 518
|
||||
i32.const 524
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -966,7 +966,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 159
|
||||
i32.const 165
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -980,24 +980,19 @@
|
||||
i32.store offset=4
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#setHead (; 40 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 184
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.lt_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 185
|
||||
i32.const 189
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1023,7 +1018,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 104
|
||||
i32.const 110
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1041,7 +1036,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 105
|
||||
i32.const 111
|
||||
i32.const 11
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1054,7 +1049,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 447
|
||||
i32.const 452
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1065,24 +1060,19 @@
|
||||
i32.sub
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#getHead (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 175
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.lt_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 176
|
||||
i32.const 181
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1105,7 +1095,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 153
|
||||
i32.const 159
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1131,7 +1121,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 277
|
||||
i32.const 276
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1153,7 +1143,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 279
|
||||
i32.const 278
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1254,7 +1244,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 96
|
||||
i32.const 102
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1268,7 +1258,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 97
|
||||
i32.const 103
|
||||
i32.const 11
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1280,36 +1270,29 @@
|
||||
i32.load
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 353
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $0
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.get $1
|
||||
i32.ne
|
||||
if
|
||||
i32.eq
|
||||
else
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 354
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $1
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.and
|
||||
i32.const 0
|
||||
i32.ne
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 355
|
||||
i32.const 352
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1330,7 +1313,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 208
|
||||
i32.const 211
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1344,54 +1327,21 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 210
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.load
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $3
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
if (result i32)
|
||||
local.get $3
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 212
|
||||
i32.const 213
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $3
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 216
|
||||
i32.const 23
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $3
|
||||
local.tee $5
|
||||
i32.load
|
||||
local.tee $4
|
||||
i32.const 1
|
||||
i32.and
|
||||
if
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $5
|
||||
call $~lib/allocator/tlsf/Root#remove
|
||||
local.get $1
|
||||
local.get $4
|
||||
@ -1405,7 +1355,7 @@
|
||||
i32.store
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $3
|
||||
local.tee $5
|
||||
i32.load
|
||||
local.set $4
|
||||
end
|
||||
@ -1416,25 +1366,15 @@
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:left
|
||||
local.tee $1
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 230
|
||||
i32.const 24
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.load
|
||||
local.tee $5
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 232
|
||||
i32.const 231
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1448,27 +1388,27 @@
|
||||
i32.and
|
||||
i32.const 8
|
||||
i32.add
|
||||
local.get $5
|
||||
local.get $3
|
||||
i32.add
|
||||
local.tee $2
|
||||
i32.store
|
||||
end
|
||||
local.get $3
|
||||
local.get $5
|
||||
local.get $4
|
||||
i32.const 2
|
||||
i32.or
|
||||
i32.store
|
||||
local.get $1
|
||||
local.get $3
|
||||
local.get $5
|
||||
call $~lib/allocator/tlsf/Root#setJump
|
||||
local.get $2
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $2
|
||||
local.tee $3
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
if (result i32)
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
else
|
||||
@ -1478,72 +1418,72 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 245
|
||||
i32.const 244
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 256
|
||||
i32.lt_u
|
||||
if (result i32)
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 8
|
||||
i32.div_u
|
||||
local.set $2
|
||||
local.set $3
|
||||
i32.const 0
|
||||
else
|
||||
local.get $2
|
||||
local.get $2
|
||||
local.get $3
|
||||
local.get $3
|
||||
call $~lib/allocator/tlsf/fls<usize>
|
||||
local.tee $3
|
||||
local.tee $2
|
||||
i32.const 5
|
||||
i32.sub
|
||||
i32.shr_u
|
||||
i32.const 32
|
||||
i32.xor
|
||||
local.set $2
|
||||
local.get $3
|
||||
local.set $3
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.sub
|
||||
end
|
||||
local.tee $3
|
||||
local.get $2
|
||||
local.tee $4
|
||||
local.get $3
|
||||
call $~lib/allocator/tlsf/Root#getHead
|
||||
local.set $4
|
||||
local.set $2
|
||||
local.get $1
|
||||
i32.const 0
|
||||
i32.store offset=4
|
||||
local.get $1
|
||||
local.get $4
|
||||
local.get $2
|
||||
i32.store offset=8
|
||||
local.get $4
|
||||
local.get $2
|
||||
if
|
||||
local.get $4
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.store offset=4
|
||||
end
|
||||
local.get $0
|
||||
local.get $4
|
||||
local.get $3
|
||||
local.get $2
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Root#setHead
|
||||
local.get $0
|
||||
local.get $0
|
||||
i32.load
|
||||
i32.const 1
|
||||
local.get $3
|
||||
local.get $4
|
||||
i32.shl
|
||||
i32.or
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $4
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $4
|
||||
call $~lib/allocator/tlsf/Root#getSLMap
|
||||
i32.const 1
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.shl
|
||||
i32.or
|
||||
call $~lib/allocator/tlsf/Root#setSLMap
|
||||
@ -1551,35 +1491,26 @@
|
||||
(func $~lib/allocator/tlsf/Root#addMemory (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 396
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.and
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 397
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
i32.const 0
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.le_u
|
||||
select
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 398
|
||||
i32.const 399
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1596,7 +1527,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 403
|
||||
i32.const 408
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1624,7 +1555,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 412
|
||||
i32.const 417
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1677,7 +1608,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 441
|
||||
i32.const 446
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1689,23 +1620,6 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
local.get $1
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 315
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.const 256
|
||||
i32.lt_u
|
||||
if (result i32)
|
||||
@ -1777,7 +1691,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 342
|
||||
i32.const 341
|
||||
i32.const 16
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1800,39 +1714,19 @@
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 367
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $2
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 368
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 369
|
||||
i32.const 370
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1880,16 +1774,6 @@
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $0
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 387
|
||||
i32.const 25
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.get $0
|
||||
i32.load
|
||||
i32.const -3
|
||||
@ -2042,7 +1926,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 502
|
||||
i32.const 507
|
||||
i32.const 12
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2057,7 +1941,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 505
|
||||
i32.const 510
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -2423,6 +2307,17 @@
|
||||
(local $3 i32)
|
||||
local.get $0
|
||||
if
|
||||
local.get $0
|
||||
i32.const 7
|
||||
i32.and
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 519
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
global.get $~lib/allocator/tlsf/ROOT
|
||||
local.tee $1
|
||||
if
|
||||
@ -2437,7 +2332,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 72
|
||||
i32.const 518
|
||||
i32.const 524
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -46,7 +46,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 159
|
||||
i32.const 165
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -60,24 +60,19 @@
|
||||
i32.store offset=4
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#setHead (; 3 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 184
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.lt_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 185
|
||||
i32.const 189
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -103,7 +98,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 104
|
||||
i32.const 110
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -121,7 +116,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 105
|
||||
i32.const 111
|
||||
i32.const 11
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -134,7 +129,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 447
|
||||
i32.const 452
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -145,24 +140,19 @@
|
||||
i32.sub
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#getHead (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.ge_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 175
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 32
|
||||
i32.ge_u
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 22
|
||||
i32.lt_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 176
|
||||
i32.const 181
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -185,7 +175,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 153
|
||||
i32.const 159
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -211,7 +201,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 277
|
||||
i32.const 276
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -233,7 +223,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 279
|
||||
i32.const 278
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -334,7 +324,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 96
|
||||
i32.const 102
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -348,7 +338,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 97
|
||||
i32.const 103
|
||||
i32.const 11
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -360,36 +350,29 @@
|
||||
i32.load
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 353
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $0
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.get $1
|
||||
i32.ne
|
||||
if
|
||||
i32.eq
|
||||
else
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 354
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $1
|
||||
i32.load
|
||||
i32.const 2
|
||||
i32.and
|
||||
i32.const 0
|
||||
i32.ne
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 355
|
||||
i32.const 352
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -410,7 +393,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 208
|
||||
i32.const 211
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -424,54 +407,21 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 210
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.load
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $3
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
if (result i32)
|
||||
local.get $3
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 212
|
||||
i32.const 213
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $3
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 216
|
||||
i32.const 23
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $3
|
||||
local.tee $5
|
||||
i32.load
|
||||
local.tee $4
|
||||
i32.const 1
|
||||
i32.and
|
||||
if
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $5
|
||||
call $~lib/allocator/tlsf/Root#remove
|
||||
local.get $1
|
||||
local.get $4
|
||||
@ -485,7 +435,7 @@
|
||||
i32.store
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $3
|
||||
local.tee $5
|
||||
i32.load
|
||||
local.set $4
|
||||
end
|
||||
@ -496,25 +446,15 @@
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:left
|
||||
local.tee $1
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 230
|
||||
i32.const 24
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.load
|
||||
local.tee $5
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 232
|
||||
i32.const 231
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -528,27 +468,27 @@
|
||||
i32.and
|
||||
i32.const 8
|
||||
i32.add
|
||||
local.get $5
|
||||
local.get $3
|
||||
i32.add
|
||||
local.tee $2
|
||||
i32.store
|
||||
end
|
||||
local.get $3
|
||||
local.get $5
|
||||
local.get $4
|
||||
i32.const 2
|
||||
i32.or
|
||||
i32.store
|
||||
local.get $1
|
||||
local.get $3
|
||||
local.get $5
|
||||
call $~lib/allocator/tlsf/Root#setJump
|
||||
local.get $2
|
||||
i32.const -4
|
||||
i32.and
|
||||
local.tee $2
|
||||
local.tee $3
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
if (result i32)
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
else
|
||||
@ -558,72 +498,72 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 245
|
||||
i32.const 244
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 256
|
||||
i32.lt_u
|
||||
if (result i32)
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.const 8
|
||||
i32.div_u
|
||||
local.set $2
|
||||
local.set $3
|
||||
i32.const 0
|
||||
else
|
||||
local.get $2
|
||||
local.get $2
|
||||
local.get $3
|
||||
local.get $3
|
||||
call $~lib/allocator/tlsf/fls<usize>
|
||||
local.tee $3
|
||||
local.tee $2
|
||||
i32.const 5
|
||||
i32.sub
|
||||
i32.shr_u
|
||||
i32.const 32
|
||||
i32.xor
|
||||
local.set $2
|
||||
local.get $3
|
||||
local.set $3
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.sub
|
||||
end
|
||||
local.tee $3
|
||||
local.get $2
|
||||
local.tee $4
|
||||
local.get $3
|
||||
call $~lib/allocator/tlsf/Root#getHead
|
||||
local.set $4
|
||||
local.set $2
|
||||
local.get $1
|
||||
i32.const 0
|
||||
i32.store offset=4
|
||||
local.get $1
|
||||
local.get $4
|
||||
local.get $2
|
||||
i32.store offset=8
|
||||
local.get $4
|
||||
local.get $2
|
||||
if
|
||||
local.get $4
|
||||
local.get $2
|
||||
local.get $1
|
||||
i32.store offset=4
|
||||
end
|
||||
local.get $0
|
||||
local.get $4
|
||||
local.get $3
|
||||
local.get $2
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Root#setHead
|
||||
local.get $0
|
||||
local.get $0
|
||||
i32.load
|
||||
i32.const 1
|
||||
local.get $3
|
||||
local.get $4
|
||||
i32.shl
|
||||
i32.or
|
||||
i32.store
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $4
|
||||
local.get $0
|
||||
local.get $3
|
||||
local.get $4
|
||||
call $~lib/allocator/tlsf/Root#getSLMap
|
||||
i32.const 1
|
||||
local.get $2
|
||||
local.get $3
|
||||
i32.shl
|
||||
i32.or
|
||||
call $~lib/allocator/tlsf/Root#setSLMap
|
||||
@ -631,35 +571,26 @@
|
||||
(func $~lib/allocator/tlsf/Root#addMemory (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.gt_u
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 396
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.and
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 397
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
i32.const 0
|
||||
local.get $1
|
||||
local.get $2
|
||||
i32.le_u
|
||||
select
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 398
|
||||
i32.const 399
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -676,7 +607,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 403
|
||||
i32.const 408
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -704,7 +635,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 412
|
||||
i32.const 417
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -757,7 +688,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 441
|
||||
i32.const 446
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -769,23 +700,6 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
local.get $1
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $1
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 315
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $1
|
||||
i32.const 256
|
||||
i32.lt_u
|
||||
if (result i32)
|
||||
@ -857,7 +771,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 342
|
||||
i32.const 341
|
||||
i32.const 16
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -880,39 +794,19 @@
|
||||
local.tee $3
|
||||
i32.const 1
|
||||
i32.and
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 367
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $2
|
||||
i32.const 1073741824
|
||||
i32.lt_u
|
||||
i32.const 0
|
||||
local.get $2
|
||||
i32.const 16
|
||||
i32.ge_u
|
||||
select
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 368
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
if (result i32)
|
||||
local.get $2
|
||||
i32.const 7
|
||||
i32.and
|
||||
i32.eqz
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 369
|
||||
i32.const 370
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -960,16 +854,6 @@
|
||||
local.get $1
|
||||
call $~lib/allocator/tlsf/Block#get:right
|
||||
local.tee $0
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 387
|
||||
i32.const 25
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
local.get $0
|
||||
local.get $0
|
||||
i32.load
|
||||
i32.const -3
|
||||
@ -1122,7 +1006,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 502
|
||||
i32.const 507
|
||||
i32.const 12
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1137,7 +1021,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 505
|
||||
i32.const 510
|
||||
i32.const 2
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
@ -1562,6 +1446,17 @@
|
||||
(local $3 i32)
|
||||
local.get $0
|
||||
if
|
||||
local.get $0
|
||||
i32.const 7
|
||||
i32.and
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 519
|
||||
i32.const 4
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
end
|
||||
global.get $~lib/allocator/tlsf/ROOT
|
||||
local.tee $1
|
||||
if
|
||||
@ -1576,7 +1471,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 168
|
||||
i32.const 518
|
||||
i32.const 524
|
||||
i32.const 6
|
||||
call $~lib/builtins/abort
|
||||
unreachable
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user