(module (type $ii (func (param i32) (result i32))) (type $iv (func (param i32))) (type $iiv (func (param i32 i32))) (type $iii (func (param i32 i32) (result i32))) (type $v (func)) (global "$(lib)/allocator/buddy/BUCKETS_START" (mut i32) (i32.const 0)) (global "$(lib)/allocator/buddy/BUCKETS_END" (mut i32) (i32.const 0)) (global "$(lib)/allocator/buddy/bucket_limit" (mut i32) (i32.const 0)) (global "$(lib)/allocator/buddy/NODE_IS_SPLIT_START" (mut i32) (i32.const 0)) (global "$(lib)/allocator/buddy/NODE_IS_SPLIT_END" (mut i32) (i32.const 0)) (global "$(lib)/allocator/buddy/base_ptr" (mut i32) (i32.const 0)) (global "$(lib)/allocator/buddy/max_ptr" (mut i32) (i32.const 0)) (global $HEAP_BASE i32 (i32.const 4)) (memory $0 1) (export "allocate_memory" (func "$(lib)/allocator/buddy/allocate_memory")) (export "free_memory" (func "$(lib)/allocator/buddy/free_memory")) (export "memory" (memory $0)) (start $start) (func "$(lib)/allocator/buddy/update_max_ptr" (; 0 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) ;;@ (lib)/allocator/buddy.ts:175:2 (if ;;@ (lib)/allocator/buddy.ts:175:6 (i32.gt_u (get_local $0) ;;@ (lib)/allocator/buddy.ts:175:18 (get_global "$(lib)/allocator/buddy/max_ptr") ) ;;@ (lib)/allocator/buddy.ts:175:27 (block ;;@ (lib)/allocator/buddy.ts:182:4 (if ;;@ (lib)/allocator/buddy.ts:182:8 (i32.lt_s (grow_memory ;;@ (lib)/allocator/buddy.ts:182:20 (i32.sub ;;@ (lib)/allocator/buddy.ts:180:4 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:180:19 (i32.shr_u ;;@ (lib)/allocator/buddy.ts:180:25 (i32.and ;;@ (lib)/allocator/buddy.ts:180:26 (i32.add ;;@ (lib)/allocator/buddy.ts:180:27 (get_local $0) ;;@ (lib)/allocator/buddy.ts:180:39 (i32.const 65535) ) (i32.const -65536) ) ;;@ (lib)/allocator/buddy.ts:180:61 (i32.const 16) ) ) ;;@ (lib)/allocator/buddy.ts:179:19 (current_memory) ) ) ;;@ (lib)/allocator/buddy.ts:182:43 (i32.const 0) ) ;;@ (lib)/allocator/buddy.ts:183:13 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:186:4 (set_global "$(lib)/allocator/buddy/max_ptr" ;;@ (lib)/allocator/buddy.ts:186:14 (i32.shl (get_local $1) ;;@ (lib)/allocator/buddy.ts:186:33 (i32.const 16) ) ) ) ) ;;@ (lib)/allocator/buddy.ts:188:9 (i32.const 1) ) (func "$(lib)/allocator/buddy/buckets$get" (; 1 ;) (type $ii) (param $0 i32) (result i32) ;;@ (lib)/allocator/buddy.ts:102:9 (i32.add ;;@ (lib)/allocator/buddy.ts:102:26 (get_global "$(lib)/allocator/buddy/BUCKETS_START") ;;@ (lib)/allocator/buddy.ts:102:42 (i32.shl (get_local $0) ;;@ (lib)/allocator/buddy.ts:102:50 (i32.const 3) ) ) ) (func "$(lib)/allocator/buddy/list_init" (; 2 ;) (type $iv) (param $0 i32) ;;@ (lib)/allocator/buddy.ts:197:2 (i32.store (get_local $0) ;;@ (lib)/allocator/buddy.ts:197:14 (get_local $0) ) ;;@ (lib)/allocator/buddy.ts:198:2 (i32.store offset=4 (get_local $0) ;;@ (lib)/allocator/buddy.ts:198:14 (get_local $0) ) ) (func "$(lib)/allocator/buddy/list_push" (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32) (local $2 i32) ;;@ (lib)/allocator/buddy.ts:207:2 (i32.store (get_local $1) ;;@ (lib)/allocator/buddy.ts:206:2 (tee_local $2 ;;@ (lib)/allocator/buddy.ts:206:13 (i32.load (get_local $0) ) ) ) ;;@ (lib)/allocator/buddy.ts:208:2 (i32.store offset=4 (get_local $1) ;;@ (lib)/allocator/buddy.ts:208:15 (get_local $0) ) ;;@ (lib)/allocator/buddy.ts:209:2 (i32.store offset=4 (get_local $2) ;;@ (lib)/allocator/buddy.ts:209:14 (get_local $1) ) ;;@ (lib)/allocator/buddy.ts:210:2 (i32.store (get_local $0) ;;@ (lib)/allocator/buddy.ts:210:14 (get_local $1) ) ) (func "$(lib)/allocator/buddy/bucket_for_request" (; 4 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) ;;@ (lib)/allocator/buddy.ts:279:2 (set_local $1 ;;@ (lib)/allocator/buddy.ts:279:15 (i32.const 26) ) ;;@ (lib)/allocator/buddy.ts:280:2 (set_local $2 ;;@ (lib)/allocator/buddy.ts:280:13 (i32.const 16) ) (loop $continue|0 (if ;;@ (lib)/allocator/buddy.ts:282:9 (i32.lt_u (get_local $2) ;;@ (lib)/allocator/buddy.ts:282:16 (get_local $0) ) (block ;;@ (lib)/allocator/buddy.ts:283:4 (set_local $1 (i32.sub (get_local $1) (i32.const 1) ) ) ;;@ (lib)/allocator/buddy.ts:284:4 (set_local $2 (i32.shl (get_local $2) ;;@ (lib)/allocator/buddy.ts:284:12 (i32.const 1) ) ) (br $continue|0) ) ) ) ;;@ (lib)/allocator/buddy.ts:287:9 (get_local $1) ) (func "$(lib)/allocator/buddy/node_for_ptr" (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) ;;@ (lib)/allocator/buddy.ts:252:9 (i32.sub (i32.add (i32.shr_u ;;@ (lib)/allocator/buddy.ts:252:10 (i32.sub ;;@ (lib)/allocator/buddy.ts:252:11 (get_local $0) ;;@ (lib)/allocator/buddy.ts:252:17 (get_global "$(lib)/allocator/buddy/base_ptr") ) ;;@ (lib)/allocator/buddy.ts:252:30 (i32.sub ;;@ (lib)/allocator/buddy.ts:252:31 (i32.const 30) ;;@ (lib)/allocator/buddy.ts:252:48 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:252:59 (i32.shl ;;@ (lib)/allocator/buddy.ts:252:60 (i32.const 1) ;;@ (lib)/allocator/buddy.ts:252:65 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:252:75 (i32.const 1) ) ) (func "$(lib)/allocator/buddy/node_is_split$get" (; 6 ;) (type $ii) (param $0 i32) (result i32) ;;@ (lib)/allocator/buddy.ts:148:9 (i32.load8_u ;;@ (lib)/allocator/buddy.ts:148:18 (i32.add (get_global "$(lib)/allocator/buddy/NODE_IS_SPLIT_START") ;;@ (lib)/allocator/buddy.ts:148:40 (get_local $0) ) ) ) (func "$(lib)/allocator/buddy/parent_is_split" (; 7 ;) (type $ii) (param $0 i32) (result i32) ;;@ (lib)/allocator/buddy.ts:260:9 (i32.and (i32.shr_u ;;@ (lib)/allocator/buddy.ts:260:10 (call "$(lib)/allocator/buddy/node_is_split$get" ;;@ (lib)/allocator/buddy.ts:260:28 (i32.div_u ;;@ (lib)/allocator/buddy.ts:259:2 (tee_local $0 ;;@ (lib)/allocator/buddy.ts:259:10 (i32.div_u (i32.sub ;;@ (lib)/allocator/buddy.ts:259:11 (get_local $0) ;;@ (lib)/allocator/buddy.ts:259:19 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:259:24 (i32.const 2) ) ) ;;@ (lib)/allocator/buddy.ts:260:36 (i32.const 8) ) ) ;;@ (lib)/allocator/buddy.ts:260:43 (i32.and ;;@ (lib)/allocator/buddy.ts:260:49 (get_local $0) ;;@ (lib)/allocator/buddy.ts:260:57 (i32.const 7) ) ) ;;@ (lib)/allocator/buddy.ts:260:63 (i32.const 1) ) ) (func "$(lib)/allocator/buddy/list_remove" (; 8 ;) (type $iv) (param $0 i32) (local $1 i32) ;;@ (lib)/allocator/buddy.ts:222:2 (i32.store offset=4 ;;@ (lib)/allocator/buddy.ts:220:2 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:220:13 (i32.load (get_local $0) ) ) ;;@ (lib)/allocator/buddy.ts:221:2 (tee_local $0 ;;@ (lib)/allocator/buddy.ts:221:13 (i32.load offset=4 (get_local $0) ) ) ) ;;@ (lib)/allocator/buddy.ts:223:2 (i32.store (get_local $0) ;;@ (lib)/allocator/buddy.ts:223:14 (get_local $1) ) ) (func "$(lib)/allocator/buddy/ptr_for_node" (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) ;;@ (lib)/allocator/buddy.ts:243:9 (i32.add (get_global "$(lib)/allocator/buddy/base_ptr") ;;@ (lib)/allocator/buddy.ts:243:20 (i32.shl ;;@ (lib)/allocator/buddy.ts:243:21 (i32.add ;;@ (lib)/allocator/buddy.ts:243:22 (i32.sub (get_local $0) ;;@ (lib)/allocator/buddy.ts:243:30 (i32.shl ;;@ (lib)/allocator/buddy.ts:243:31 (i32.const 1) ;;@ (lib)/allocator/buddy.ts:243:36 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:243:46 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:243:52 (i32.sub ;;@ (lib)/allocator/buddy.ts:243:53 (i32.const 30) ;;@ (lib)/allocator/buddy.ts:243:70 (get_local $1) ) ) ) ) (func "$(lib)/allocator/buddy/flip_parent_is_split" (; 10 ;) (type $iv) (param $0 i32) (local $1 i32) (local $2 i32) (set_local $2 ;;@ (lib)/allocator/buddy.ts:268:2 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:268:18 (i32.div_u ;;@ (lib)/allocator/buddy.ts:267:2 (tee_local $0 ;;@ (lib)/allocator/buddy.ts:267:10 (i32.div_u (i32.sub ;;@ (lib)/allocator/buddy.ts:267:11 (get_local $0) ;;@ (lib)/allocator/buddy.ts:267:19 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:267:24 (i32.const 2) ) ) ;;@ (lib)/allocator/buddy.ts:268:26 (i32.const 8) ) ) ) (set_local $0 ;;@ (lib)/allocator/buddy.ts:270:4 (i32.xor (call "$(lib)/allocator/buddy/node_is_split$get" ;;@ (lib)/allocator/buddy.ts:270:22 (get_local $1) ) ;;@ (lib)/allocator/buddy.ts:270:35 (i32.shl ;;@ (lib)/allocator/buddy.ts:270:41 (i32.const 1) ;;@ (lib)/allocator/buddy.ts:270:46 (i32.and ;;@ (lib)/allocator/buddy.ts:270:47 (get_local $0) ;;@ (lib)/allocator/buddy.ts:270:55 (i32.const 7) ) ) ) ) (i32.store8 (i32.add (get_global "$(lib)/allocator/buddy/NODE_IS_SPLIT_START") (get_local $2) ) (get_local $0) ) ) (func "$(lib)/allocator/buddy/lower_bucket_limit" (; 11 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (loop $continue|0 (if ;;@ (lib)/allocator/buddy.ts:296:9 (i32.lt_u (get_local $0) ;;@ (lib)/allocator/buddy.ts:296:18 (get_global "$(lib)/allocator/buddy/bucket_limit") ) (block ;;@ (lib)/allocator/buddy.ts:306:4 (if ;;@ (lib)/allocator/buddy.ts:306:8 (i32.eqz ;;@ (lib)/allocator/buddy.ts:306:9 (call "$(lib)/allocator/buddy/parent_is_split" ;;@ (lib)/allocator/buddy.ts:297:4 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:297:15 (call "$(lib)/allocator/buddy/node_for_ptr" ;;@ (lib)/allocator/buddy.ts:297:28 (get_global "$(lib)/allocator/buddy/base_ptr") ;;@ (lib)/allocator/buddy.ts:297:38 (get_global "$(lib)/allocator/buddy/bucket_limit") ) ) ) ) ;;@ (lib)/allocator/buddy.ts:306:32 (block ;;@ (lib)/allocator/buddy.ts:307:6 (call "$(lib)/allocator/buddy/list_remove" ;;@ (lib)/allocator/buddy.ts:307:18 (get_global "$(lib)/allocator/buddy/base_ptr") ) ;;@ (lib)/allocator/buddy.ts:308:6 (call "$(lib)/allocator/buddy/list_init" ;;@ (lib)/allocator/buddy.ts:308:16 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:308:28 (block (result i32) (set_global "$(lib)/allocator/buddy/bucket_limit" (i32.sub ;;@ (lib)/allocator/buddy.ts:308:30 (get_global "$(lib)/allocator/buddy/bucket_limit") (i32.const 1) ) ) (get_global "$(lib)/allocator/buddy/bucket_limit") ) ) ) ;;@ (lib)/allocator/buddy.ts:309:6 (call "$(lib)/allocator/buddy/list_push" ;;@ (lib)/allocator/buddy.ts:309:16 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:309:28 (get_global "$(lib)/allocator/buddy/bucket_limit") ) ;;@ (lib)/allocator/buddy.ts:309:43 (get_global "$(lib)/allocator/buddy/base_ptr") ) ;;@ (lib)/allocator/buddy.ts:310:6 (br $continue|0) ) ) ;;@ (lib)/allocator/buddy.ts:322:4 (if ;;@ (lib)/allocator/buddy.ts:322:8 (i32.eqz ;;@ (lib)/allocator/buddy.ts:322:9 (call "$(lib)/allocator/buddy/update_max_ptr" ;;@ (lib)/allocator/buddy.ts:322:24 (i32.add ;;@ (lib)/allocator/buddy.ts:321:4 (tee_local $2 ;;@ (lib)/allocator/buddy.ts:321:18 (call "$(lib)/allocator/buddy/ptr_for_node" ;;@ (lib)/allocator/buddy.ts:321:31 (i32.add (get_local $1) ;;@ (lib)/allocator/buddy.ts:321:38 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:321:41 (get_global "$(lib)/allocator/buddy/bucket_limit") ) ) ;;@ (lib)/allocator/buddy.ts:322:38 (i32.const 8) ) ) ) ;;@ (lib)/allocator/buddy.ts:323:13 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:325:4 (call "$(lib)/allocator/buddy/list_push" ;;@ (lib)/allocator/buddy.ts:325:14 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:325:26 (get_global "$(lib)/allocator/buddy/bucket_limit") ) ;;@ (lib)/allocator/buddy.ts:325:41 (get_local $2) ) ;;@ (lib)/allocator/buddy.ts:326:4 (call "$(lib)/allocator/buddy/list_init" ;;@ (lib)/allocator/buddy.ts:326:14 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:326:26 (block (result i32) (set_global "$(lib)/allocator/buddy/bucket_limit" (i32.sub ;;@ (lib)/allocator/buddy.ts:326:28 (get_global "$(lib)/allocator/buddy/bucket_limit") (i32.const 1) ) ) (get_global "$(lib)/allocator/buddy/bucket_limit") ) ) ) ;;@ (lib)/allocator/buddy.ts:333:4 (if ;;@ (lib)/allocator/buddy.ts:332:4 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:332:11 (i32.div_u (i32.sub ;;@ (lib)/allocator/buddy.ts:332:12 (get_local $1) ;;@ (lib)/allocator/buddy.ts:332:19 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:332:24 (i32.const 2) ) ) ;;@ (lib)/allocator/buddy.ts:334:6 (call "$(lib)/allocator/buddy/flip_parent_is_split" ;;@ (lib)/allocator/buddy.ts:334:27 (get_local $1) ) ) (br $continue|0) ) ) ) ;;@ (lib)/allocator/buddy.ts:338:9 (i32.const 1) ) (func "$(lib)/allocator/buddy/list_pop" (; 12 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) ;;@ (lib)/allocator/buddy.ts:231:2 (if ;;@ (lib)/allocator/buddy.ts:231:6 (i32.eq ;;@ (lib)/allocator/buddy.ts:230:2 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:230:13 (i32.load (get_local $0) ) ) ;;@ (lib)/allocator/buddy.ts:231:14 (get_local $0) ) ;;@ (lib)/allocator/buddy.ts:231:27 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:232:2 (call "$(lib)/allocator/buddy/list_remove" ;;@ (lib)/allocator/buddy.ts:232:14 (get_local $1) ) ;;@ (lib)/allocator/buddy.ts:233:9 (get_local $1) ) (func "$(lib)/allocator/buddy/allocate_memory" (; 13 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) ;;@ (lib)/allocator/buddy.ts:350:2 (if ;;@ (lib)/allocator/buddy.ts:350:6 (i32.gt_u (i32.add (get_local $0) ;;@ (lib)/allocator/buddy.ts:350:16 (i32.const 8) ) ;;@ (lib)/allocator/buddy.ts:350:30 (i32.const 1073741824) ) ;;@ (lib)/allocator/buddy.ts:351:11 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:359:2 (if (i32.eqz ;;@ (lib)/allocator/buddy.ts:359:6 (get_global "$(lib)/allocator/buddy/base_ptr") ) ;;@ (lib)/allocator/buddy.ts:359:21 (block ;;@ (lib)/allocator/buddy.ts:361:4 (set_global "$(lib)/allocator/buddy/base_ptr" ;;@ (lib)/allocator/buddy.ts:361:15 (i32.and (i32.add ;;@ (lib)/allocator/buddy.ts:361:16 (get_global "$(lib)/allocator/buddy/NODE_IS_SPLIT_END") ;;@ (lib)/allocator/buddy.ts:361:36 (i32.const 7) ) (i32.const -8) ) ) ;;@ (lib)/allocator/buddy.ts:362:4 (set_global "$(lib)/allocator/buddy/max_ptr" ;;@ (lib)/allocator/buddy.ts:362:14 (i32.shl (current_memory) ;;@ (lib)/allocator/buddy.ts:362:41 (i32.const 16) ) ) ;;@ (lib)/allocator/buddy.ts:363:4 (set_global "$(lib)/allocator/buddy/bucket_limit" ;;@ (lib)/allocator/buddy.ts:363:19 (i32.const 26) ) ;;@ (lib)/allocator/buddy.ts:364:4 (if ;;@ (lib)/allocator/buddy.ts:364:8 (i32.eqz ;;@ (lib)/allocator/buddy.ts:364:9 (call "$(lib)/allocator/buddy/update_max_ptr" ;;@ (lib)/allocator/buddy.ts:364:24 (i32.add (get_global "$(lib)/allocator/buddy/base_ptr") ;;@ (lib)/allocator/buddy.ts:364:35 (i32.const 8) ) ) ) ;;@ (lib)/allocator/buddy.ts:365:13 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:367:4 (call "$(lib)/allocator/buddy/list_init" ;;@ (lib)/allocator/buddy.ts:367:14 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:367:26 (i32.const 26) ) ) ;;@ (lib)/allocator/buddy.ts:368:4 (call "$(lib)/allocator/buddy/list_push" ;;@ (lib)/allocator/buddy.ts:368:14 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:368:26 (i32.const 26) ) ;;@ (lib)/allocator/buddy.ts:368:45 (get_global "$(lib)/allocator/buddy/base_ptr") ) ) ) ;;@ (lib)/allocator/buddy.ts:376:2 (set_local $4 ;;@ (lib)/allocator/buddy.ts:375:2 (tee_local $1 ;;@ (lib)/allocator/buddy.ts:375:11 (call "$(lib)/allocator/buddy/bucket_for_request" ;;@ (lib)/allocator/buddy.ts:375:30 (i32.add (get_local $0) ;;@ (lib)/allocator/buddy.ts:375:40 (i32.const 8) ) ) ) ) (loop $continue|0 (if ;;@ (lib)/allocator/buddy.ts:383:9 (i32.add (get_local $1) ;;@ (lib)/allocator/buddy.ts:383:18 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:383:26 (block ;;@ (lib)/allocator/buddy.ts:391:4 (if ;;@ (lib)/allocator/buddy.ts:391:8 (i32.eqz ;;@ (lib)/allocator/buddy.ts:391:9 (call "$(lib)/allocator/buddy/lower_bucket_limit" ;;@ (lib)/allocator/buddy.ts:391:28 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:392:13 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:400:4 (if ;;@ (lib)/allocator/buddy.ts:400:8 (i32.eqz ;;@ (lib)/allocator/buddy.ts:399:4 (tee_local $2 ;;@ (lib)/allocator/buddy.ts:399:10 (call "$(lib)/allocator/buddy/list_pop" ;;@ (lib)/allocator/buddy.ts:399:37 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:399:49 (get_local $1) ) ) ) ) ;;@ (lib)/allocator/buddy.ts:400:14 (block ;;@ (lib)/allocator/buddy.ts:405:6 (if ;;@ (lib)/allocator/buddy.ts:405:10 (i32.and (if (result i32) (tee_local $2 (i32.ne (get_local $1) ;;@ (lib)/allocator/buddy.ts:405:20 (get_global "$(lib)/allocator/buddy/bucket_limit") ) ) (get_local $2) (i32.eqz ;;@ (lib)/allocator/buddy.ts:405:36 (get_local $1) ) ) (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:405:49 (block ;;@ (lib)/allocator/buddy.ts:406:8 (set_local $1 (i32.sub (get_local $1) (i32.const 1) ) ) ;;@ (lib)/allocator/buddy.ts:407:8 (br $continue|0) ) ) ;;@ (lib)/allocator/buddy.ts:417:6 (if ;;@ (lib)/allocator/buddy.ts:417:10 (i32.eqz ;;@ (lib)/allocator/buddy.ts:417:11 (call "$(lib)/allocator/buddy/lower_bucket_limit" ;;@ (lib)/allocator/buddy.ts:417:30 (i32.sub (get_local $1) ;;@ (lib)/allocator/buddy.ts:417:39 (i32.const 1) ) ) ) ;;@ (lib)/allocator/buddy.ts:418:15 (return (i32.const 0) ) ) ;;@ (lib)/allocator/buddy.ts:420:6 (set_local $2 ;;@ (lib)/allocator/buddy.ts:420:12 (call "$(lib)/allocator/buddy/list_pop" ;;@ (lib)/allocator/buddy.ts:420:39 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:420:51 (get_local $1) ) ) ) ) ) ;;@ (lib)/allocator/buddy.ts:427:4 (set_local $3 ;;@ (lib)/allocator/buddy.ts:427:11 (i32.shl (i32.const 1) ;;@ (lib)/allocator/buddy.ts:427:16 (i32.sub ;;@ (lib)/allocator/buddy.ts:427:17 (i32.const 30) ;;@ (lib)/allocator/buddy.ts:427:34 (get_local $1) ) ) ) ;;@ (lib)/allocator/buddy.ts:429:4 (if ;;@ (lib)/allocator/buddy.ts:429:8 (i32.eqz ;;@ (lib)/allocator/buddy.ts:429:9 (call "$(lib)/allocator/buddy/update_max_ptr" ;;@ (lib)/allocator/buddy.ts:429:24 (i32.add (get_local $2) ;;@ (lib)/allocator/buddy.ts:428:19 (if (result i32) (i32.lt_u (get_local $1) ;;@ (lib)/allocator/buddy.ts:428:28 (get_local $4) ) ;;@ (lib)/allocator/buddy.ts:428:46 (i32.add (i32.div_u (get_local $3) ;;@ (lib)/allocator/buddy.ts:428:53 (i32.const 2) ) ;;@ (lib)/allocator/buddy.ts:428:57 (i32.const 8) ) ;;@ (lib)/allocator/buddy.ts:428:69 (get_local $3) ) ) ) ) ;;@ (lib)/allocator/buddy.ts:429:45 (block ;;@ (lib)/allocator/buddy.ts:430:6 (call "$(lib)/allocator/buddy/list_push" ;;@ (lib)/allocator/buddy.ts:430:16 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:430:28 (get_local $1) ) ;;@ (lib)/allocator/buddy.ts:430:37 (get_local $2) ) ;;@ (lib)/allocator/buddy.ts:431:13 (return (i32.const 0) ) ) ) ;;@ (lib)/allocator/buddy.ts:446:4 (if ;;@ (lib)/allocator/buddy.ts:445:4 (tee_local $3 ;;@ (lib)/allocator/buddy.ts:445:8 (call "$(lib)/allocator/buddy/node_for_ptr" ;;@ (lib)/allocator/buddy.ts:445:21 (get_local $2) ;;@ (lib)/allocator/buddy.ts:445:26 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:447:6 (call "$(lib)/allocator/buddy/flip_parent_is_split" ;;@ (lib)/allocator/buddy.ts:447:27 (get_local $3) ) ) (loop $continue|1 (if ;;@ (lib)/allocator/buddy.ts:457:11 (i32.lt_u (get_local $1) ;;@ (lib)/allocator/buddy.ts:457:20 (get_local $4) ) (block ;;@ (lib)/allocator/buddy.ts:460:6 (call "$(lib)/allocator/buddy/flip_parent_is_split" ;;@ (lib)/allocator/buddy.ts:458:6 (tee_local $3 ;;@ (lib)/allocator/buddy.ts:458:10 (i32.add (i32.shl (get_local $3) ;;@ (lib)/allocator/buddy.ts:458:14 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:458:18 (i32.const 1) ) ) ) ;;@ (lib)/allocator/buddy.ts:461:6 (call "$(lib)/allocator/buddy/list_push" ;;@ (lib)/allocator/buddy.ts:462:8 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:459:6 (tee_local $1 (i32.add (get_local $1) (i32.const 1) ) ) ) ;;@ (lib)/allocator/buddy.ts:463:8 (call "$(lib)/allocator/buddy/ptr_for_node" ;;@ (lib)/allocator/buddy.ts:463:38 (i32.add (get_local $3) ;;@ (lib)/allocator/buddy.ts:463:42 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:463:45 (get_local $1) ) ) (br $continue|1) ) ) ) ;;@ (lib)/allocator/buddy.ts:471:4 (i32.store ;;@ (lib)/allocator/buddy.ts:471:17 (get_local $2) ;;@ (lib)/allocator/buddy.ts:471:22 (get_local $0) ) ;;@ (lib)/allocator/buddy.ts:472:17 (return ;;@ (lib)/allocator/buddy.ts:472:11 (i32.add (get_local $2) ;;@ (lib)/allocator/buddy.ts:472:17 (i32.const 8) ) ) ) ) ) ;;@ (lib)/allocator/buddy.ts:475:9 (i32.const 0) ) (func "$(lib)/allocator/buddy/free_memory" (; 14 ;) (type $iv) (param $0 i32) (local $1 i32) (local $2 i32) ;;@ (lib)/allocator/buddy.ts:485:2 (if ;;@ (lib)/allocator/buddy.ts:485:6 (i32.eqz ;;@ (lib)/allocator/buddy.ts:485:7 (get_local $0) ) ;;@ (lib)/allocator/buddy.ts:486:4 (return) ) ;;@ (lib)/allocator/buddy.ts:495:2 (set_local $1 ;;@ (lib)/allocator/buddy.ts:495:11 (call "$(lib)/allocator/buddy/bucket_for_request" ;;@ (lib)/allocator/buddy.ts:495:30 (i32.add (i32.load ;;@ (lib)/allocator/buddy.ts:494:2 (tee_local $0 ;;@ (lib)/allocator/buddy.ts:494:8 (i32.sub (get_local $0) ;;@ (lib)/allocator/buddy.ts:494:14 (i32.const 8) ) ) ) ;;@ (lib)/allocator/buddy.ts:495:49 (i32.const 8) ) ) ) ;;@ (lib)/allocator/buddy.ts:496:2 (set_local $0 ;;@ (lib)/allocator/buddy.ts:496:6 (call "$(lib)/allocator/buddy/node_for_ptr" ;;@ (lib)/allocator/buddy.ts:496:19 (get_local $0) ;;@ (lib)/allocator/buddy.ts:496:24 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:502:2 (block $break|0 (loop $continue|0 (if ;;@ (lib)/allocator/buddy.ts:502:9 (get_local $0) (block ;;@ (lib)/allocator/buddy.ts:509:4 (call "$(lib)/allocator/buddy/flip_parent_is_split" ;;@ (lib)/allocator/buddy.ts:509:25 (get_local $0) ) ;;@ (lib)/allocator/buddy.ts:520:6 (br_if $break|0 ;;@ (lib)/allocator/buddy.ts:519:8 (if (result i32) (tee_local $2 (call "$(lib)/allocator/buddy/parent_is_split" ;;@ (lib)/allocator/buddy.ts:519:24 (get_local $0) ) ) (get_local $2) ;;@ (lib)/allocator/buddy.ts:519:30 (i32.eq (get_local $1) ;;@ (lib)/allocator/buddy.ts:519:40 (get_global "$(lib)/allocator/buddy/bucket_limit") ) ) ) ;;@ (lib)/allocator/buddy.ts:530:4 (call "$(lib)/allocator/buddy/list_remove" ;;@ (lib)/allocator/buddy.ts:530:16 (call "$(lib)/allocator/buddy/ptr_for_node" ;;@ (lib)/allocator/buddy.ts:530:46 (i32.add (i32.xor ;;@ (lib)/allocator/buddy.ts:530:47 (i32.sub ;;@ (lib)/allocator/buddy.ts:530:48 (get_local $0) ;;@ (lib)/allocator/buddy.ts:530:52 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:530:57 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:530:62 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:530:65 (get_local $1) ) ) ;;@ (lib)/allocator/buddy.ts:531:4 (set_local $0 ;;@ (lib)/allocator/buddy.ts:531:8 (i32.div_u (i32.sub ;;@ (lib)/allocator/buddy.ts:531:9 (get_local $0) ;;@ (lib)/allocator/buddy.ts:531:13 (i32.const 1) ) ;;@ (lib)/allocator/buddy.ts:531:18 (i32.const 2) ) ) ;;@ (lib)/allocator/buddy.ts:532:4 (set_local $1 (i32.sub (get_local $1) (i32.const 1) ) ) (br $continue|0) ) ) ) ) ;;@ (lib)/allocator/buddy.ts:541:2 (call "$(lib)/allocator/buddy/list_push" ;;@ (lib)/allocator/buddy.ts:541:12 (call "$(lib)/allocator/buddy/buckets$get" ;;@ (lib)/allocator/buddy.ts:541:24 (get_local $1) ) ;;@ (lib)/allocator/buddy.ts:541:33 (call "$(lib)/allocator/buddy/ptr_for_node" ;;@ (lib)/allocator/buddy.ts:541:63 (get_local $0) ;;@ (lib)/allocator/buddy.ts:541:66 (get_local $1) ) ) ) (func $start (; 15 ;) (type $v) (set_global "$(lib)/allocator/buddy/BUCKETS_START" ;;@ (lib)/allocator/buddy.ts:97:27 (get_global $HEAP_BASE) ) (set_global "$(lib)/allocator/buddy/BUCKETS_END" ;;@ (lib)/allocator/buddy.ts:98:25 (i32.add (get_global "$(lib)/allocator/buddy/BUCKETS_START") (i32.const 216) ) ) (set_global "$(lib)/allocator/buddy/NODE_IS_SPLIT_START" ;;@ (lib)/allocator/buddy.ts:143:33 (get_global "$(lib)/allocator/buddy/BUCKETS_END") ) (set_global "$(lib)/allocator/buddy/NODE_IS_SPLIT_END" ;;@ (lib)/allocator/buddy.ts:144:31 (i32.add (get_global "$(lib)/allocator/buddy/NODE_IS_SPLIT_START") ;;@ (lib)/allocator/buddy.ts:144:53 (i32.const 8388608) ) ) ) )