From 2b263053f1dc3135aa922eb53c3f957d6b5735ce Mon Sep 17 00:00:00 2001 From: chen ruixiang Date: Thu, 18 Aug 2022 15:51:33 +0800 Subject: [PATCH 1/5] Fix: tee tests for propertyprototype and property --- tests/compiler/class.debug.wat | 560 ++++++++++++++++++++++++------- tests/compiler/class.release.wat | 543 +++++++++++++++++++++++------- tests/compiler/class.ts | 28 ++ 3 files changed, 878 insertions(+), 253 deletions(-) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index 03d532d757..3c3f35c83e 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -6,12 +6,13 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class/Animal.ONE (mut i32) (i32.const 1)) + (global $class/PropertyPrototypeClass._one (mut i32) (i32.const 10)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -26,11 +27,13 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class/a (mut i32) (i32.const 0)) + (global $class/zero (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 564)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) - (global $~lib/memory/__heap_base i32 (i32.const 16948)) + (global $~lib/rt/__rtti_base i32 (i32.const 688)) + (global $~lib/memory/__data_end i32 (i32.const 748)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) + (global $~lib/memory/__heap_base i32 (i32.const 17132)) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -40,12 +43,20 @@ (data (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") (data (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 512) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data (i32.const 688) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "testGenericInitializer" (func $class/testGenericInitializer)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) @@ -64,97 +75,6 @@ f32.convert_i32_s f32.add ) - (func $start:class - i32.const 4 - i32.const 4 - i32.eq - drop - global.get $class/Animal.ONE - drop - i32.const 1 - i32.const 2 - call $class/Animal.add - drop - f32.const 1 - f32.const 2 - call $class/Animal.sub - drop - ) - (func $class/Animal#instanceAdd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - i32.add - global.get $class/Animal.ONE - i32.add - ) - (func $class/Animal#instanceSub (param $0 i32) (param $1 f32) (param $2 f32) (result f32) - local.get $1 - local.get $2 - f32.sub - global.get $class/Animal.ONE - f32.convert_i32_s - f32.add - ) - (func $class/Animal#set:one (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $class/Animal#set:two (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store16 offset=4 - ) - (func $class/Animal#set:three (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store8 offset=6 - ) - (func $class/test (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1 - i32.const 2 - call $class/Animal#instanceAdd - drop - local.get $0 - f32.const 1 - f32.const 2 - call $class/Animal#instanceSub - drop - local.get $0 - i32.load - drop - local.get $0 - i32.load16_s offset=4 - drop - local.get $0 - i32.load8_s offset=6 - drop - local.get $0 - i32.const 0 - i32.const 1 - i32.add - call $class/Animal#set:one - local.get $0 - i32.const 1 - i32.const 1 - i32.add - call $class/Animal#set:two - local.get $0 - i32.const 1 - i32.const 1 - i32.add - i32.const 1 - i32.add - call $class/Animal#set:three - local.get $0 - local.set $1 - local.get $1 - local.set $2 - local.get $2 - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -2227,6 +2147,115 @@ memory.fill local.get $3 ) + (func $class/PropertyPrototypeClass#set:two (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $class/PropertyPrototypeClass#set:_three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $class/PropertyPrototypeClass#set:three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $class/PropertyPrototypeClass#set:_three + ) + (func $class/PropertyPrototypeClass#get:three (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + ) + (func $class/PropertyPrototypeClass#get:two (param $0 i32) (result i32) + local.get $0 + i32.load + ) + (func $class/PropertyPrototypeClass.set:one (param $0 i32) + local.get $0 + global.set $class/PropertyPrototypeClass._one + ) + (func $class/PropertyPrototypeClass#changeOne (param $0 i32) + i32.const 11 + call $class/PropertyPrototypeClass.set:one + ) + (func $class/PropertyPrototypeClass.get:one (result i32) + global.get $class/PropertyPrototypeClass._one + ) + (func $class/Animal#instanceAdd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + i32.add + global.get $class/Animal.ONE + i32.add + ) + (func $class/Animal#instanceSub (param $0 i32) (param $1 f32) (param $2 f32) (result f32) + local.get $1 + local.get $2 + f32.sub + global.get $class/Animal.ONE + f32.convert_i32_s + f32.add + ) + (func $class/Animal#set:one (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $class/Animal#set:two (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=4 + ) + (func $class/Animal#set:three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=6 + ) + (func $class/test (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1 + i32.const 2 + call $class/Animal#instanceAdd + drop + local.get $0 + f32.const 1 + f32.const 2 + call $class/Animal#instanceSub + drop + local.get $0 + i32.load + drop + local.get $0 + i32.load16_s offset=4 + drop + local.get $0 + i32.load8_s offset=6 + drop + local.get $0 + i32.const 0 + i32.const 1 + i32.add + call $class/Animal#set:one + local.get $0 + i32.const 1 + i32.const 1 + i32.add + call $class/Animal#set:two + local.get $0 + i32.const 1 + i32.const 1 + i32.add + i32.const 1 + i32.add + call $class/Animal#set:three + local.get $0 + local.set $1 + local.get $1 + local.set $2 + local.get $2 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2333,17 +2362,148 @@ call $class/GenericInitializer#constructor drop ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 576 + i32.const 96 + i32.const 337 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 640 + i32.const 96 + i32.const 351 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + local.get $1 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + (local $0 i32) + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + local.set $0 + local.get $0 + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + local.set $0 + local.get $0 + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) + global.get $class/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end i32.const 224 local.get $0 call $~lib/rt/itcms/__visit - i32.const 432 + i32.const 480 local.get $0 call $~lib/rt/itcms/__visit i32.const 32 local.get $0 call $~lib/rt/itcms/__visit + i32.const 576 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 640 + local.get $0 + call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -2384,23 +2544,26 @@ block $invalid block $~lib/array/Array block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + block $class/PropertyPrototypeClass + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/PropertyPrototypeClass $class/GenericInitializer $~lib/array/Array $invalid + end + return end return end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit return end return @@ -2419,6 +2582,45 @@ ) (func $~start call $start:class + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17152 + i32.const 17200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:class + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 4 + i32.const 4 + i32.eq + drop + global.get $class/Animal.ONE + drop + i32.const 1 + i32.const 2 + call $class/Animal.add + drop + f32.const 1 + f32.const 2 + call $class/Animal.sub + drop memory.size i32.const 16 i32.shl @@ -2436,19 +2638,129 @@ i32.const 320 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check + i32.const 0 + call $class/PropertyPrototypeClass#constructor + global.set $class/a + loop $while-continue|0 + global.get $class/a + local.tee $0 + global.get $class/zero + call $class/PropertyPrototypeClass#set:three + local.get $0 + call $class/PropertyPrototypeClass#get:three + local.set $0 + local.get $0 + if + i32.const 1 + global.set $class/zero + br $while-continue|0 + end + end + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store + local.get $0 + global.get $class/zero + call $class/PropertyPrototypeClass#set:two + local.get $0 + call $class/PropertyPrototypeClass#get:two + local.set $0 + local.get $0 + if + i32.const 1 + global.set $class/zero + br $while-continue|1 + end + end + global.get $class/a + local.set $1 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $class/PropertyPrototypeClass#get:three + i32.const 0 + i32.eq + i32.eqz if - i32.const 16976 - i32.const 17024 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 432 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $class/zero + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 68 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $class/a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class/PropertyPrototypeClass#changeOne + call $class/PropertyPrototypeClass.get:one + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class/PropertyPrototypeClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 2 + call $class/PropertyPrototypeClass#set:two + local.get $0 + i32.const 11 + call $class/PropertyPrototypeClass#set:_three + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2469,7 +2781,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -2492,8 +2804,8 @@ i32.shr_u i32.gt_u if - i32.const 432 i32.const 480 + i32.const 528 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2555,7 +2867,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index d549355183..9e22538849 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -3,10 +3,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -18,7 +18,10 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17972)) + (global $class/a (mut i32) (i32.const 0)) + (global $class/zero (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1712)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18156)) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") @@ -31,25 +34,46 @@ (data (i32.const 1372) "<") (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1436) ",") - (data (i32.const 1448) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1448) "\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s") (data (i32.const 1484) ",") - (data (i32.const 1496) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1536) "\06\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1564) " ") - (data (i32.const 1580) "\02\t") + (data (i32.const 1496) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1532) ",") + (data (i32.const 1544) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1580) "<") + (data (i32.const 1592) "\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 1644) "<") + (data (i32.const 1656) "\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 1712) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1740) " \00\00\00\00\00\00\00 ") + (data (i32.const 1764) "\02\t") (export "testGenericInitializer" (func $class/testGenericInitializer)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) + global.get $class/a + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end i32.const 1248 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1456 + i32.const 1504 call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1600 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 1664 + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -88,91 +112,94 @@ end end ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if + i32.const 0 + local.get $0 + i32.const 18156 + i32.lt_u local.get $0 i32.load offset=8 - local.tee $1 + select i32.eqz if i32.const 0 i32.const 1120 - i32.const 147 - i32.const 30 + i32.const 127 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $1 - global.set $~lib/rt/itcms/iter + return end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17972 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 131 - i32.const 16 + i32.const 147 + i32.const 30 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + global.set $~lib/rt/itcms/iter end + local.get $0 + call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $1 - i32.const 1536 + local.get $2 + i32.const 1712 i32.load i32.gt_u if @@ -183,40 +210,40 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl - i32.const 1540 + i32.const 1716 i32.add i32.load i32.const 32 i32.and end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.const 2 local.get $3 select - local.get $2 + local.get $1 i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 - local.get $1 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 ) @@ -751,10 +778,10 @@ if unreachable end - i32.const 17984 + i32.const 18160 i32.const 0 i32.store - i32.const 19552 + i32.const 19728 i32.const 0 i32.store loop $for-loop|0 @@ -765,7 +792,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 17984 + i32.const 18160 i32.add i32.const 0 i32.store offset=4 @@ -783,7 +810,7 @@ i32.add i32.const 2 i32.shl - i32.const 17984 + i32.const 18160 i32.add i32.const 0 i32.store offset=96 @@ -801,13 +828,13 @@ br $for-loop|0 end end - i32.const 17984 - i32.const 19556 + i32.const 18160 + i32.const 19732 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 17984 + i32.const 18160 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -892,7 +919,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 17972 + i32.const 18156 i32.lt_u if local.get $0 @@ -992,7 +1019,7 @@ unreachable end local.get $0 - i32.const 17972 + i32.const 18156 i32.lt_u if local.get $0 @@ -1015,7 +1042,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 17972 + i32.const 18156 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1024,7 +1051,6 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $1 local.get $0 i32.const 4 i32.sub @@ -1057,7 +1083,6 @@ i32.const 1 i32.or i32.store - local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock end @@ -1519,7 +1544,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 1772 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1528,7 +1553,7 @@ i32.store local.get $0 i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1537,7 +1562,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 1772 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1546,7 +1571,7 @@ i64.store local.get $1 i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -1605,25 +1630,173 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18000 - i32.const 18048 + i32.const 18176 + i32.const 18224 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1600 + i32.const 1120 + i32.const 337 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1664 + i32.const 1120 + i32.const 351 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid block $~lib/array/Array - block $class/Animal - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $~lib/array/Array $invalid + block $class/PropertyPrototypeClass + block $class/Animal + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $class/PropertyPrototypeClass $folding-inner0 $~lib/array/Array $invalid + end + return end return end @@ -1651,38 +1824,150 @@ end ) (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 17972 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 18156 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store + local.get $0 + i32.const 11 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class/a + loop $while-continue|0 + global.get $class/a + local.tee $0 + global.get $class/zero + i32.store offset=4 + local.get $0 + i32.load offset=4 + if + i32.const 1 + global.set $class/zero + br $while-continue|0 + end + end + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store + local.get $0 + global.get $class/zero + i32.store + local.get $0 + i32.load + if + i32.const 1 + global.set $class/zero + br $while-continue|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + if + i32.const 0 + i32.const 1456 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $class/zero + if + i32.const 0 + i32.const 1456 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class/a + i32.store offset=4 + local.get $0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18176 + i32.const 18224 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:class/test (param $0 i32) (result i32) (local $1 i32) @@ -1691,11 +1976,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 1772 i32.lt_s if - i32.const 18000 - i32.const 18048 + i32.const 18176 + i32.const 18224 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/class.ts b/tests/compiler/class.ts index 93a95068da..676fd132d8 100644 --- a/tests/compiler/class.ts +++ b/tests/compiler/class.ts @@ -40,3 +40,31 @@ class GenericInitializer { export function testGenericInitializer(): void { new GenericInitializer(); } + +class PropertyPrototypeClass { + private static _one: i32 = 10; + two:i32 = 2; + private _three: i32 = 11; + static get one(): i32 { return PropertyPrototypeClass._one; } + static set one(a: i32) { + PropertyPrototypeClass._one = a; + } + get three():i32 {return this._three;} + set three(a:i32){this._three = a;} + changeOne():void{ + PropertyPrototypeClass.one = 11; + } +} + +let a = new PropertyPrototypeClass(); +let zero = i32(0); +while(a.three = zero) { + zero = 1; +} +while(a.two = zero) { + zero = 1; +} +assert(a.three == 0); +assert(zero == 0); +a.changeOne(); +assert(PropertyPrototypeClass.one == 11); From 4c1908af1ed94d1dff9f33736cb3bfff17f54b6c Mon Sep 17 00:00:00 2001 From: chen ruixiang Date: Thu, 18 Aug 2022 16:29:52 +0800 Subject: [PATCH 2/5] fix fixture mismatch --- tests/compiler/class.debug.wat | 151 +------------- tests/compiler/class.release.wat | 346 +++++++++---------------------- 2 files changed, 103 insertions(+), 394 deletions(-) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index 3c3f35c83e..bd1387f2ff 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -30,10 +30,10 @@ (global $class/a (mut i32) (i32.const 0)) (global $class/zero (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 688)) - (global $~lib/memory/__data_end i32 (i32.const 748)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) - (global $~lib/memory/__heap_base i32 (i32.const 17132)) + (global $~lib/rt/__rtti_base i32 (i32.const 560)) + (global $~lib/memory/__data_end i32 (i32.const 620)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17004)) + (global $~lib/memory/__heap_base i32 (i32.const 17004)) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -46,17 +46,10 @@ (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (data (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data (i32.const 688) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (data (i32.const 560) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "testGenericInitializer" (func $class/testGenericInitializer)) - (export "__new" (func $~lib/rt/itcms/__new)) - (export "__pin" (func $~lib/rt/itcms/__pin)) - (export "__unpin" (func $~lib/rt/itcms/__unpin)) - (export "__collect" (func $~lib/rt/itcms/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) @@ -2362,124 +2355,6 @@ call $class/GenericInitializer#constructor drop ) - (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - if - i32.const 576 - i32.const 96 - i32.const 337 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - local.get $1 - global.get $~lib/rt/itcms/pinSpace - i32.const 3 - call $~lib/rt/itcms/Object#linkTo - end - local.get $0 - ) - (func $~lib/rt/itcms/__unpin (param $0 i32) - (local $1 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.set $1 - local.get $1 - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.ne - if - i32.const 640 - i32.const 96 - i32.const 351 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - local.get $1 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - end - ) - (func $~lib/rt/itcms/__collect - (local $0 i32) - i32.const 0 - drop - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - i32.const 0 - i32.ne - local.set $0 - local.get $0 - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - i32.const 0 - i32.ne - local.set $0 - local.get $0 - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop - i32.const 0 - drop - ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) global.get $class/a @@ -2498,12 +2373,6 @@ i32.const 32 local.get $0 call $~lib/rt/itcms/__visit - i32.const 576 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 640 - local.get $0 - call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -2588,8 +2457,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 17152 - i32.const 17200 + i32.const 17024 + i32.const 17072 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2688,7 +2557,7 @@ i32.const 0 i32.const 432 i32.const 67 - i32.const 3 + i32.const 1 call $~lib/builtins/abort unreachable end @@ -2700,7 +2569,7 @@ i32.const 0 i32.const 432 i32.const 68 - i32.const 3 + i32.const 1 call $~lib/builtins/abort unreachable end @@ -2719,7 +2588,7 @@ i32.const 0 i32.const 432 i32.const 70 - i32.const 3 + i32.const 1 call $~lib/builtins/abort unreachable end diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index 9e22538849..88c8ad7ee4 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -3,10 +3,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -20,8 +20,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $class/a (mut i32) (i32.const 0)) (global $class/zero (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1712)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18156)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18028)) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") @@ -39,19 +38,10 @@ (data (i32.const 1496) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") (data (i32.const 1532) ",") (data (i32.const 1544) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1580) "<") - (data (i32.const 1592) "\01\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data (i32.const 1644) "<") - (data (i32.const 1656) "\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data (i32.const 1712) "\07\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1740) " \00\00\00\00\00\00\00 ") - (data (i32.const 1764) "\02\t") + (data (i32.const 1584) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1612) " \00\00\00\00\00\00\00 ") + (data (i32.const 1636) "\02\t") (export "testGenericInitializer" (func $class/testGenericInitializer)) - (export "__new" (func $~lib/rt/itcms/__new)) - (export "__pin" (func $~lib/rt/itcms/__pin)) - (export "__unpin" (func $~lib/rt/itcms/__unpin)) - (export "__collect" (func $~lib/rt/itcms/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) @@ -70,10 +60,6 @@ call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1600 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1664 - call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -112,94 +98,91 @@ end end ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - local.get $0 - i32.const 18156 - i32.lt_u local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 147 + i32.const 30 call $~lib/builtins/abort unreachable end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.load offset=8 + i32.load offset=4 + i32.const -4 + i32.and local.tee $1 i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18028 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 i32.const 1120 - i32.const 147 - i32.const 30 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 - global.set $~lib/rt/itcms/iter + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 - call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 - i32.const 1712 + local.get $1 + i32.const 1584 i32.load i32.gt_u if @@ -210,40 +193,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl - i32.const 1716 + i32.const 1588 i32.add i32.load i32.const 32 i32.and end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.const 2 local.get $3 select - local.get $1 + local.get $2 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 ) @@ -778,10 +761,10 @@ if unreachable end - i32.const 18160 + i32.const 18032 i32.const 0 i32.store - i32.const 19728 + i32.const 19600 i32.const 0 i32.store loop $for-loop|0 @@ -792,7 +775,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 18160 + i32.const 18032 i32.add i32.const 0 i32.store offset=4 @@ -810,7 +793,7 @@ i32.add i32.const 2 i32.shl - i32.const 18160 + i32.const 18032 i32.add i32.const 0 i32.store offset=96 @@ -828,13 +811,13 @@ br $for-loop|0 end end - i32.const 18160 - i32.const 19732 + i32.const 18032 + i32.const 19604 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18160 + i32.const 18032 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -919,7 +902,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18156 + i32.const 18028 i32.lt_u if local.get $0 @@ -1019,7 +1002,7 @@ unreachable end local.get $0 - i32.const 18156 + i32.const 18028 i32.lt_u if local.get $0 @@ -1042,7 +1025,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 18156 + i32.const 18028 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1051,6 +1034,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1083,6 +1067,7 @@ i32.const 1 i32.or i32.store + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock end @@ -1544,7 +1529,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 1644 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1562,7 +1547,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 1644 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1630,158 +1615,13 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18176 - i32.const 18224 + i32.const 18048 + i32.const 18096 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1600 - i32.const 1120 - i32.const 337 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - end - local.get $0 - ) - (func $~lib/rt/itcms/__unpin (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1664 - i32.const 1120 - i32.const 351 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/itcms/__collect - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid @@ -1831,7 +1671,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 1644 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1841,7 +1681,7 @@ memory.size i32.const 16 i32.shl - i32.const 18156 + i32.const 18028 i32.sub i32.const 1 i32.shr_u @@ -1875,7 +1715,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 1644 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1939,7 +1779,7 @@ i32.const 0 i32.const 1456 i32.const 67 - i32.const 3 + i32.const 1 call $~lib/builtins/abort unreachable end @@ -1948,7 +1788,7 @@ i32.const 0 i32.const 1456 i32.const 68 - i32.const 3 + i32.const 1 call $~lib/builtins/abort unreachable end @@ -1962,8 +1802,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18176 - i32.const 18224 + i32.const 18048 + i32.const 18096 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1976,11 +1816,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 1644 i32.lt_s if - i32.const 18176 - i32.const 18224 + i32.const 18048 + i32.const 18096 i32.const 1 i32.const 1 call $~lib/builtins/abort From abe6545bc1cfaf55ed9d21123d4e30f5e39e916e Mon Sep 17 00:00:00 2001 From: chen ruixiang Date: Mon, 22 Aug 2022 14:48:28 +0800 Subject: [PATCH 3/5] fix conflicts --- tests/compiler/class.debug.wat | 425 +++++++++++++++++++++++---------- 1 file changed, 303 insertions(+), 122 deletions(-) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index a0841d3fbe..30accb467d 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -6,12 +6,13 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class/Animal.ONE (mut i32) (i32.const 1)) + (global $class/PropertyPrototypeClass._one (mut i32) (i32.const 10)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -26,11 +27,13 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class/a (mut i32) (i32.const 0)) + (global $class/zero (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 564)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) - (global $~lib/memory/__heap_base i32 (i32.const 16948)) + (global $~lib/rt/__rtti_base i32 (i32.const 560)) + (global $~lib/memory/__data_end i32 (i32.const 620)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17004)) + (global $~lib/memory/__heap_base i32 (i32.const 17004)) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -40,9 +43,10 @@ (data (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") (data (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 512) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 560) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "testGenericInitializer" (func $class/testGenericInitializer)) @@ -64,97 +68,6 @@ f32.convert_i32_s f32.add ) - (func $start:class - i32.const 4 - i32.const 4 - i32.eq - drop - global.get $class/Animal.ONE - drop - i32.const 1 - i32.const 2 - call $class/Animal.add - drop - f32.const 1 - f32.const 2 - call $class/Animal.sub - drop - ) - (func $class/Animal#instanceAdd (param $this i32) (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.add - global.get $class/Animal.ONE - i32.add - ) - (func $class/Animal#instanceSub (param $this i32) (param $a f32) (param $b f32) (result f32) - local.get $a - local.get $b - f32.sub - global.get $class/Animal.ONE - f32.convert_i32_s - f32.add - ) - (func $class/Animal#set:one (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $class/Animal#set:two (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store16 offset=4 - ) - (func $class/Animal#set:three (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store8 offset=6 - ) - (func $class/test (param $animal i32) (result i32) - (local $ptr i32) - (local $cls i32) - local.get $animal - i32.const 1 - i32.const 2 - call $class/Animal#instanceAdd - drop - local.get $animal - f32.const 1 - f32.const 2 - call $class/Animal#instanceSub - drop - local.get $animal - i32.load - drop - local.get $animal - i32.load16_s offset=4 - drop - local.get $animal - i32.load8_s offset=6 - drop - local.get $animal - i32.const 0 - i32.const 1 - i32.add - call $class/Animal#set:one - local.get $animal - i32.const 1 - i32.const 1 - i32.add - call $class/Animal#set:two - local.get $animal - i32.const 1 - i32.const 1 - i32.add - i32.const 1 - i32.add - call $class/Animal#set:three - local.get $animal - local.set $ptr - local.get $ptr - local.set $cls - local.get $cls - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -2227,6 +2140,115 @@ memory.fill local.get $ptr ) + (func $class/PropertyPrototypeClass#set:two (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $class/PropertyPrototypeClass#set:_three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $class/PropertyPrototypeClass#set:three (param $this i32) (param $a i32) + local.get $this + local.get $a + call $class/PropertyPrototypeClass#set:_three + ) + (func $class/PropertyPrototypeClass#get:three (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $class/PropertyPrototypeClass#get:two (param $0 i32) (result i32) + local.get $0 + i32.load + ) + (func $class/PropertyPrototypeClass.set:one (param $a i32) + local.get $a + global.set $class/PropertyPrototypeClass._one + ) + (func $class/PropertyPrototypeClass#changeOne (param $this i32) + i32.const 11 + call $class/PropertyPrototypeClass.set:one + ) + (func $class/PropertyPrototypeClass.get:one (result i32) + global.get $class/PropertyPrototypeClass._one + ) + (func $class/Animal#instanceAdd (param $this i32) (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + global.get $class/Animal.ONE + i32.add + ) + (func $class/Animal#instanceSub (param $this i32) (param $a f32) (param $b f32) (result f32) + local.get $a + local.get $b + f32.sub + global.get $class/Animal.ONE + f32.convert_i32_s + f32.add + ) + (func $class/Animal#set:one (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $class/Animal#set:two (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=4 + ) + (func $class/Animal#set:three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=6 + ) + (func $class/test (param $animal i32) (result i32) + (local $ptr i32) + (local $cls i32) + local.get $animal + i32.const 1 + i32.const 2 + call $class/Animal#instanceAdd + drop + local.get $animal + f32.const 1 + f32.const 2 + call $class/Animal#instanceSub + drop + local.get $animal + i32.load + drop + local.get $animal + i32.load16_s offset=4 + drop + local.get $animal + i32.load8_s offset=6 + drop + local.get $animal + i32.const 0 + i32.const 1 + i32.add + call $class/Animal#set:one + local.get $animal + i32.const 1 + i32.const 1 + i32.add + call $class/Animal#set:two + local.get $animal + i32.const 1 + i32.const 1 + i32.add + i32.const 1 + i32.add + call $class/Animal#set:three + local.get $animal + local.set $ptr + local.get $ptr + local.set $cls + local.get $cls + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $var$4 i32) @@ -2335,10 +2357,17 @@ ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) + global.get $class/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end i32.const 224 local.get $0 call $~lib/rt/itcms/__visit - i32.const 432 + i32.const 480 local.get $0 call $~lib/rt/itcms/__visit i32.const 32 @@ -2384,23 +2413,26 @@ block $invalid block $~lib/array/Array block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + block $class/PropertyPrototypeClass + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/PropertyPrototypeClass $class/GenericInitializer $~lib/array/Array $invalid + end + return end return end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit return end return @@ -2419,6 +2451,45 @@ ) (func $~start call $start:class + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17024 + i32.const 17072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:class + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 4 + i32.const 4 + i32.eq + drop + global.get $class/Animal.ONE + drop + i32.const 1 + i32.const 2 + call $class/Animal.add + drop + f32.const 1 + f32.const 2 + call $class/Animal.sub + drop memory.size i32.const 16 i32.shl @@ -2436,19 +2507,129 @@ i32.const 320 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check + i32.const 0 + call $class/PropertyPrototypeClass#constructor + global.set $class/a + loop $while-continue|0 + global.get $class/a + local.tee $0 + global.get $class/zero + call $class/PropertyPrototypeClass#set:three + local.get $0 + call $class/PropertyPrototypeClass#get:three + local.set $0 + local.get $0 + if + i32.const 1 + global.set $class/zero + br $while-continue|0 + end + end + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store + local.get $0 + global.get $class/zero + call $class/PropertyPrototypeClass#set:two + local.get $0 + call $class/PropertyPrototypeClass#get:two + local.set $0 + local.get $0 + if + i32.const 1 + global.set $class/zero + br $while-continue|1 + end + end + global.get $class/a + local.set $1 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $class/PropertyPrototypeClass#get:three + i32.const 0 + i32.eq + i32.eqz if - i32.const 16976 - i32.const 17024 + i32.const 0 + i32.const 432 + i32.const 67 i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class/zero + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class/a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class/PropertyPrototypeClass#changeOne + call $class/PropertyPrototypeClass.get:one + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class/PropertyPrototypeClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 2 + call $class/PropertyPrototypeClass#set:two + local.get $0 + i32.const 11 + call $class/PropertyPrototypeClass#set:_three + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2469,7 +2650,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -2492,8 +2673,8 @@ i32.shr_u i32.gt_u if - i32.const 432 i32.const 480 + i32.const 528 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2555,7 +2736,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store From 60b94a701786c8cb0e5399ae4c6ee88f95e1f202 Mon Sep 17 00:00:00 2001 From: chen ruixiang Date: Thu, 1 Sep 2022 16:45:18 +0800 Subject: [PATCH 4/5] fix conflicts --- tests/compiler/class.debug.wat | 593 ++++++++++++++++++++----------- tests/compiler/class.release.wat | 541 +++++++++++++++++----------- 2 files changed, 720 insertions(+), 414 deletions(-) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index 480d613d1b..30accb467d 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -6,12 +6,13 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class/Animal.ONE (mut i32) (i32.const 1)) + (global $class/PropertyPrototypeClass._one (mut i32) (i32.const 10)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -26,11 +27,13 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class/a (mut i32) (i32.const 0)) + (global $class/zero (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 564)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) - (global $~lib/memory/__heap_base i32 (i32.const 16948)) + (global $~lib/rt/__rtti_base i32 (i32.const 560)) + (global $~lib/memory/__data_end i32 (i32.const 620)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17004)) + (global $~lib/memory/__heap_base i32 (i32.const 17004)) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -40,9 +43,10 @@ (data (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") (data (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 512) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 560) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "testGenericInitializer" (func $class/testGenericInitializer)) @@ -64,106 +68,15 @@ f32.convert_i32_s f32.add ) - (func $start:class - i32.const 4 - i32.const 4 - i32.eq - drop - global.get $class/Animal.ONE - drop - i32.const 1 - i32.const 2 - call $class/Animal.add - drop - f32.const 1 - f32.const 2 - call $class/Animal.sub - drop - ) - (func $class/Animal#instanceAdd (param $this i32) (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.add - global.get $class/Animal.ONE - i32.add - ) - (func $class/Animal#instanceSub (param $this i32) (param $a f32) (param $b f32) (result f32) - local.get $a - local.get $b - f32.sub - global.get $class/Animal.ONE - f32.convert_i32_s - f32.add - ) - (func $class/Animal#set:one (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store $0 - ) - (func $class/Animal#set:two (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store16 $0 offset=4 - ) - (func $class/Animal#set:three (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store8 $0 offset=6 - ) - (func $class/test (param $animal i32) (result i32) - (local $ptr i32) - (local $cls i32) - local.get $animal - i32.const 1 - i32.const 2 - call $class/Animal#instanceAdd - drop - local.get $animal - f32.const 1 - f32.const 2 - call $class/Animal#instanceSub - drop - local.get $animal - i32.load $0 - drop - local.get $animal - i32.load16_s $0 offset=4 - drop - local.get $animal - i32.load8_s $0 offset=6 - drop - local.get $animal - i32.const 0 - i32.const 1 - i32.add - call $class/Animal#set:one - local.get $animal - i32.const 1 - i32.const 1 - i32.add - call $class/Animal#set:two - local.get $animal - i32.const 1 - i32.const 1 - i32.add - i32.const 1 - i32.add - call $class/Animal#set:three - local.get $animal - local.set $ptr - local.get $ptr - local.set $cls - local.get $cls - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=4 + i32.store offset=4 ) (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=8 + i32.store offset=8 ) (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) local.get $space @@ -176,7 +89,7 @@ ) (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) local.get $this - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.const -1 i32.xor @@ -184,7 +97,7 @@ ) (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) local.get $this - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and ) @@ -236,7 +149,7 @@ (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) local.get $this local.get $this - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.const -1 i32.xor @@ -249,7 +162,7 @@ local.get $this local.get $obj local.get $this - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.or @@ -268,7 +181,7 @@ i32.const 1 drop local.get $this - i32.load $0 offset=8 + i32.load offset=8 i32.const 0 i32.eq if (result i32) @@ -290,7 +203,7 @@ return end local.get $this - i32.load $0 offset=8 + i32.load offset=8 local.set $prev i32.const 1 drop @@ -317,7 +230,7 @@ local.set $ptr local.get $id local.get $ptr - i32.load $0 + i32.load i32.gt_u if i32.const 224 @@ -334,12 +247,12 @@ i32.const 8 i32.mul i32.add - i32.load $0 + i32.load ) (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) (local $rtId i32) local.get $this - i32.load $0 offset=12 + i32.load offset=12 local.set $rtId local.get $rtId i32.const 1 @@ -358,7 +271,7 @@ (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) (local $prev i32) local.get $list - i32.load $0 offset=8 + i32.load offset=8 local.set $prev local.get $this local.get $list @@ -382,7 +295,7 @@ i32.eq if local.get $this - i32.load $0 offset=8 + i32.load offset=8 local.tee $var$1 i32.eqz if (result i32) @@ -450,7 +363,7 @@ local.get $var$2 if local.get $ptr - i32.load $0 + i32.load local.get $cookie call $~lib/rt/itcms/__visit local.get $ptr @@ -464,7 +377,7 @@ (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) i32.const 4 local.get $this - i32.load $0 + i32.load i32.const 3 i32.const -1 i32.xor @@ -474,22 +387,22 @@ (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 + i32.store ) (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 + i32.store ) (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=4 + i32.store offset=4 ) (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=8 + i32.store offset=8 ) (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) (local $blockInfo i32) @@ -503,7 +416,7 @@ (local $var$10 i32) (local $var$11 i32) local.get $block - i32.load $0 + i32.load local.set $blockInfo i32.const 1 drop @@ -603,10 +516,10 @@ unreachable end local.get $block - i32.load $0 offset=4 + i32.load offset=4 local.set $prev local.get $block - i32.load $0 offset=8 + i32.load offset=8 local.set $next local.get $prev if @@ -636,7 +549,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 i32.eq if local.get $root @@ -657,7 +570,7 @@ i32.shl i32.add local.get $var$7 - i32.store $0 offset=96 + i32.store offset=96 local.get $next i32.eqz if @@ -670,7 +583,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=4 + i32.load offset=4 local.set $var$6 local.get $root local.set $var$7 @@ -691,13 +604,13 @@ i32.shl i32.add local.get $var$10 - i32.store $0 offset=4 + i32.store offset=4 local.get $var$6 i32.eqz if local.get $root local.get $root - i32.load $0 + i32.load i32.const 1 local.get $fl i32.shl @@ -735,7 +648,7 @@ unreachable end local.get $block - i32.load $0 + i32.load local.set $blockInfo i32.const 1 drop @@ -757,7 +670,7 @@ i32.const 4 i32.add local.get $var$3 - i32.load $0 + i32.load i32.const 3 i32.const -1 i32.xor @@ -765,7 +678,7 @@ i32.add local.set $right local.get $right - i32.load $0 + i32.load local.set $rightInfo local.get $rightInfo i32.const 1 @@ -792,7 +705,7 @@ i32.const 4 i32.add local.get $var$3 - i32.load $0 + i32.load i32.const 3 i32.const -1 i32.xor @@ -800,7 +713,7 @@ i32.add local.set $right local.get $right - i32.load $0 + i32.load local.set $rightInfo end local.get $blockInfo @@ -812,10 +725,10 @@ local.get $var$3 i32.const 4 i32.sub - i32.load $0 + i32.load local.set $var$3 local.get $var$3 - i32.load $0 + i32.load local.set $var$6 i32.const 1 drop @@ -896,7 +809,7 @@ i32.const 4 i32.sub local.get $block - i32.store $0 + i32.store local.get $size i32.const 256 i32.lt_u @@ -975,7 +888,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 local.set $head local.get $block i32.const 0 @@ -1007,10 +920,10 @@ i32.shl i32.add local.get $var$6 - i32.store $0 offset=96 + i32.store offset=96 local.get $root local.get $root - i32.load $0 + i32.load i32.const 1 local.get $fl i32.shl @@ -1029,7 +942,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=4 + i32.load offset=4 i32.const 1 local.get $sl i32.shl @@ -1041,7 +954,7 @@ i32.shl i32.add local.get $var$10 - i32.store $0 offset=4 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $end i32) (result i32) (local $var$3 i32) @@ -1086,7 +999,7 @@ local.get $root local.set $var$3 local.get $var$3 - i32.load $0 offset=1568 + i32.load offset=1568 local.set $tail i32.const 0 local.set $tailInfo @@ -1119,7 +1032,7 @@ i32.sub local.set $start local.get $tail - i32.load $0 + i32.load local.set $tailInfo else nop @@ -1197,7 +1110,7 @@ local.set $var$3 local.get $var$9 local.get $var$3 - i32.store $0 offset=1568 + i32.store offset=1568 local.get $root local.get $left call $~lib/rt/tlsf/insertBlock @@ -1227,7 +1140,7 @@ i32.xor i32.and local.set $rootOffset - memory.size $0 + memory.size local.set $pagesBefore local.get $rootOffset i32.const 1572 @@ -1248,7 +1161,7 @@ local.get $pagesNeeded local.get $pagesBefore i32.sub - memory.grow $0 + memory.grow i32.const 0 i32.lt_s else @@ -1268,7 +1181,7 @@ local.set $var$4 local.get $var$5 local.get $var$4 - i32.store $0 offset=1568 + i32.store offset=1568 i32.const 0 local.set $var$5 loop $for-loop|0 @@ -1290,7 +1203,7 @@ i32.shl i32.add local.get $var$6 - i32.store $0 offset=4 + i32.store offset=4 i32.const 0 local.set $var$8 loop $for-loop|1 @@ -1318,7 +1231,7 @@ i32.shl i32.add local.get $var$6 - i32.store $0 offset=96 + i32.store offset=96 local.get $var$8 i32.const 1 i32.add @@ -1341,7 +1254,7 @@ drop local.get $root local.get $memStart - memory.size $0 + memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory @@ -1368,7 +1281,7 @@ end if (result i32) local.get $block - i32.load $0 + i32.load i32.const 1 i32.and i32.eqz @@ -1391,7 +1304,7 @@ drop local.get $block local.get $block - i32.load $0 + i32.load i32.const 1 i32.or call $~lib/rt/common/BLOCK#set:mmInfo @@ -1806,7 +1719,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=4 + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1820,7 +1733,7 @@ i32.eqz if local.get $root - i32.load $0 + i32.load i32.const 0 i32.const -1 i32.xor @@ -1848,7 +1761,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=4 + i32.load offset=4 local.set $slMap i32.const 1 drop @@ -1878,7 +1791,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 local.set $head end else @@ -1898,7 +1811,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 local.set $head end local.get $head @@ -1928,7 +1841,7 @@ i32.add local.set $size end - memory.size $0 + memory.size local.set $pagesBefore local.get $size i32.const 4 @@ -1940,7 +1853,7 @@ local.get $root local.set $var$3 local.get $var$3 - i32.load $0 offset=1568 + i32.load offset=1568 i32.ne i32.shl i32.add @@ -1965,19 +1878,19 @@ select local.set $pagesWanted local.get $pagesWanted - memory.grow $0 + memory.grow i32.const 0 i32.lt_s if local.get $pagesNeeded - memory.grow $0 + memory.grow i32.const 0 i32.lt_s if unreachable end end - memory.size $0 + memory.size local.set $pagesAfter local.get $root local.get $pagesBefore @@ -1994,7 +1907,7 @@ (local $remaining i32) (local $var$5 i32) local.get $block - i32.load $0 + i32.load local.set $blockInfo i32.const 1 drop @@ -2064,7 +1977,7 @@ i32.const 4 i32.add local.get $var$5 - i32.load $0 + i32.load i32.const 3 i32.const -1 i32.xor @@ -2076,13 +1989,13 @@ i32.const 4 i32.add local.get $var$5 - i32.load $0 + i32.load i32.const 3 i32.const -1 i32.xor i32.and i32.add - i32.load $0 + i32.load i32.const 2 i32.const -1 i32.xor @@ -2126,7 +2039,7 @@ i32.const 1 drop local.get $block - i32.load $0 + i32.load i32.const 3 i32.const -1 i32.xor @@ -2168,12 +2081,12 @@ (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=12 + i32.store offset=12 ) (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=16 + i32.store offset=16 ) (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) (local $obj i32) @@ -2224,9 +2137,118 @@ local.get $ptr i32.const 0 local.get $size - memory.fill $0 + memory.fill local.get $ptr ) + (func $class/PropertyPrototypeClass#set:two (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $class/PropertyPrototypeClass#set:_three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $class/PropertyPrototypeClass#set:three (param $this i32) (param $a i32) + local.get $this + local.get $a + call $class/PropertyPrototypeClass#set:_three + ) + (func $class/PropertyPrototypeClass#get:three (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $class/PropertyPrototypeClass#get:two (param $0 i32) (result i32) + local.get $0 + i32.load + ) + (func $class/PropertyPrototypeClass.set:one (param $a i32) + local.get $a + global.set $class/PropertyPrototypeClass._one + ) + (func $class/PropertyPrototypeClass#changeOne (param $this i32) + i32.const 11 + call $class/PropertyPrototypeClass.set:one + ) + (func $class/PropertyPrototypeClass.get:one (result i32) + global.get $class/PropertyPrototypeClass._one + ) + (func $class/Animal#instanceAdd (param $this i32) (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + global.get $class/Animal.ONE + i32.add + ) + (func $class/Animal#instanceSub (param $this i32) (param $a f32) (param $b f32) (result f32) + local.get $a + local.get $b + f32.sub + global.get $class/Animal.ONE + f32.convert_i32_s + f32.add + ) + (func $class/Animal#set:one (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $class/Animal#set:two (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=4 + ) + (func $class/Animal#set:three (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 offset=6 + ) + (func $class/test (param $animal i32) (result i32) + (local $ptr i32) + (local $cls i32) + local.get $animal + i32.const 1 + i32.const 2 + call $class/Animal#instanceAdd + drop + local.get $animal + f32.const 1 + f32.const 2 + call $class/Animal#instanceSub + drop + local.get $animal + i32.load + drop + local.get $animal + i32.load16_s offset=4 + drop + local.get $animal + i32.load8_s offset=6 + drop + local.get $animal + i32.const 0 + i32.const 1 + i32.add + call $class/Animal#set:one + local.get $animal + i32.const 1 + i32.const 1 + i32.add + call $class/Animal#set:two + local.get $animal + i32.const 1 + i32.const 1 + i32.add + i32.const 1 + i32.add + call $class/Animal#set:three + local.get $animal + local.set $ptr + local.get $ptr + local.set $cls + local.get $cls + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $var$4 i32) @@ -2298,7 +2320,7 @@ (func $class/GenericInitializer#set:foo (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 + i32.store local.get $0 local.get $1 i32.const 0 @@ -2307,7 +2329,7 @@ (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 + i32.store local.get $0 local.get $1 i32.const 0 @@ -2316,17 +2338,17 @@ (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=4 + i32.store offset=4 ) (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=8 + i32.store offset=8 ) (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store $0 offset=12 + i32.store offset=12 ) (func $class/testGenericInitializer i32.const 0 @@ -2335,10 +2357,17 @@ ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) + global.get $class/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end i32.const 224 local.get $0 call $~lib/rt/itcms/__visit - i32.const 432 + i32.const 480 local.get $0 call $~lib/rt/itcms/__visit i32.const 32 @@ -2348,7 +2377,7 @@ (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.load $0 + i32.load local.tee $2 if local.get $2 @@ -2359,7 +2388,7 @@ (func $class/GenericInitializer~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.load $0 + i32.load local.tee $2 if local.get $2 @@ -2371,7 +2400,7 @@ i32.const 0 drop local.get $this - i32.load $0 + i32.load local.get $cookie call $~lib/rt/itcms/__visit ) @@ -2384,23 +2413,26 @@ block $invalid block $~lib/array/Array block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load $0 - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + block $class/PropertyPrototypeClass + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/PropertyPrototypeClass $class/GenericInitializer $~lib/array/Array $invalid + end + return end return end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit return end return @@ -2419,7 +2451,46 @@ ) (func $~start call $start:class - memory.size $0 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17024 + i32.const 17072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:class + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 4 + i32.const 4 + i32.eq + drop + global.get $class/Animal.ONE + drop + i32.const 1 + i32.const 2 + call $class/Animal.add + drop + f32.const 1 + f32.const 2 + call $class/Animal.sub + drop + memory.size i32.const 16 i32.shl global.get $~lib/memory/__heap_base @@ -2436,19 +2507,129 @@ i32.const 320 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check + i32.const 0 + call $class/PropertyPrototypeClass#constructor + global.set $class/a + loop $while-continue|0 + global.get $class/a + local.tee $0 + global.get $class/zero + call $class/PropertyPrototypeClass#set:three + local.get $0 + call $class/PropertyPrototypeClass#get:three + local.set $0 + local.get $0 + if + i32.const 1 + global.set $class/zero + br $while-continue|0 + end + end + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store + local.get $0 + global.get $class/zero + call $class/PropertyPrototypeClass#set:two + local.get $0 + call $class/PropertyPrototypeClass#get:two + local.set $0 + local.get $0 + if + i32.const 1 + global.set $class/zero + br $while-continue|1 + end + end + global.get $class/a + local.set $1 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $class/PropertyPrototypeClass#get:three + i32.const 0 + i32.eq + i32.eqz if - i32.const 16976 - i32.const 17024 + i32.const 0 + i32.const 432 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class/zero + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 68 i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class/a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class/PropertyPrototypeClass#changeOne + call $class/PropertyPrototypeClass.get:one + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class/PropertyPrototypeClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 2 + call $class/PropertyPrototypeClass#set:two + local.get $0 + i32.const 11 + call $class/PropertyPrototypeClass#set:_three + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2463,16 +2644,16 @@ call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 - i64.store $0 + i64.store local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 - i32.store $0 + i32.store end local.get $0 i32.const 0 @@ -2492,8 +2673,8 @@ i32.shr_u i32.gt_u if - i32.const 432 i32.const 480 + i32.const 528 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2515,7 +2696,7 @@ i32.const 0 call $~lib/rt/itcms/__new local.tee $5 - i32.store $0 offset=4 + i32.store offset=4 i32.const 2 global.get $~lib/shared/runtime/Runtime.Incremental i32.ne @@ -2549,16 +2730,16 @@ call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store $0 + i32.store local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 - i32.store $0 + i32.store end local.get $0 i32.const 0 @@ -2582,7 +2763,7 @@ call $~stack_check global.get $~lib/memory/__stack_pointer local.get $0 - i32.store $0 + i32.store local.get $0 call $class/test local.set $1 diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index 3d9a8b1102..88c8ad7ee4 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -18,7 +18,9 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17972)) + (global $class/a (mut i32) (i32.const 0)) + (global $class/zero (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18028)) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") @@ -31,12 +33,14 @@ (data (i32.const 1372) "<") (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1436) ",") - (data (i32.const 1448) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1448) "\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s") (data (i32.const 1484) ",") - (data (i32.const 1496) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1536) "\06\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1564) " ") - (data (i32.const 1580) "\02\t") + (data (i32.const 1496) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1532) ",") + (data (i32.const 1544) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1584) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1612) " \00\00\00\00\00\00\00 ") + (data (i32.const 1636) "\02\t") (export "testGenericInitializer" (func $class/testGenericInitializer)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) @@ -44,15 +48,21 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) + global.get $class/a + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end i32.const 1248 call $byn-split-outlined-A$~lib/rt/itcms/__visit - i32.const 1456 + i32.const 1504 call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -62,7 +72,7 @@ i32.ne if local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.const 3 @@ -80,7 +90,7 @@ i32.add call $~lib/rt/__visit_members local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -97,7 +107,7 @@ i32.eq if local.get $0 - i32.load $0 offset=8 + i32.load offset=8 local.tee $1 i32.eqz if @@ -113,19 +123,19 @@ end block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.tee $1 i32.eqz if + i32.const 0 local.get $0 - i32.load $0 offset=8 - i32.eqz - local.get $0 - i32.const 17972 + i32.const 18028 i32.lt_u - i32.and + local.get $0 + i32.load offset=8 + select i32.eqz if i32.const 0 @@ -138,7 +148,7 @@ br $__inlined_func$~lib/rt/itcms/Object#unlink end local.get $0 - i32.load $0 offset=8 + i32.load offset=8 local.tee $2 i32.eqz if @@ -151,20 +161,20 @@ end local.get $1 local.get $2 - i32.store $0 offset=8 + i32.store offset=8 local.get $2 local.get $1 local.get $2 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.or - i32.store $0 offset=4 + i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 local.get $0 - i32.load $0 offset=12 + i32.load offset=12 local.tee $1 i32.const 1 i32.le_u @@ -172,8 +182,8 @@ i32.const 1 else local.get $1 - i32.const 1536 - i32.load $0 + i32.const 1584 + i32.load i32.gt_u if i32.const 1248 @@ -186,15 +196,15 @@ local.get $1 i32.const 3 i32.shl - i32.const 1540 + i32.const 1588 i32.add - i32.load $0 + i32.load i32.const 32 i32.and end local.set $3 local.get $2 - i32.load $0 offset=8 + i32.load offset=8 local.set $1 local.get $0 global.get $~lib/rt/itcms/white @@ -204,21 +214,21 @@ select local.get $2 i32.or - i32.store $0 offset=4 + i32.store offset=4 local.get $0 local.get $1 - i32.store $0 offset=8 + i32.store offset=8 local.get $1 local.get $0 local.get $1 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.or - i32.store $0 offset=4 + i32.store offset=4 local.get $2 local.get $0 - i32.store $0 offset=8 + i32.store offset=8 ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -226,7 +236,7 @@ (local $4 i32) (local $5 i32) local.get $1 - i32.load $0 + i32.load local.tee $2 i32.const 1 i32.and @@ -300,21 +310,21 @@ unreachable end local.get $1 - i32.load $0 offset=8 + i32.load offset=8 local.set $5 local.get $1 - i32.load $0 offset=4 + i32.load offset=4 local.tee $4 if local.get $4 local.get $5 - i32.store $0 offset=8 + i32.store offset=8 end local.get $5 if local.get $5 local.get $4 - i32.store $0 offset=4 + i32.store offset=4 end local.get $1 local.get $0 @@ -326,7 +336,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 i32.eq if local.get $0 @@ -339,7 +349,7 @@ i32.shl i32.add local.get $5 - i32.store $0 offset=96 + i32.store offset=96 local.get $5 i32.eqz if @@ -349,7 +359,7 @@ i32.shl i32.add local.tee $1 - i32.load $0 offset=4 + i32.load offset=4 i32.const -2 local.get $2 i32.rotl @@ -357,18 +367,18 @@ local.set $2 local.get $1 local.get $2 - i32.store $0 offset=4 + i32.store offset=4 local.get $2 i32.eqz if local.get $0 local.get $0 - i32.load $0 + i32.load i32.const -2 local.get $3 i32.rotl i32.and - i32.store $0 + i32.store end end end @@ -390,7 +400,7 @@ unreachable end local.get $1 - i32.load $0 + i32.load local.tee $3 i32.const 1 i32.and @@ -407,12 +417,12 @@ i32.const 4 i32.add local.get $1 - i32.load $0 + i32.load i32.const -4 i32.and i32.add local.tee $4 - i32.load $0 + i32.load local.tee $2 i32.const 1 i32.and @@ -429,17 +439,17 @@ i32.and i32.add local.tee $3 - i32.store $0 + i32.store local.get $1 i32.const 4 i32.add local.get $1 - i32.load $0 + i32.load i32.const -4 i32.and i32.add local.tee $4 - i32.load $0 + i32.load local.set $2 end local.get $3 @@ -449,9 +459,9 @@ local.get $1 i32.const 4 i32.sub - i32.load $0 + i32.load local.tee $1 - i32.load $0 + i32.load local.tee $6 i32.const 1 i32.and @@ -476,13 +486,13 @@ i32.and i32.add local.tee $3 - i32.store $0 + i32.store end local.get $4 local.get $2 i32.const 2 i32.or - i32.store $0 + i32.store local.get $3 i32.const -4 i32.and @@ -516,7 +526,7 @@ i32.const 4 i32.sub local.get $1 - i32.store $0 + i32.store local.get $2 i32.const 256 i32.lt_u @@ -572,19 +582,19 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 local.set $3 local.get $1 i32.const 0 - i32.store $0 offset=4 + i32.store offset=4 local.get $1 local.get $3 - i32.store $0 offset=8 + i32.store offset=8 local.get $3 if local.get $3 local.get $1 - i32.store $0 offset=4 + i32.store offset=4 end local.get $0 local.get $5 @@ -596,15 +606,15 @@ i32.shl i32.add local.get $1 - i32.store $0 offset=96 + i32.store offset=96 local.get $0 local.get $0 - i32.load $0 + i32.load i32.const 1 local.get $5 i32.shl i32.or - i32.store $0 + i32.store local.get $0 local.get $5 i32.const 2 @@ -612,12 +622,12 @@ i32.add local.tee $0 local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const 1 local.get $2 i32.shl i32.or - i32.store $0 offset=4 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -642,7 +652,7 @@ i32.sub local.set $1 local.get $0 - i32.load $0 offset=1568 + i32.load offset=1568 local.tee $4 if local.get $4 @@ -665,7 +675,7 @@ i32.eq if local.get $4 - i32.load $0 + i32.load local.set $3 local.get $1 i32.const 16 @@ -709,13 +719,13 @@ i32.const 1 i32.or i32.or - i32.store $0 + i32.store local.get $1 i32.const 0 - i32.store $0 offset=4 + i32.store offset=4 local.get $1 i32.const 0 - i32.store $0 offset=8 + i32.store offset=8 local.get $1 i32.const 4 i32.add @@ -723,10 +733,10 @@ i32.add local.tee $2 i32.const 2 - i32.store $0 + i32.store local.get $0 local.get $2 - i32.store $0 offset=1568 + i32.store offset=1568 local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock @@ -734,7 +744,7 @@ (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - memory.size $0 + memory.size local.tee $1 i32.const 0 i32.le_s @@ -742,7 +752,7 @@ i32.const 1 local.get $1 i32.sub - memory.grow $0 + memory.grow i32.const 0 i32.lt_s else @@ -751,12 +761,12 @@ if unreachable end - i32.const 17984 + i32.const 18032 i32.const 0 - i32.store $0 - i32.const 19552 + i32.store + i32.const 19600 i32.const 0 - i32.store $0 + i32.store loop $for-loop|0 local.get $0 i32.const 23 @@ -765,10 +775,10 @@ local.get $0 i32.const 2 i32.shl - i32.const 17984 + i32.const 18032 i32.add i32.const 0 - i32.store $0 offset=4 + i32.store offset=4 i32.const 0 local.set $1 loop $for-loop|1 @@ -783,10 +793,10 @@ i32.add i32.const 2 i32.shl - i32.const 17984 + i32.const 18032 i32.add i32.const 0 - i32.store $0 offset=96 + i32.store offset=96 local.get $1 i32.const 1 i32.add @@ -801,13 +811,13 @@ br $for-loop|0 end end - i32.const 17984 - i32.const 19556 - memory.size $0 + i32.const 18032 + i32.const 19604 + memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 17984 + i32.const 18032 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -835,7 +845,7 @@ i32.eqz local.set $1 global.get $~lib/rt/itcms/iter - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -848,19 +858,19 @@ global.set $~lib/rt/itcms/iter local.get $1 local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.ne if local.get $0 local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.get $1 i32.or - i32.store $0 offset=4 + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -871,7 +881,7 @@ return end local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -883,7 +893,7 @@ call $~lib/rt/itcms/visitRoots global.get $~lib/rt/itcms/toSpace global.get $~lib/rt/itcms/iter - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and i32.eq @@ -892,11 +902,11 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 17972 + i32.const 18028 i32.lt_u if local.get $0 - i32.load $0 + i32.load local.tee $2 if local.get $2 @@ -910,7 +920,7 @@ end end global.get $~lib/rt/itcms/iter - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -921,26 +931,26 @@ if local.get $1 local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.ne if local.get $0 local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.get $1 i32.or - i32.store $0 offset=4 + i32.store offset=4 local.get $0 i32.const 20 i32.add call $~lib/rt/__visit_members end local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -956,7 +966,7 @@ local.get $1 global.set $~lib/rt/itcms/white local.get $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const -4 i32.and global.set $~lib/rt/itcms/iter @@ -972,7 +982,7 @@ i32.ne if local.get $0 - i32.load $0 offset=4 + i32.load offset=4 local.tee $1 i32.const -4 i32.and @@ -992,19 +1002,19 @@ unreachable end local.get $0 - i32.const 17972 + i32.const 18028 i32.lt_u if local.get $0 i32.const 0 - i32.store $0 offset=4 + i32.store offset=4 local.get $0 i32.const 0 - i32.store $0 offset=8 + i32.store offset=8 else global.get $~lib/rt/itcms/total local.get $0 - i32.load $0 + i32.load i32.const -4 i32.and i32.const 4 @@ -1015,7 +1025,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 17972 + i32.const 18028 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1039,7 +1049,7 @@ i32.const 1 else local.get $2 - i32.load $0 + i32.load i32.const 1 i32.and end @@ -1053,10 +1063,10 @@ end local.get $2 local.get $2 - i32.load $0 + i32.load i32.const 1 i32.or - i32.store $0 + i32.store local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock @@ -1068,10 +1078,10 @@ global.get $~lib/rt/itcms/toSpace local.tee $0 local.get $0 - i32.store $0 offset=4 + i32.store offset=4 local.get $0 local.get $0 - i32.store $0 offset=8 + i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state end @@ -1140,7 +1150,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=4 + i32.load offset=4 i32.const -1 local.get $1 i32.shl @@ -1157,10 +1167,10 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 else local.get $0 - i32.load $0 + i32.load i32.const -1 local.get $2 i32.const 1 @@ -1176,7 +1186,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=4 + i32.load offset=4 local.tee $2 i32.eqz if @@ -1197,7 +1207,7 @@ i32.const 2 i32.shl i32.add - i32.load $0 offset=96 + i32.load offset=96 else i32.const 0 end @@ -1304,11 +1314,11 @@ local.tee $2 i32.eqz if - memory.size $0 + memory.size local.tee $2 i32.const 4 local.get $4 - i32.load $0 offset=1568 + i32.load offset=1568 local.get $2 i32.const 16 i32.shl @@ -1343,12 +1353,12 @@ local.get $3 i32.gt_s select - memory.grow $0 + memory.grow i32.const 0 i32.lt_s if local.get $3 - memory.grow $0 + memory.grow i32.const 0 i32.lt_s if @@ -1359,7 +1369,7 @@ local.get $2 i32.const 16 i32.shl - memory.size $0 + memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory @@ -1379,7 +1389,7 @@ end local.get $5 local.get $2 - i32.load $0 + i32.load i32.const -4 i32.and i32.gt_u @@ -1395,7 +1405,7 @@ local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 - i32.load $0 + i32.load local.set $3 local.get $5 i32.const 4 @@ -1425,7 +1435,7 @@ i32.const 2 i32.and i32.or - i32.store $0 + i32.store local.get $2 i32.const 4 i32.add @@ -1437,7 +1447,7 @@ i32.sub i32.const 1 i32.or - i32.store $0 + i32.store local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock @@ -1446,54 +1456,54 @@ local.get $3 i32.const -2 i32.and - i32.store $0 + i32.store local.get $2 i32.const 4 i32.add local.get $2 - i32.load $0 + i32.load i32.const -4 i32.and i32.add local.tee $3 local.get $3 - i32.load $0 + i32.load i32.const -3 i32.and - i32.store $0 + i32.store end local.get $2 local.get $1 - i32.store $0 offset=12 + i32.store offset=12 local.get $2 local.get $0 - i32.store $0 offset=16 + i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 - i32.load $0 offset=8 + i32.load offset=8 local.set $3 local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or - i32.store $0 offset=4 + i32.store offset=4 local.get $2 local.get $3 - i32.store $0 offset=8 + i32.store offset=8 local.get $3 local.get $2 local.get $3 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.or - i32.store $0 offset=4 + i32.store offset=4 local.get $1 local.get $2 - i32.store $0 offset=8 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $2 - i32.load $0 + i32.load i32.const -4 i32.and i32.const 4 @@ -1506,7 +1516,7 @@ local.tee $1 i32.const 0 local.get $0 - memory.fill $0 + memory.fill local.get $1 ) (func $class/testGenericInitializer @@ -1519,58 +1529,58 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 1644 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 - i32.store $0 + i32.store local.get $0 i32.const 4 - i32.const 4 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 - i32.store $0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 1644 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 - i64.store $0 + i64.store local.get $1 i32.const 16 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $1 - i32.store $0 + i32.store local.get $1 i32.const 0 - i32.store $0 + i32.store local.get $1 i32.const 0 - i32.store $0 offset=4 + i32.store offset=4 local.get $1 i32.const 0 - i32.store $0 offset=8 + i32.store offset=8 local.get $1 i32.const 0 - i32.store $0 offset=12 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 32 i32.const 0 call $~lib/rt/itcms/__new local.tee $2 - i32.store $0 offset=4 + i32.store offset=4 local.get $1 local.get $2 - i32.store $0 + i32.store local.get $2 if local.get $1 @@ -1579,20 +1589,20 @@ end local.get $1 local.get $2 - i32.store $0 offset=4 + i32.store offset=4 local.get $1 i32.const 32 - i32.store $0 offset=8 + i32.store offset=8 local.get $1 i32.const 0 - i32.store $0 offset=12 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 local.get $1 - i32.store $0 + i32.store local.get $1 if local.get $0 @@ -1605,8 +1615,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 18000 i32.const 18048 + i32.const 18096 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1616,14 +1626,17 @@ block $folding-inner0 block $invalid block $~lib/array/Array - block $class/Animal - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load $0 - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $~lib/array/Array $invalid + block $class/PropertyPrototypeClass + block $class/Animal + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $class/PropertyPrototypeClass $folding-inner0 $~lib/array/Array $invalid + end + return end return end @@ -1632,7 +1645,7 @@ return end local.get $0 - i32.load $0 + i32.load local.tee $0 if local.get $0 @@ -1643,7 +1656,7 @@ unreachable end local.get $0 - i32.load $0 + i32.load local.tee $0 if local.get $0 @@ -1651,38 +1664,150 @@ end ) (func $~start - memory.size $0 - i32.const 16 - i32.shl - i32.const 17972 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 18028 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store + local.get $0 + i32.const 11 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class/a + loop $while-continue|0 + global.get $class/a + local.tee $0 + global.get $class/zero + i32.store offset=4 + local.get $0 + i32.load offset=4 + if + i32.const 1 + global.set $class/zero + br $while-continue|0 + end + end + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store + local.get $0 + global.get $class/zero + i32.store + local.get $0 + i32.load + if + i32.const 1 + global.set $class/zero + br $while-continue|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $class/a + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + if + i32.const 0 + i32.const 1456 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class/zero + if + i32.const 0 + i32.const 1456 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class/a + i32.store offset=4 + local.get $0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18048 + i32.const 18096 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store $0 - i32.const 1176 - i32.const 1168 - i32.store $0 - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store $0 - i32.const 1208 - i32.const 1200 - i32.store $0 - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store $0 - i32.const 1352 - i32.const 1344 - i32.store $0 - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:class/test (param $0 i32) (result i32) (local $1 i32) @@ -1691,11 +1816,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 1644 i32.lt_s if - i32.const 18000 i32.const 18048 + i32.const 18096 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1704,25 +1829,25 @@ global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store $0 + i32.store local.get $0 - i32.load $0 + i32.load drop local.get $0 - i32.load16_s $0 offset=4 + i32.load16_s offset=4 drop local.get $0 - i32.load8_s $0 offset=6 + i32.load8_s offset=6 drop local.get $0 i32.const 1 - i32.store $0 + i32.store local.get $0 i32.const 2 - i32.store16 $0 offset=4 + i32.store16 offset=4 local.get $0 i32.const 3 - i32.store8 $0 offset=6 + i32.store8 offset=6 local.get $1 i32.const 4 i32.add @@ -1735,7 +1860,7 @@ i32.const 20 i32.sub local.tee $0 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.eq @@ -1764,7 +1889,7 @@ i32.const 20 i32.sub local.tee $1 - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and i32.eq @@ -1772,7 +1897,7 @@ local.get $0 i32.const 20 i32.sub - i32.load $0 offset=4 + i32.load offset=4 i32.const 3 i32.and local.tee $0 From c4c60b7d0bc1b6f9ecc652cd08616d5d6d3623db Mon Sep 17 00:00:00 2001 From: chen ruixiang Date: Thu, 1 Sep 2022 16:55:42 +0800 Subject: [PATCH 5/5] fix conflicts --- tests/compiler/class.debug.wat | 202 +++++++++---------- tests/compiler/class.release.wat | 328 +++++++++++++++---------------- 2 files changed, 265 insertions(+), 265 deletions(-) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index 30accb467d..4c0df43cb1 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -71,12 +71,12 @@ (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=4 + i32.store $0 offset=4 ) (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=8 + i32.store $0 offset=8 ) (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) local.get $space @@ -89,7 +89,7 @@ ) (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.const -1 i32.xor @@ -97,7 +97,7 @@ ) (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and ) @@ -149,7 +149,7 @@ (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) local.get $this local.get $this - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.const -1 i32.xor @@ -162,7 +162,7 @@ local.get $this local.get $obj local.get $this - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.or @@ -181,7 +181,7 @@ i32.const 1 drop local.get $this - i32.load offset=8 + i32.load $0 offset=8 i32.const 0 i32.eq if (result i32) @@ -203,7 +203,7 @@ return end local.get $this - i32.load offset=8 + i32.load $0 offset=8 local.set $prev i32.const 1 drop @@ -230,7 +230,7 @@ local.set $ptr local.get $id local.get $ptr - i32.load + i32.load $0 i32.gt_u if i32.const 224 @@ -247,12 +247,12 @@ i32.const 8 i32.mul i32.add - i32.load + i32.load $0 ) (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) (local $rtId i32) local.get $this - i32.load offset=12 + i32.load $0 offset=12 local.set $rtId local.get $rtId i32.const 1 @@ -271,7 +271,7 @@ (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) (local $prev i32) local.get $list - i32.load offset=8 + i32.load $0 offset=8 local.set $prev local.get $this local.get $list @@ -295,7 +295,7 @@ i32.eq if local.get $this - i32.load offset=8 + i32.load $0 offset=8 local.tee $var$1 i32.eqz if (result i32) @@ -363,7 +363,7 @@ local.get $var$2 if local.get $ptr - i32.load + i32.load $0 local.get $cookie call $~lib/rt/itcms/__visit local.get $ptr @@ -377,7 +377,7 @@ (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) i32.const 4 local.get $this - i32.load + i32.load $0 i32.const 3 i32.const -1 i32.xor @@ -387,22 +387,22 @@ (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store $0 ) (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store $0 ) (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=4 + i32.store $0 offset=4 ) (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=8 + i32.store $0 offset=8 ) (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) (local $blockInfo i32) @@ -416,7 +416,7 @@ (local $var$10 i32) (local $var$11 i32) local.get $block - i32.load + i32.load $0 local.set $blockInfo i32.const 1 drop @@ -516,10 +516,10 @@ unreachable end local.get $block - i32.load offset=4 + i32.load $0 offset=4 local.set $prev local.get $block - i32.load offset=8 + i32.load $0 offset=8 local.set $next local.get $prev if @@ -549,7 +549,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 i32.eq if local.get $root @@ -570,7 +570,7 @@ i32.shl i32.add local.get $var$7 - i32.store offset=96 + i32.store $0 offset=96 local.get $next i32.eqz if @@ -583,7 +583,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=4 + i32.load $0 offset=4 local.set $var$6 local.get $root local.set $var$7 @@ -604,13 +604,13 @@ i32.shl i32.add local.get $var$10 - i32.store offset=4 + i32.store $0 offset=4 local.get $var$6 i32.eqz if local.get $root local.get $root - i32.load + i32.load $0 i32.const 1 local.get $fl i32.shl @@ -648,7 +648,7 @@ unreachable end local.get $block - i32.load + i32.load $0 local.set $blockInfo i32.const 1 drop @@ -670,7 +670,7 @@ i32.const 4 i32.add local.get $var$3 - i32.load + i32.load $0 i32.const 3 i32.const -1 i32.xor @@ -678,7 +678,7 @@ i32.add local.set $right local.get $right - i32.load + i32.load $0 local.set $rightInfo local.get $rightInfo i32.const 1 @@ -705,7 +705,7 @@ i32.const 4 i32.add local.get $var$3 - i32.load + i32.load $0 i32.const 3 i32.const -1 i32.xor @@ -713,7 +713,7 @@ i32.add local.set $right local.get $right - i32.load + i32.load $0 local.set $rightInfo end local.get $blockInfo @@ -725,10 +725,10 @@ local.get $var$3 i32.const 4 i32.sub - i32.load + i32.load $0 local.set $var$3 local.get $var$3 - i32.load + i32.load $0 local.set $var$6 i32.const 1 drop @@ -809,7 +809,7 @@ i32.const 4 i32.sub local.get $block - i32.store + i32.store $0 local.get $size i32.const 256 i32.lt_u @@ -888,7 +888,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 local.set $head local.get $block i32.const 0 @@ -920,10 +920,10 @@ i32.shl i32.add local.get $var$6 - i32.store offset=96 + i32.store $0 offset=96 local.get $root local.get $root - i32.load + i32.load $0 i32.const 1 local.get $fl i32.shl @@ -942,7 +942,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=4 + i32.load $0 offset=4 i32.const 1 local.get $sl i32.shl @@ -954,7 +954,7 @@ i32.shl i32.add local.get $var$10 - i32.store offset=4 + i32.store $0 offset=4 ) (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $end i32) (result i32) (local $var$3 i32) @@ -999,7 +999,7 @@ local.get $root local.set $var$3 local.get $var$3 - i32.load offset=1568 + i32.load $0 offset=1568 local.set $tail i32.const 0 local.set $tailInfo @@ -1032,7 +1032,7 @@ i32.sub local.set $start local.get $tail - i32.load + i32.load $0 local.set $tailInfo else nop @@ -1110,7 +1110,7 @@ local.set $var$3 local.get $var$9 local.get $var$3 - i32.store offset=1568 + i32.store $0 offset=1568 local.get $root local.get $left call $~lib/rt/tlsf/insertBlock @@ -1140,7 +1140,7 @@ i32.xor i32.and local.set $rootOffset - memory.size + memory.size $0 local.set $pagesBefore local.get $rootOffset i32.const 1572 @@ -1161,7 +1161,7 @@ local.get $pagesNeeded local.get $pagesBefore i32.sub - memory.grow + memory.grow $0 i32.const 0 i32.lt_s else @@ -1181,7 +1181,7 @@ local.set $var$4 local.get $var$5 local.get $var$4 - i32.store offset=1568 + i32.store $0 offset=1568 i32.const 0 local.set $var$5 loop $for-loop|0 @@ -1203,7 +1203,7 @@ i32.shl i32.add local.get $var$6 - i32.store offset=4 + i32.store $0 offset=4 i32.const 0 local.set $var$8 loop $for-loop|1 @@ -1231,7 +1231,7 @@ i32.shl i32.add local.get $var$6 - i32.store offset=96 + i32.store $0 offset=96 local.get $var$8 i32.const 1 i32.add @@ -1254,7 +1254,7 @@ drop local.get $root local.get $memStart - memory.size + memory.size $0 i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory @@ -1281,7 +1281,7 @@ end if (result i32) local.get $block - i32.load + i32.load $0 i32.const 1 i32.and i32.eqz @@ -1304,7 +1304,7 @@ drop local.get $block local.get $block - i32.load + i32.load $0 i32.const 1 i32.or call $~lib/rt/common/BLOCK#set:mmInfo @@ -1719,7 +1719,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=4 + i32.load $0 offset=4 i32.const 0 i32.const -1 i32.xor @@ -1733,7 +1733,7 @@ i32.eqz if local.get $root - i32.load + i32.load $0 i32.const 0 i32.const -1 i32.xor @@ -1761,7 +1761,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=4 + i32.load $0 offset=4 local.set $slMap i32.const 1 drop @@ -1791,7 +1791,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 local.set $head end else @@ -1811,7 +1811,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 local.set $head end local.get $head @@ -1841,7 +1841,7 @@ i32.add local.set $size end - memory.size + memory.size $0 local.set $pagesBefore local.get $size i32.const 4 @@ -1853,7 +1853,7 @@ local.get $root local.set $var$3 local.get $var$3 - i32.load offset=1568 + i32.load $0 offset=1568 i32.ne i32.shl i32.add @@ -1878,19 +1878,19 @@ select local.set $pagesWanted local.get $pagesWanted - memory.grow + memory.grow $0 i32.const 0 i32.lt_s if local.get $pagesNeeded - memory.grow + memory.grow $0 i32.const 0 i32.lt_s if unreachable end end - memory.size + memory.size $0 local.set $pagesAfter local.get $root local.get $pagesBefore @@ -1907,7 +1907,7 @@ (local $remaining i32) (local $var$5 i32) local.get $block - i32.load + i32.load $0 local.set $blockInfo i32.const 1 drop @@ -1977,7 +1977,7 @@ i32.const 4 i32.add local.get $var$5 - i32.load + i32.load $0 i32.const 3 i32.const -1 i32.xor @@ -1989,13 +1989,13 @@ i32.const 4 i32.add local.get $var$5 - i32.load + i32.load $0 i32.const 3 i32.const -1 i32.xor i32.and i32.add - i32.load + i32.load $0 i32.const 2 i32.const -1 i32.xor @@ -2039,7 +2039,7 @@ i32.const 1 drop local.get $block - i32.load + i32.load $0 i32.const 3 i32.const -1 i32.xor @@ -2081,12 +2081,12 @@ (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 + i32.store $0 offset=12 ) (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=16 + i32.store $0 offset=16 ) (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) (local $obj i32) @@ -2137,18 +2137,18 @@ local.get $ptr i32.const 0 local.get $size - memory.fill + memory.fill $0 local.get $ptr ) (func $class/PropertyPrototypeClass#set:two (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store $0 ) (func $class/PropertyPrototypeClass#set:_three (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=4 + i32.store $0 offset=4 ) (func $class/PropertyPrototypeClass#set:three (param $this i32) (param $a i32) local.get $this @@ -2157,11 +2157,11 @@ ) (func $class/PropertyPrototypeClass#get:three (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.load $0 offset=4 ) (func $class/PropertyPrototypeClass#get:two (param $0 i32) (result i32) local.get $0 - i32.load + i32.load $0 ) (func $class/PropertyPrototypeClass.set:one (param $a i32) local.get $a @@ -2192,17 +2192,17 @@ (func $class/Animal#set:one (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store $0 ) (func $class/Animal#set:two (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store16 offset=4 + i32.store16 $0 offset=4 ) (func $class/Animal#set:three (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store8 offset=6 + i32.store8 $0 offset=6 ) (func $class/test (param $animal i32) (result i32) (local $ptr i32) @@ -2218,13 +2218,13 @@ call $class/Animal#instanceSub drop local.get $animal - i32.load + i32.load $0 drop local.get $animal - i32.load16_s offset=4 + i32.load16_s $0 offset=4 drop local.get $animal - i32.load8_s offset=6 + i32.load8_s $0 offset=6 drop local.get $animal i32.const 0 @@ -2320,7 +2320,7 @@ (func $class/GenericInitializer#set:foo (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store $0 local.get $0 local.get $1 i32.const 0 @@ -2329,7 +2329,7 @@ (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store + i32.store $0 local.get $0 local.get $1 i32.const 0 @@ -2338,17 +2338,17 @@ (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=4 + i32.store $0 offset=4 ) (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=8 + i32.store $0 offset=8 ) (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 + i32.store $0 offset=12 ) (func $class/testGenericInitializer i32.const 0 @@ -2377,7 +2377,7 @@ (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.load + i32.load $0 local.tee $2 if local.get $2 @@ -2388,7 +2388,7 @@ (func $class/GenericInitializer~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.load + i32.load $0 local.tee $2 if local.get $2 @@ -2400,7 +2400,7 @@ i32.const 0 drop local.get $this - i32.load + i32.load $0 local.get $cookie call $~lib/rt/itcms/__visit ) @@ -2421,7 +2421,7 @@ local.get $0 i32.const 8 i32.sub - i32.load + i32.load $0 br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/PropertyPrototypeClass $class/GenericInitializer $~lib/array/Array $invalid end return @@ -2475,7 +2475,7 @@ call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 - i64.store + i64.store $0 i32.const 4 i32.const 4 i32.eq @@ -2490,7 +2490,7 @@ f32.const 2 call $class/Animal.sub drop - memory.size + memory.size $0 i32.const 16 i32.shl global.get $~lib/memory/__heap_base @@ -2529,7 +2529,7 @@ global.get $~lib/memory/__stack_pointer global.get $class/a local.tee $0 - i32.store + i32.store $0 local.get $0 global.get $class/zero call $class/PropertyPrototypeClass#set:two @@ -2547,7 +2547,7 @@ local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 call $class/PropertyPrototypeClass#get:three i32.const 0 @@ -2577,7 +2577,7 @@ local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 call $class/PropertyPrototypeClass#changeOne call $class/PropertyPrototypeClass.get:one @@ -2606,7 +2606,7 @@ call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store $0 local.get $0 i32.eqz if @@ -2615,7 +2615,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $0 - i32.store + i32.store $0 end local.get $0 i32.const 2 @@ -2644,7 +2644,7 @@ call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 - i64.store + i64.store $0 local.get $0 i32.eqz if @@ -2653,7 +2653,7 @@ i32.const 6 call $~lib/rt/itcms/__new local.tee $0 - i32.store + i32.store $0 end local.get $0 i32.const 0 @@ -2696,7 +2696,7 @@ i32.const 0 call $~lib/rt/itcms/__new local.tee $5 - i32.store offset=4 + i32.store $0 offset=4 i32.const 2 global.get $~lib/shared/runtime/Runtime.Incremental i32.ne @@ -2730,7 +2730,7 @@ call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store $0 local.get $0 i32.eqz if @@ -2739,7 +2739,7 @@ i32.const 5 call $~lib/rt/itcms/__new local.tee $0 - i32.store + i32.store $0 end local.get $0 i32.const 0 @@ -2763,7 +2763,7 @@ call $~stack_check global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store $0 local.get $0 call $class/test local.set $1 diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index 88c8ad7ee4..610251d93a 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -62,7 +62,7 @@ call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.set $0 @@ -72,7 +72,7 @@ i32.ne if local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.const 3 @@ -90,7 +90,7 @@ i32.add call $~lib/rt/__visit_members local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.set $0 @@ -107,7 +107,7 @@ i32.eq if local.get $0 - i32.load offset=8 + i32.load $0 offset=8 local.tee $1 i32.eqz if @@ -123,19 +123,19 @@ end block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.tee $1 i32.eqz if - i32.const 0 + local.get $0 + i32.load $0 offset=8 + i32.eqz local.get $0 i32.const 18028 i32.lt_u - local.get $0 - i32.load offset=8 - select + i32.and i32.eqz if i32.const 0 @@ -148,7 +148,7 @@ br $__inlined_func$~lib/rt/itcms/Object#unlink end local.get $0 - i32.load offset=8 + i32.load $0 offset=8 local.tee $2 i32.eqz if @@ -161,20 +161,20 @@ end local.get $1 local.get $2 - i32.store offset=8 + i32.store $0 offset=8 local.get $2 local.get $1 local.get $2 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.or - i32.store offset=4 + i32.store $0 offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 local.get $0 - i32.load offset=12 + i32.load $0 offset=12 local.tee $1 i32.const 1 i32.le_u @@ -183,7 +183,7 @@ else local.get $1 i32.const 1584 - i32.load + i32.load $0 i32.gt_u if i32.const 1248 @@ -198,13 +198,13 @@ i32.shl i32.const 1588 i32.add - i32.load + i32.load $0 i32.const 32 i32.and end local.set $3 local.get $2 - i32.load offset=8 + i32.load $0 offset=8 local.set $1 local.get $0 global.get $~lib/rt/itcms/white @@ -214,21 +214,21 @@ select local.get $2 i32.or - i32.store offset=4 + i32.store $0 offset=4 local.get $0 local.get $1 - i32.store offset=8 + i32.store $0 offset=8 local.get $1 local.get $0 local.get $1 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.or - i32.store offset=4 + i32.store $0 offset=4 local.get $2 local.get $0 - i32.store offset=8 + i32.store $0 offset=8 ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -236,7 +236,7 @@ (local $4 i32) (local $5 i32) local.get $1 - i32.load + i32.load $0 local.tee $2 i32.const 1 i32.and @@ -310,21 +310,21 @@ unreachable end local.get $1 - i32.load offset=8 + i32.load $0 offset=8 local.set $5 local.get $1 - i32.load offset=4 + i32.load $0 offset=4 local.tee $4 if local.get $4 local.get $5 - i32.store offset=8 + i32.store $0 offset=8 end local.get $5 if local.get $5 local.get $4 - i32.store offset=4 + i32.store $0 offset=4 end local.get $1 local.get $0 @@ -336,7 +336,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 i32.eq if local.get $0 @@ -349,7 +349,7 @@ i32.shl i32.add local.get $5 - i32.store offset=96 + i32.store $0 offset=96 local.get $5 i32.eqz if @@ -359,7 +359,7 @@ i32.shl i32.add local.tee $1 - i32.load offset=4 + i32.load $0 offset=4 i32.const -2 local.get $2 i32.rotl @@ -367,18 +367,18 @@ local.set $2 local.get $1 local.get $2 - i32.store offset=4 + i32.store $0 offset=4 local.get $2 i32.eqz if local.get $0 local.get $0 - i32.load + i32.load $0 i32.const -2 local.get $3 i32.rotl i32.and - i32.store + i32.store $0 end end end @@ -400,7 +400,7 @@ unreachable end local.get $1 - i32.load + i32.load $0 local.tee $3 i32.const 1 i32.and @@ -417,12 +417,12 @@ i32.const 4 i32.add local.get $1 - i32.load + i32.load $0 i32.const -4 i32.and i32.add local.tee $4 - i32.load + i32.load $0 local.tee $2 i32.const 1 i32.and @@ -439,17 +439,17 @@ i32.and i32.add local.tee $3 - i32.store + i32.store $0 local.get $1 i32.const 4 i32.add local.get $1 - i32.load + i32.load $0 i32.const -4 i32.and i32.add local.tee $4 - i32.load + i32.load $0 local.set $2 end local.get $3 @@ -459,9 +459,9 @@ local.get $1 i32.const 4 i32.sub - i32.load + i32.load $0 local.tee $1 - i32.load + i32.load $0 local.tee $6 i32.const 1 i32.and @@ -486,13 +486,13 @@ i32.and i32.add local.tee $3 - i32.store + i32.store $0 end local.get $4 local.get $2 i32.const 2 i32.or - i32.store + i32.store $0 local.get $3 i32.const -4 i32.and @@ -526,7 +526,7 @@ i32.const 4 i32.sub local.get $1 - i32.store + i32.store $0 local.get $2 i32.const 256 i32.lt_u @@ -582,19 +582,19 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 local.set $3 local.get $1 i32.const 0 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 local.get $3 - i32.store offset=8 + i32.store $0 offset=8 local.get $3 if local.get $3 local.get $1 - i32.store offset=4 + i32.store $0 offset=4 end local.get $0 local.get $5 @@ -606,15 +606,15 @@ i32.shl i32.add local.get $1 - i32.store offset=96 + i32.store $0 offset=96 local.get $0 local.get $0 - i32.load + i32.load $0 i32.const 1 local.get $5 i32.shl i32.or - i32.store + i32.store $0 local.get $0 local.get $5 i32.const 2 @@ -622,12 +622,12 @@ i32.add local.tee $0 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const 1 local.get $2 i32.shl i32.or - i32.store offset=4 + i32.store $0 offset=4 ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -652,7 +652,7 @@ i32.sub local.set $1 local.get $0 - i32.load offset=1568 + i32.load $0 offset=1568 local.tee $4 if local.get $4 @@ -675,7 +675,7 @@ i32.eq if local.get $4 - i32.load + i32.load $0 local.set $3 local.get $1 i32.const 16 @@ -719,13 +719,13 @@ i32.const 1 i32.or i32.or - i32.store + i32.store $0 local.get $1 i32.const 0 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 i32.const 0 - i32.store offset=8 + i32.store $0 offset=8 local.get $1 i32.const 4 i32.add @@ -733,10 +733,10 @@ i32.add local.tee $2 i32.const 2 - i32.store + i32.store $0 local.get $0 local.get $2 - i32.store offset=1568 + i32.store $0 offset=1568 local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock @@ -744,7 +744,7 @@ (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - memory.size + memory.size $0 local.tee $1 i32.const 0 i32.le_s @@ -752,7 +752,7 @@ i32.const 1 local.get $1 i32.sub - memory.grow + memory.grow $0 i32.const 0 i32.lt_s else @@ -763,10 +763,10 @@ end i32.const 18032 i32.const 0 - i32.store + i32.store $0 i32.const 19600 i32.const 0 - i32.store + i32.store $0 loop $for-loop|0 local.get $0 i32.const 23 @@ -778,7 +778,7 @@ i32.const 18032 i32.add i32.const 0 - i32.store offset=4 + i32.store $0 offset=4 i32.const 0 local.set $1 loop $for-loop|1 @@ -796,7 +796,7 @@ i32.const 18032 i32.add i32.const 0 - i32.store offset=96 + i32.store $0 offset=96 local.get $1 i32.const 1 i32.add @@ -813,7 +813,7 @@ end i32.const 18032 i32.const 19604 - memory.size + memory.size $0 i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory @@ -845,7 +845,7 @@ i32.eqz local.set $1 global.get $~lib/rt/itcms/iter - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.set $0 @@ -858,19 +858,19 @@ global.set $~lib/rt/itcms/iter local.get $1 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.ne if local.get $0 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.get $1 i32.or - i32.store offset=4 + i32.store $0 offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -881,7 +881,7 @@ return end local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.set $0 @@ -893,7 +893,7 @@ call $~lib/rt/itcms/visitRoots global.get $~lib/rt/itcms/toSpace global.get $~lib/rt/itcms/iter - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and i32.eq @@ -906,7 +906,7 @@ i32.lt_u if local.get $0 - i32.load + i32.load $0 local.tee $2 if local.get $2 @@ -920,7 +920,7 @@ end end global.get $~lib/rt/itcms/iter - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.set $0 @@ -931,26 +931,26 @@ if local.get $1 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.ne if local.get $0 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.get $1 i32.or - i32.store offset=4 + i32.store $0 offset=4 local.get $0 i32.const 20 i32.add call $~lib/rt/__visit_members end local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and local.set $0 @@ -966,7 +966,7 @@ local.get $1 global.set $~lib/rt/itcms/white local.get $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const -4 i32.and global.set $~lib/rt/itcms/iter @@ -982,7 +982,7 @@ i32.ne if local.get $0 - i32.load offset=4 + i32.load $0 offset=4 local.tee $1 i32.const -4 i32.and @@ -1007,14 +1007,14 @@ if local.get $0 i32.const 0 - i32.store offset=4 + i32.store $0 offset=4 local.get $0 i32.const 0 - i32.store offset=8 + i32.store $0 offset=8 else global.get $~lib/rt/itcms/total local.get $0 - i32.load + i32.load $0 i32.const -4 i32.and i32.const 4 @@ -1049,7 +1049,7 @@ i32.const 1 else local.get $2 - i32.load + i32.load $0 i32.const 1 i32.and end @@ -1063,10 +1063,10 @@ end local.get $2 local.get $2 - i32.load + i32.load $0 i32.const 1 i32.or - i32.store + i32.store $0 local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock @@ -1078,10 +1078,10 @@ global.get $~lib/rt/itcms/toSpace local.tee $0 local.get $0 - i32.store offset=4 + i32.store $0 offset=4 local.get $0 local.get $0 - i32.store offset=8 + i32.store $0 offset=8 i32.const 0 global.set $~lib/rt/itcms/state end @@ -1150,7 +1150,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=4 + i32.load $0 offset=4 i32.const -1 local.get $1 i32.shl @@ -1167,10 +1167,10 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 else local.get $0 - i32.load + i32.load $0 i32.const -1 local.get $2 i32.const 1 @@ -1186,7 +1186,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=4 + i32.load $0 offset=4 local.tee $2 i32.eqz if @@ -1207,7 +1207,7 @@ i32.const 2 i32.shl i32.add - i32.load offset=96 + i32.load $0 offset=96 else i32.const 0 end @@ -1314,11 +1314,11 @@ local.tee $2 i32.eqz if - memory.size + memory.size $0 local.tee $2 i32.const 4 local.get $4 - i32.load offset=1568 + i32.load $0 offset=1568 local.get $2 i32.const 16 i32.shl @@ -1353,12 +1353,12 @@ local.get $3 i32.gt_s select - memory.grow + memory.grow $0 i32.const 0 i32.lt_s if local.get $3 - memory.grow + memory.grow $0 i32.const 0 i32.lt_s if @@ -1369,7 +1369,7 @@ local.get $2 i32.const 16 i32.shl - memory.size + memory.size $0 i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory @@ -1389,7 +1389,7 @@ end local.get $5 local.get $2 - i32.load + i32.load $0 i32.const -4 i32.and i32.gt_u @@ -1405,7 +1405,7 @@ local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 - i32.load + i32.load $0 local.set $3 local.get $5 i32.const 4 @@ -1435,7 +1435,7 @@ i32.const 2 i32.and i32.or - i32.store + i32.store $0 local.get $2 i32.const 4 i32.add @@ -1447,7 +1447,7 @@ i32.sub i32.const 1 i32.or - i32.store + i32.store $0 local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock @@ -1456,54 +1456,54 @@ local.get $3 i32.const -2 i32.and - i32.store + i32.store $0 local.get $2 i32.const 4 i32.add local.get $2 - i32.load + i32.load $0 i32.const -4 i32.and i32.add local.tee $3 local.get $3 - i32.load + i32.load $0 i32.const -3 i32.and - i32.store + i32.store $0 end local.get $2 local.get $1 - i32.store offset=12 + i32.store $0 offset=12 local.get $2 local.get $0 - i32.store offset=16 + i32.store $0 offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 - i32.load offset=8 + i32.load $0 offset=8 local.set $3 local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or - i32.store offset=4 + i32.store $0 offset=4 local.get $2 local.get $3 - i32.store offset=8 + i32.store $0 offset=8 local.get $3 local.get $2 local.get $3 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.or - i32.store offset=4 + i32.store $0 offset=4 local.get $1 local.get $2 - i32.store offset=8 + i32.store $0 offset=8 global.get $~lib/rt/itcms/total local.get $2 - i32.load + i32.load $0 i32.const -4 i32.and i32.const 4 @@ -1516,7 +1516,7 @@ local.tee $1 i32.const 0 local.get $0 - memory.fill + memory.fill $0 local.get $1 ) (func $class/testGenericInitializer @@ -1535,13 +1535,13 @@ global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 - i32.store + i32.store $0 local.get $0 i32.const 4 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 - i32.store + i32.store $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1553,34 +1553,34 @@ global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 - i64.store + i64.store $0 local.get $1 i32.const 16 i32.const 6 call $~lib/rt/itcms/__new local.tee $1 - i32.store + i32.store $0 local.get $1 i32.const 0 - i32.store + i32.store $0 local.get $1 i32.const 0 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 i32.const 0 - i32.store offset=8 + i32.store $0 offset=8 local.get $1 i32.const 0 - i32.store offset=12 + i32.store $0 offset=12 global.get $~lib/memory/__stack_pointer i32.const 32 i32.const 0 call $~lib/rt/itcms/__new local.tee $2 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 local.get $2 - i32.store + i32.store $0 local.get $2 if local.get $1 @@ -1589,20 +1589,20 @@ end local.get $1 local.get $2 - i32.store offset=4 + i32.store $0 offset=4 local.get $1 i32.const 32 - i32.store offset=8 + i32.store $0 offset=8 local.get $1 i32.const 0 - i32.store offset=12 + i32.store $0 offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 local.get $1 - i32.store + i32.store $0 local.get $1 if local.get $0 @@ -1633,7 +1633,7 @@ local.get $0 i32.const 8 i32.sub - i32.load + i32.load $0 br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $class/PropertyPrototypeClass $folding-inner0 $~lib/array/Array $invalid end return @@ -1645,7 +1645,7 @@ return end local.get $0 - i32.load + i32.load $0 local.tee $0 if local.get $0 @@ -1656,7 +1656,7 @@ unreachable end local.get $0 - i32.load + i32.load $0 local.tee $0 if local.get $0 @@ -1677,8 +1677,8 @@ global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 - i64.store - memory.size + i64.store $0 + memory.size $0 i32.const 16 i32.shl i32.const 18028 @@ -1688,26 +1688,26 @@ global.set $~lib/rt/itcms/threshold i32.const 1172 i32.const 1168 - i32.store + i32.store $0 i32.const 1176 i32.const 1168 - i32.store + i32.store $0 i32.const 1168 global.set $~lib/rt/itcms/pinSpace i32.const 1204 i32.const 1200 - i32.store + i32.store $0 i32.const 1208 i32.const 1200 - i32.store + i32.store $0 i32.const 1200 global.set $~lib/rt/itcms/toSpace i32.const 1348 i32.const 1344 - i32.store + i32.store $0 i32.const 1352 i32.const 1344 - i32.store + i32.store $0 i32.const 1344 global.set $~lib/rt/itcms/fromSpace local.get $0 @@ -1721,19 +1721,19 @@ global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 - i32.store + i32.store $0 local.get $0 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 - i32.store + i32.store $0 local.get $0 i32.const 2 - i32.store + i32.store $0 local.get $0 i32.const 11 - i32.store offset=4 + i32.store $0 offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1744,9 +1744,9 @@ global.get $class/a local.tee $0 global.get $class/zero - i32.store offset=4 + i32.store $0 offset=4 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 if i32.const 1 global.set $class/zero @@ -1757,12 +1757,12 @@ global.get $~lib/memory/__stack_pointer global.get $class/a local.tee $0 - i32.store + i32.store $0 local.get $0 global.get $class/zero - i32.store + i32.store $0 local.get $0 - i32.load + i32.load $0 if i32.const 1 global.set $class/zero @@ -1772,9 +1772,9 @@ global.get $~lib/memory/__stack_pointer global.get $class/a local.tee $0 - i32.store offset=4 + i32.store $0 offset=4 local.get $0 - i32.load offset=4 + i32.load $0 offset=4 if i32.const 0 i32.const 1456 @@ -1795,7 +1795,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $class/a - i32.store offset=4 + i32.store $0 offset=4 local.get $0 i32.const 8 i32.add @@ -1829,25 +1829,25 @@ global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store + i32.store $0 local.get $0 - i32.load + i32.load $0 drop local.get $0 - i32.load16_s offset=4 + i32.load16_s $0 offset=4 drop local.get $0 - i32.load8_s offset=6 + i32.load8_s $0 offset=6 drop local.get $0 i32.const 1 - i32.store + i32.store $0 local.get $0 i32.const 2 - i32.store16 offset=4 + i32.store16 $0 offset=4 local.get $0 i32.const 3 - i32.store8 offset=6 + i32.store8 $0 offset=6 local.get $1 i32.const 4 i32.add @@ -1860,7 +1860,7 @@ i32.const 20 i32.sub local.tee $0 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.eq @@ -1889,7 +1889,7 @@ i32.const 20 i32.sub local.tee $1 - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and i32.eq @@ -1897,7 +1897,7 @@ local.get $0 i32.const 20 i32.sub - i32.load offset=4 + i32.load $0 offset=4 i32.const 3 i32.and local.tee $0