(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 $assembly/buddy/BUCKETS_START (mut i32) (i32.const 0)) (global $assembly/buddy/BUCKETS_END (mut i32) (i32.const 0)) (global $assembly/buddy/bucket_limit (mut i32) (i32.const 0)) (global $assembly/buddy/NODE_IS_SPLIT_START (mut i32) (i32.const 0)) (global $assembly/buddy/NODE_IS_SPLIT_END (mut i32) (i32.const 0)) (global $assembly/buddy/base_ptr (mut i32) (i32.const 0)) (global $assembly/buddy/max_ptr (mut i32) (i32.const 0)) (global $HEAP_BASE i32 (i32.const 4)) (memory $0 1) (export "allocate_memory" (func $assembly/buddy/allocate_memory)) (export "free_memory" (func $assembly/buddy/free_memory)) (export "memory" (memory $0)) (start $start) (func $assembly/buddy/update_max_ptr (; 0 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) ;;@ assembly/buddy.ts:170:2 (if ;;@ assembly/buddy.ts:170:6 (i32.gt_u (get_local $0) ;;@ assembly/buddy.ts:170:18 (get_global $assembly/buddy/max_ptr) ) ;;@ assembly/buddy.ts:170:27 (block ;;@ assembly/buddy.ts:177:4 (if ;;@ assembly/buddy.ts:177:8 (i32.lt_s (grow_memory ;;@ assembly/buddy.ts:177:20 (i32.sub ;;@ assembly/buddy.ts:175:4 (tee_local $1 ;;@ assembly/buddy.ts:175:19 (i32.shr_u ;;@ assembly/buddy.ts:175:25 (i32.and ;;@ assembly/buddy.ts:175:26 (i32.add ;;@ assembly/buddy.ts:175:27 (get_local $0) ;;@ assembly/buddy.ts:175:39 (i32.const 65535) ) (i32.const -65536) ) ;;@ assembly/buddy.ts:175:61 (i32.const 16) ) ) ;;@ assembly/buddy.ts:174:19 (current_memory) ) ) ;;@ assembly/buddy.ts:177:43 (i32.const 0) ) ;;@ assembly/buddy.ts:178:13 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:181:4 (set_global $assembly/buddy/max_ptr ;;@ assembly/buddy.ts:181:14 (i32.shl (get_local $1) ;;@ assembly/buddy.ts:181:33 (i32.const 16) ) ) ) ) ;;@ assembly/buddy.ts:183:9 (i32.const 1) ) (func $assembly/buddy/buckets$get (; 1 ;) (type $ii) (param $0 i32) (result i32) ;;@ assembly/buddy.ts:97:9 (i32.add ;;@ assembly/buddy.ts:97:26 (get_global $assembly/buddy/BUCKETS_START) ;;@ assembly/buddy.ts:97:42 (i32.shl (get_local $0) ;;@ assembly/buddy.ts:97:50 (i32.const 3) ) ) ) (func $assembly/buddy/list_init (; 2 ;) (type $iv) (param $0 i32) ;;@ assembly/buddy.ts:192:2 (i32.store (get_local $0) ;;@ assembly/buddy.ts:192:14 (get_local $0) ) ;;@ assembly/buddy.ts:193:2 (i32.store offset=4 (get_local $0) ;;@ assembly/buddy.ts:193:14 (get_local $0) ) ) (func $assembly/buddy/list_push (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32) (local $2 i32) ;;@ assembly/buddy.ts:202:2 (i32.store (get_local $1) ;;@ assembly/buddy.ts:201:2 (tee_local $2 ;;@ assembly/buddy.ts:201:13 (i32.load (get_local $0) ) ) ) ;;@ assembly/buddy.ts:203:2 (i32.store offset=4 (get_local $1) ;;@ assembly/buddy.ts:203:15 (get_local $0) ) ;;@ assembly/buddy.ts:204:2 (i32.store offset=4 (get_local $2) ;;@ assembly/buddy.ts:204:14 (get_local $1) ) ;;@ assembly/buddy.ts:205:2 (i32.store (get_local $0) ;;@ assembly/buddy.ts:205:14 (get_local $1) ) ) (func $assembly/buddy/bucket_for_request (; 4 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) ;;@ assembly/buddy.ts:274:2 (set_local $1 ;;@ assembly/buddy.ts:274:15 (i32.const 27) ) ;;@ assembly/buddy.ts:275:2 (set_local $2 ;;@ assembly/buddy.ts:275:13 (i32.const 16) ) (loop $continue|0 (if ;;@ assembly/buddy.ts:277:9 (i32.lt_u (get_local $2) ;;@ assembly/buddy.ts:277:16 (get_local $0) ) (block ;;@ assembly/buddy.ts:278:4 (set_local $1 (i32.sub (get_local $1) (i32.const 1) ) ) ;;@ assembly/buddy.ts:279:4 (set_local $2 (i32.shl (get_local $2) ;;@ assembly/buddy.ts:279:12 (i32.const 1) ) ) (br $continue|0) ) ) ) ;;@ assembly/buddy.ts:282:9 (get_local $1) ) (func $assembly/buddy/node_for_ptr (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) ;;@ assembly/buddy.ts:247:9 (i32.sub (i32.add (i32.shr_u ;;@ assembly/buddy.ts:247:10 (i32.sub ;;@ assembly/buddy.ts:247:11 (get_local $0) ;;@ assembly/buddy.ts:247:17 (get_global $assembly/buddy/base_ptr) ) ;;@ assembly/buddy.ts:247:30 (i32.sub ;;@ assembly/buddy.ts:247:31 (i32.const 31) ;;@ assembly/buddy.ts:247:48 (get_local $1) ) ) ;;@ assembly/buddy.ts:247:59 (i32.shl ;;@ assembly/buddy.ts:247:60 (i32.const 1) ;;@ assembly/buddy.ts:247:65 (get_local $1) ) ) ;;@ assembly/buddy.ts:247:75 (i32.const 1) ) ) (func $assembly/buddy/node_is_split$get (; 6 ;) (type $ii) (param $0 i32) (result i32) ;;@ assembly/buddy.ts:143:9 (i32.load8_u ;;@ assembly/buddy.ts:143:18 (i32.add (get_global $assembly/buddy/NODE_IS_SPLIT_START) ;;@ assembly/buddy.ts:143:40 (get_local $0) ) ) ) (func $assembly/buddy/parent_is_split (; 7 ;) (type $ii) (param $0 i32) (result i32) ;;@ assembly/buddy.ts:255:9 (i32.and (i32.shr_u ;;@ assembly/buddy.ts:255:10 (call $assembly/buddy/node_is_split$get ;;@ assembly/buddy.ts:255:28 (i32.div_u ;;@ assembly/buddy.ts:254:2 (tee_local $0 ;;@ assembly/buddy.ts:254:10 (i32.div_u (i32.sub ;;@ assembly/buddy.ts:254:11 (get_local $0) ;;@ assembly/buddy.ts:254:19 (i32.const 1) ) ;;@ assembly/buddy.ts:254:24 (i32.const 2) ) ) ;;@ assembly/buddy.ts:255:36 (i32.const 8) ) ) ;;@ assembly/buddy.ts:255:43 (i32.and ;;@ assembly/buddy.ts:255:49 (get_local $0) ;;@ assembly/buddy.ts:255:57 (i32.const 7) ) ) ;;@ assembly/buddy.ts:255:63 (i32.const 1) ) ) (func $assembly/buddy/list_remove (; 8 ;) (type $iv) (param $0 i32) (local $1 i32) ;;@ assembly/buddy.ts:217:2 (i32.store offset=4 ;;@ assembly/buddy.ts:215:2 (tee_local $1 ;;@ assembly/buddy.ts:215:13 (i32.load (get_local $0) ) ) ;;@ assembly/buddy.ts:216:2 (tee_local $0 ;;@ assembly/buddy.ts:216:13 (i32.load offset=4 (get_local $0) ) ) ) ;;@ assembly/buddy.ts:218:2 (i32.store (get_local $0) ;;@ assembly/buddy.ts:218:14 (get_local $1) ) ) (func $assembly/buddy/ptr_for_node (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) ;;@ assembly/buddy.ts:238:9 (i32.add (get_global $assembly/buddy/base_ptr) ;;@ assembly/buddy.ts:238:20 (i32.shl ;;@ assembly/buddy.ts:238:21 (i32.add ;;@ assembly/buddy.ts:238:22 (i32.sub (get_local $0) ;;@ assembly/buddy.ts:238:30 (i32.shl ;;@ assembly/buddy.ts:238:31 (i32.const 1) ;;@ assembly/buddy.ts:238:36 (get_local $1) ) ) ;;@ assembly/buddy.ts:238:46 (i32.const 1) ) ;;@ assembly/buddy.ts:238:52 (i32.sub ;;@ assembly/buddy.ts:238:53 (i32.const 31) ;;@ assembly/buddy.ts:238:70 (get_local $1) ) ) ) ) (func $assembly/buddy/flip_parent_is_split (; 10 ;) (type $iv) (param $0 i32) (local $1 i32) (local $2 i32) (set_local $2 ;;@ assembly/buddy.ts:263:2 (tee_local $1 ;;@ assembly/buddy.ts:263:18 (i32.div_u ;;@ assembly/buddy.ts:262:2 (tee_local $0 ;;@ assembly/buddy.ts:262:10 (i32.div_u (i32.sub ;;@ assembly/buddy.ts:262:11 (get_local $0) ;;@ assembly/buddy.ts:262:19 (i32.const 1) ) ;;@ assembly/buddy.ts:262:24 (i32.const 2) ) ) ;;@ assembly/buddy.ts:263:26 (i32.const 8) ) ) ) (set_local $0 ;;@ assembly/buddy.ts:265:4 (i32.xor (call $assembly/buddy/node_is_split$get ;;@ assembly/buddy.ts:265:22 (get_local $1) ) ;;@ assembly/buddy.ts:265:35 (i32.shl ;;@ assembly/buddy.ts:265:41 (i32.const 1) ;;@ assembly/buddy.ts:265:46 (i32.and ;;@ assembly/buddy.ts:265:47 (get_local $0) ;;@ assembly/buddy.ts:265:55 (i32.const 7) ) ) ) ) (i32.store8 (i32.add (get_global $assembly/buddy/NODE_IS_SPLIT_START) (get_local $2) ) (get_local $0) ) ) (func $assembly/buddy/lower_bucket_limit (; 11 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (loop $continue|0 (if ;;@ assembly/buddy.ts:291:9 (i32.lt_u (get_local $0) ;;@ assembly/buddy.ts:291:18 (get_global $assembly/buddy/bucket_limit) ) (block ;;@ assembly/buddy.ts:301:4 (if ;;@ assembly/buddy.ts:301:8 (i32.eqz ;;@ assembly/buddy.ts:301:9 (call $assembly/buddy/parent_is_split ;;@ assembly/buddy.ts:292:4 (tee_local $1 ;;@ assembly/buddy.ts:292:15 (call $assembly/buddy/node_for_ptr ;;@ assembly/buddy.ts:292:28 (get_global $assembly/buddy/base_ptr) ;;@ assembly/buddy.ts:292:38 (get_global $assembly/buddy/bucket_limit) ) ) ) ) ;;@ assembly/buddy.ts:301:32 (block ;;@ assembly/buddy.ts:302:6 (call $assembly/buddy/list_remove ;;@ assembly/buddy.ts:302:18 (get_global $assembly/buddy/base_ptr) ) ;;@ assembly/buddy.ts:303:6 (call $assembly/buddy/list_init ;;@ assembly/buddy.ts:303:16 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:303:28 (block (result i32) (set_global $assembly/buddy/bucket_limit (i32.sub ;;@ assembly/buddy.ts:303:30 (get_global $assembly/buddy/bucket_limit) (i32.const 1) ) ) (get_global $assembly/buddy/bucket_limit) ) ) ) ;;@ assembly/buddy.ts:304:6 (call $assembly/buddy/list_push ;;@ assembly/buddy.ts:304:16 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:304:28 (get_global $assembly/buddy/bucket_limit) ) ;;@ assembly/buddy.ts:304:43 (get_global $assembly/buddy/base_ptr) ) ;;@ assembly/buddy.ts:305:6 (br $continue|0) ) ) ;;@ assembly/buddy.ts:317:4 (if ;;@ assembly/buddy.ts:317:8 (i32.eqz ;;@ assembly/buddy.ts:317:9 (call $assembly/buddy/update_max_ptr ;;@ assembly/buddy.ts:317:24 (i32.add ;;@ assembly/buddy.ts:316:4 (tee_local $2 ;;@ assembly/buddy.ts:316:18 (call $assembly/buddy/ptr_for_node ;;@ assembly/buddy.ts:316:31 (i32.add (get_local $1) ;;@ assembly/buddy.ts:316:38 (i32.const 1) ) ;;@ assembly/buddy.ts:316:41 (get_global $assembly/buddy/bucket_limit) ) ) ;;@ assembly/buddy.ts:317:38 (i32.const 8) ) ) ) ;;@ assembly/buddy.ts:318:13 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:320:4 (call $assembly/buddy/list_push ;;@ assembly/buddy.ts:320:14 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:320:26 (get_global $assembly/buddy/bucket_limit) ) ;;@ assembly/buddy.ts:320:41 (get_local $2) ) ;;@ assembly/buddy.ts:321:4 (call $assembly/buddy/list_init ;;@ assembly/buddy.ts:321:14 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:321:26 (block (result i32) (set_global $assembly/buddy/bucket_limit (i32.sub ;;@ assembly/buddy.ts:321:28 (get_global $assembly/buddy/bucket_limit) (i32.const 1) ) ) (get_global $assembly/buddy/bucket_limit) ) ) ) ;;@ assembly/buddy.ts:328:4 (if ;;@ assembly/buddy.ts:327:4 (tee_local $1 ;;@ assembly/buddy.ts:327:11 (i32.div_u (i32.sub ;;@ assembly/buddy.ts:327:12 (get_local $1) ;;@ assembly/buddy.ts:327:19 (i32.const 1) ) ;;@ assembly/buddy.ts:327:24 (i32.const 2) ) ) ;;@ assembly/buddy.ts:329:6 (call $assembly/buddy/flip_parent_is_split ;;@ assembly/buddy.ts:329:27 (get_local $1) ) ) (br $continue|0) ) ) ) ;;@ assembly/buddy.ts:333:9 (i32.const 1) ) (func $assembly/buddy/list_pop (; 12 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) ;;@ assembly/buddy.ts:226:2 (if ;;@ assembly/buddy.ts:226:6 (i32.eq ;;@ assembly/buddy.ts:225:2 (tee_local $1 ;;@ assembly/buddy.ts:225:13 (i32.load (get_local $0) ) ) ;;@ assembly/buddy.ts:226:14 (get_local $0) ) ;;@ assembly/buddy.ts:226:27 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:227:2 (call $assembly/buddy/list_remove ;;@ assembly/buddy.ts:227:14 (get_local $1) ) ;;@ assembly/buddy.ts:228:9 (get_local $1) ) (func $assembly/buddy/allocate_memory (; 13 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) ;;@ assembly/buddy.ts:345:2 (if ;;@ assembly/buddy.ts:345:6 (i32.gt_u (i32.add (get_local $0) ;;@ assembly/buddy.ts:345:16 (i32.const 8) ) ;;@ assembly/buddy.ts:345:30 (i32.const -2147483648) ) ;;@ assembly/buddy.ts:346:11 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:354:2 (if (i32.eqz ;;@ assembly/buddy.ts:354:6 (get_global $assembly/buddy/base_ptr) ) ;;@ assembly/buddy.ts:354:21 (block ;;@ assembly/buddy.ts:356:4 (set_global $assembly/buddy/base_ptr ;;@ assembly/buddy.ts:356:15 (i32.and (i32.add ;;@ assembly/buddy.ts:356:16 (get_global $assembly/buddy/NODE_IS_SPLIT_END) ;;@ assembly/buddy.ts:356:36 (i32.const 7) ) (i32.const -8) ) ) ;;@ assembly/buddy.ts:357:4 (set_global $assembly/buddy/max_ptr ;;@ assembly/buddy.ts:357:14 (i32.shl (current_memory) ;;@ assembly/buddy.ts:357:41 (i32.const 16) ) ) ;;@ assembly/buddy.ts:358:4 (set_global $assembly/buddy/bucket_limit ;;@ assembly/buddy.ts:358:19 (i32.const 27) ) ;;@ assembly/buddy.ts:359:4 (if ;;@ assembly/buddy.ts:359:8 (i32.eqz ;;@ assembly/buddy.ts:359:9 (call $assembly/buddy/update_max_ptr ;;@ assembly/buddy.ts:359:24 (i32.add (get_global $assembly/buddy/base_ptr) ;;@ assembly/buddy.ts:359:35 (i32.const 8) ) ) ) ;;@ assembly/buddy.ts:360:13 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:362:4 (call $assembly/buddy/list_init ;;@ assembly/buddy.ts:362:14 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:362:26 (i32.const 27) ) ) ;;@ assembly/buddy.ts:363:4 (call $assembly/buddy/list_push ;;@ assembly/buddy.ts:363:14 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:363:26 (i32.const 27) ) ;;@ assembly/buddy.ts:363:45 (get_global $assembly/buddy/base_ptr) ) ) ) ;;@ assembly/buddy.ts:371:2 (set_local $4 ;;@ assembly/buddy.ts:370:2 (tee_local $1 ;;@ assembly/buddy.ts:370:11 (call $assembly/buddy/bucket_for_request ;;@ assembly/buddy.ts:370:30 (i32.add (get_local $0) ;;@ assembly/buddy.ts:370:40 (i32.const 8) ) ) ) ) (loop $continue|0 (if ;;@ assembly/buddy.ts:378:9 (i32.add (get_local $1) ;;@ assembly/buddy.ts:378:18 (i32.const 1) ) ;;@ assembly/buddy.ts:378:26 (block ;;@ assembly/buddy.ts:386:4 (if ;;@ assembly/buddy.ts:386:8 (i32.eqz ;;@ assembly/buddy.ts:386:9 (call $assembly/buddy/lower_bucket_limit ;;@ assembly/buddy.ts:386:28 (get_local $1) ) ) ;;@ assembly/buddy.ts:387:13 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:395:4 (if ;;@ assembly/buddy.ts:395:8 (i32.eqz ;;@ assembly/buddy.ts:394:4 (tee_local $2 ;;@ assembly/buddy.ts:394:10 (call $assembly/buddy/list_pop ;;@ assembly/buddy.ts:394:37 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:394:49 (get_local $1) ) ) ) ) ;;@ assembly/buddy.ts:395:14 (block ;;@ assembly/buddy.ts:400:6 (if ;;@ assembly/buddy.ts:400:10 (i32.and (if (result i32) (tee_local $2 (i32.ne (get_local $1) ;;@ assembly/buddy.ts:400:20 (get_global $assembly/buddy/bucket_limit) ) ) (get_local $2) (i32.eqz ;;@ assembly/buddy.ts:400:36 (get_local $1) ) ) (i32.const 1) ) ;;@ assembly/buddy.ts:400:49 (block ;;@ assembly/buddy.ts:401:8 (set_local $1 (i32.sub (get_local $1) (i32.const 1) ) ) ;;@ assembly/buddy.ts:402:8 (br $continue|0) ) ) ;;@ assembly/buddy.ts:412:6 (if ;;@ assembly/buddy.ts:412:10 (i32.eqz ;;@ assembly/buddy.ts:412:11 (call $assembly/buddy/lower_bucket_limit ;;@ assembly/buddy.ts:412:30 (i32.sub (get_local $1) ;;@ assembly/buddy.ts:412:39 (i32.const 1) ) ) ) ;;@ assembly/buddy.ts:413:15 (return (i32.const 0) ) ) ;;@ assembly/buddy.ts:415:6 (set_local $2 ;;@ assembly/buddy.ts:415:12 (call $assembly/buddy/list_pop ;;@ assembly/buddy.ts:415:39 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:415:51 (get_local $1) ) ) ) ) ) ;;@ assembly/buddy.ts:422:4 (set_local $3 ;;@ assembly/buddy.ts:422:11 (i32.shl (i32.const 1) ;;@ assembly/buddy.ts:422:16 (i32.sub ;;@ assembly/buddy.ts:422:17 (i32.const 31) ;;@ assembly/buddy.ts:422:34 (get_local $1) ) ) ) ;;@ assembly/buddy.ts:424:4 (if ;;@ assembly/buddy.ts:424:8 (i32.eqz ;;@ assembly/buddy.ts:424:9 (call $assembly/buddy/update_max_ptr ;;@ assembly/buddy.ts:424:24 (i32.add (get_local $2) ;;@ assembly/buddy.ts:423:19 (if (result i32) (i32.lt_u (get_local $1) ;;@ assembly/buddy.ts:423:28 (get_local $4) ) ;;@ assembly/buddy.ts:423:46 (i32.add (i32.div_u (get_local $3) ;;@ assembly/buddy.ts:423:53 (i32.const 2) ) ;;@ assembly/buddy.ts:423:57 (i32.const 8) ) ;;@ assembly/buddy.ts:423:69 (get_local $3) ) ) ) ) ;;@ assembly/buddy.ts:424:45 (block ;;@ assembly/buddy.ts:425:6 (call $assembly/buddy/list_push ;;@ assembly/buddy.ts:425:16 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:425:28 (get_local $1) ) ;;@ assembly/buddy.ts:425:37 (get_local $2) ) ;;@ assembly/buddy.ts:426:13 (return (i32.const 0) ) ) ) ;;@ assembly/buddy.ts:441:4 (if ;;@ assembly/buddy.ts:440:4 (tee_local $3 ;;@ assembly/buddy.ts:440:8 (call $assembly/buddy/node_for_ptr ;;@ assembly/buddy.ts:440:21 (get_local $2) ;;@ assembly/buddy.ts:440:26 (get_local $1) ) ) ;;@ assembly/buddy.ts:442:6 (call $assembly/buddy/flip_parent_is_split ;;@ assembly/buddy.ts:442:27 (get_local $3) ) ) (loop $continue|1 (if ;;@ assembly/buddy.ts:452:11 (i32.lt_u (get_local $1) ;;@ assembly/buddy.ts:452:20 (get_local $4) ) (block ;;@ assembly/buddy.ts:455:6 (call $assembly/buddy/flip_parent_is_split ;;@ assembly/buddy.ts:453:6 (tee_local $3 ;;@ assembly/buddy.ts:453:10 (i32.add (i32.shl (get_local $3) ;;@ assembly/buddy.ts:453:14 (i32.const 1) ) ;;@ assembly/buddy.ts:453:18 (i32.const 1) ) ) ) ;;@ assembly/buddy.ts:456:6 (call $assembly/buddy/list_push ;;@ assembly/buddy.ts:457:8 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:454:6 (tee_local $1 (i32.add (get_local $1) (i32.const 1) ) ) ) ;;@ assembly/buddy.ts:458:8 (call $assembly/buddy/ptr_for_node ;;@ assembly/buddy.ts:458:38 (i32.add (get_local $3) ;;@ assembly/buddy.ts:458:42 (i32.const 1) ) ;;@ assembly/buddy.ts:458:45 (get_local $1) ) ) (br $continue|1) ) ) ) ;;@ assembly/buddy.ts:466:4 (i32.store ;;@ assembly/buddy.ts:466:17 (get_local $2) ;;@ assembly/buddy.ts:466:22 (get_local $0) ) ;;@ assembly/buddy.ts:467:17 (return ;;@ assembly/buddy.ts:467:11 (i32.add (get_local $2) ;;@ assembly/buddy.ts:467:17 (i32.const 8) ) ) ) ) ) ;;@ assembly/buddy.ts:470:9 (i32.const 0) ) (func $assembly/buddy/free_memory (; 14 ;) (type $iv) (param $0 i32) (local $1 i32) (local $2 i32) ;;@ assembly/buddy.ts:480:2 (if ;;@ assembly/buddy.ts:480:6 (i32.eqz ;;@ assembly/buddy.ts:480:7 (get_local $0) ) ;;@ assembly/buddy.ts:481:4 (return) ) ;;@ assembly/buddy.ts:490:2 (set_local $1 ;;@ assembly/buddy.ts:490:11 (call $assembly/buddy/bucket_for_request ;;@ assembly/buddy.ts:490:30 (i32.add (i32.load ;;@ assembly/buddy.ts:489:2 (tee_local $0 ;;@ assembly/buddy.ts:489:8 (i32.sub (get_local $0) ;;@ assembly/buddy.ts:489:14 (i32.const 8) ) ) ) ;;@ assembly/buddy.ts:490:49 (i32.const 8) ) ) ) ;;@ assembly/buddy.ts:491:2 (set_local $0 ;;@ assembly/buddy.ts:491:6 (call $assembly/buddy/node_for_ptr ;;@ assembly/buddy.ts:491:19 (get_local $0) ;;@ assembly/buddy.ts:491:24 (get_local $1) ) ) ;;@ assembly/buddy.ts:497:2 (block $break|0 (loop $continue|0 (if ;;@ assembly/buddy.ts:497:9 (get_local $0) (block ;;@ assembly/buddy.ts:504:4 (call $assembly/buddy/flip_parent_is_split ;;@ assembly/buddy.ts:504:25 (get_local $0) ) ;;@ assembly/buddy.ts:515:6 (br_if $break|0 ;;@ assembly/buddy.ts:514:8 (if (result i32) (tee_local $2 (call $assembly/buddy/parent_is_split ;;@ assembly/buddy.ts:514:24 (get_local $0) ) ) (get_local $2) ;;@ assembly/buddy.ts:514:30 (i32.eq (get_local $1) ;;@ assembly/buddy.ts:514:40 (get_global $assembly/buddy/bucket_limit) ) ) ) ;;@ assembly/buddy.ts:525:4 (call $assembly/buddy/list_remove ;;@ assembly/buddy.ts:525:16 (call $assembly/buddy/ptr_for_node ;;@ assembly/buddy.ts:525:46 (i32.add (i32.xor ;;@ assembly/buddy.ts:525:47 (i32.sub ;;@ assembly/buddy.ts:525:48 (get_local $0) ;;@ assembly/buddy.ts:525:52 (i32.const 1) ) ;;@ assembly/buddy.ts:525:57 (i32.const 1) ) ;;@ assembly/buddy.ts:525:62 (i32.const 1) ) ;;@ assembly/buddy.ts:525:65 (get_local $1) ) ) ;;@ assembly/buddy.ts:526:4 (set_local $0 ;;@ assembly/buddy.ts:526:8 (i32.div_u (i32.sub ;;@ assembly/buddy.ts:526:9 (get_local $0) ;;@ assembly/buddy.ts:526:13 (i32.const 1) ) ;;@ assembly/buddy.ts:526:18 (i32.const 2) ) ) ;;@ assembly/buddy.ts:527:4 (set_local $1 (i32.sub (get_local $1) (i32.const 1) ) ) (br $continue|0) ) ) ) ) ;;@ assembly/buddy.ts:536:2 (call $assembly/buddy/list_push ;;@ assembly/buddy.ts:536:12 (call $assembly/buddy/buckets$get ;;@ assembly/buddy.ts:536:24 (get_local $1) ) ;;@ assembly/buddy.ts:536:33 (call $assembly/buddy/ptr_for_node ;;@ assembly/buddy.ts:536:63 (get_local $0) ;;@ assembly/buddy.ts:536:66 (get_local $1) ) ) ) (func $start (; 15 ;) (type $v) (set_global $assembly/buddy/BUCKETS_START ;;@ assembly/buddy.ts:92:27 (get_global $HEAP_BASE) ) (set_global $assembly/buddy/BUCKETS_END ;;@ assembly/buddy.ts:93:25 (i32.add (get_global $assembly/buddy/BUCKETS_START) (i32.const 224) ) ) (set_global $assembly/buddy/NODE_IS_SPLIT_START ;;@ assembly/buddy.ts:138:33 (get_global $assembly/buddy/BUCKETS_END) ) (set_global $assembly/buddy/NODE_IS_SPLIT_END ;;@ assembly/buddy.ts:139:31 (i32.add (get_global $assembly/buddy/NODE_IS_SPLIT_START) ;;@ assembly/buddy.ts:139:53 (i32.const 16777216) ) ) ) )