Files
cell/boot/qbe.cm.mcode

15488 lines
151 KiB
Plaintext

{
"name": "qbe.cm",
"functions": [
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t =l and {1}, 1\n %{2} =w ceql %{3}.t, 0\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t1 =l and {1}, 1\n %{2}.ii =w ceql %{3}.t1, 0\n %{4}.t2 =l and {5}, 7\n %{6}.fi =w ceql %{7}.t2, 5\n %{8} =w or %{9}.ii, %{10}.fi\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t =l and {1}, 31\n %{2} =w ceql %{3}.t, 7\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t =l and {1}, 31\n %{2} =w ceql %{3}.t, 3\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t =l and {1}, 31\n %{2} =w ceql %{3}.t, 15\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t =l and {1}, 7\n %{2} =w ceql %{3}.t, 1\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.t =l and {1}, 31\n %{2} =w ceql %{3}.t, 27\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.imm =l and {1}, 31\n %{2}.is_imm =w ceql %{3}.imm, 27\n jnz %{4}.is_imm, @{5}.yes, @{6}.chk_ptr\n@{7}.chk_ptr\n %{8}.ptag =l and {9}, 7\n %{10}.is_ptr =w ceql %{11}.ptag, 1\n jnz %{12}.is_ptr, @{13}.load_hdr, @{14}.no\n@{15}.load_hdr\n %{16}.ptr =l and {17}, -8\n %{18}.hdr =l loadl %{19}.ptr\n@{20}.chase\n %{21}.ht =l and %{22}.hdr, 7\n %{23}.is_fwd =w ceql %{24}.ht, 7\n jnz %{25}.is_fwd, @{26}.follow, @{27}.chk_type\n@{28}.follow\n %{29}.ptr =l shr %{30}.hdr, 3\n %{31}.hdr =l loadl %{32}.ptr\n jmp @{33}.chase\n@{34}.chk_type\n %{35} =w ceql %{36}.ht, 2\n jmp @{37}.done\n@{38}.yes\n %{39} =w copy 1\n jmp @{40}.done\n@{41}.no\n %{42} =w copy 0\n@{43}.done\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.sl =l sar {1}, 1\n %{2} =w copy %{3}.sl\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.sl =l shr {1}, 5\n %{2} =w and %{3}.sl, 1\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0} =l and {1}, -8\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"get",
3,
45,
1,
1,
1
],
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0}.sign =l shr {1}, 63\n %{2}.sexp =l shr {3}, 55\n %{4}.sexp =l and %{5}.sexp, 255\n %{6}.mant =l shr {7}, 3\n %{8}.mant =l and %{9}.mant, {10}\n %{11}.dexp =l sub %{12}.sexp, 127\n %{13}.dexp =l add %{14}.dexp, 1023\n %{15}.s63 =l shl %{16}.sign, 63\n %{17}.e52 =l shl %{18}.dexp, 52\n %{19}.bits =l or %{20}.s63, %{21}.e52\n %{22}.bits =l or %{23}.bits, %{24}.mant\n %{25} =d cast %{26}.bits\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"get",
3,
45,
1,
1,
1
],
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0}.tag =l and {1}, 1\n %{2}.is_int =w ceql %{3}.tag, 0\n jnz %{4}.is_int, @{5}.from_int, @{6}.from_float\n@{7}.from_int\n %{8}.isl =l sar {9}, 1\n %{10}.iw =w copy %{11}.isl\n %{12} =d swtof %{13}.iw\n jmp @{14}.done\n@{15}.from_float\n %{16}.fsexp =l shr {17}, 55\n %{18}.fsexp =l and %{19}.fsexp, 255\n %{20}.is_zero =w ceql %{21}.fsexp, 0\n jnz %{22}.is_zero, @{23}.fzero, @{24}.fdecode\n@{25}.fzero\n %{26} =d copy d_0.0\n jmp @{27}.done\n@{28}.fdecode\n %{29}.fsign =l shr {30}, 63\n %{31}.fmant =l shr {32}, 3\n %{33}.fmant =l and %{34}.fmant, {35}\n %{36}.fdexp =l sub %{37}.fsexp, 127\n %{38}.fdexp =l add %{39}.fdexp, 1023\n %{40}.fs63 =l shl %{41}.fsign, 63\n %{42}.fe52 =l shl %{43}.fdexp, 52\n %{44}.fbits =l or %{45}.fs63, %{46}.fe52\n %{47}.fbits =l or %{48}.fbits, %{49}.fmant\n %{50} =d cast %{51}.fbits\n@{52}.done\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.ext =l extuw {1}\n %{2} =l shl %{3}.ext, 1\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 10,
"nr_close_slots": 0,
"instructions": [
[
"array",
3,
0,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
2,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"push",
3,
1,
1,
1
],
[
"access",
4,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
5,
" %{0}.ext =l extuw {1}\n %{2}.sh =l shl %{3}.ext, 5\n %{4} =l or %{5}.sh, 3\n",
1,
1
],
[
"frame",
7,
4,
2,
1,
1
],
[
"null",
8,
1,
1
],
[
"setarg",
7,
0,
8,
1,
1
],
[
"setarg",
7,
1,
5,
1,
1
],
[
"setarg",
7,
2,
3,
1,
1
],
[
"invoke",
7,
6,
1,
1
],
[
"return",
6,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 2
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0} =l call $__JS_NewFloat64(l {1}, d {2})\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 14,
"nr_close_slots": 0,
"instructions": [
[
"get",
5,
11,
1,
1,
1
],
[
"get",
6,
20,
1,
1,
1
],
[
"array",
7,
0,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
6,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"access",
8,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
9,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.not_both_int, @{10}.int_path\n@{11}.int_path\n %{12}.ia =l sar {13}, 1\n %{14}.ib =l sar {15}, 1\n %{16}.sum =l add %{17}.ia, %{18}.ib\n %{19}.lo =w csltl %{20}.sum, {21}\n %{22}.hi =w csgtl %{23}.sum, {24}\n %{25}.ov =w or %{26}.lo, %{27}.hi\n jnz %{28}.ov, @{29}.int_overflow, @{30}.int_ok\n@{31}.int_ok\n %{32}.rw =w copy %{33}.sum\n %{34}.rext =l extuw %{35}.rw\n %{36} =l shl %{37}.rext, 1\n jmp @{38}.done\n@{39}.int_overflow\n %{40}.fd =d sltof %{41}.sum\n %{42} =l call $__JS_NewFloat64(l {43}, d %{44}.fd)\n jmp @{45}.done\n@{46}.not_both_int\n %{47}.a_is_text =w call $JS_IsText(l {48})\n %{49}.b_is_text =w call $JS_IsText(l {50})\n %{51}.both_text =w and %{52}.a_is_text, %{53}.b_is_text\n jnz %{54}.both_text, @{55}.text_path, @{56}.chk_num\n@{57}.text_path\n %{58} =l call $JS_ConcatString(l {59}, l {60}, l {61})\n jmp @{62}.done\n@{63}.chk_num\n %{64}.a_is_num =w call $JS_IsNumber(l {65})\n %{66}.b_is_num =w call $JS_IsNumber(l {67})\n %{68}.both_num =w and %{69}.a_is_num, %{70}.b_is_num\n jnz %{71}.both_num, @{72}.float_path, @disrupt\n@{73}.float_path\n %{74} =l call $qbe_float_add(l {75}, l {76}, l {77})\n@{78}.done\n",
1,
1
],
[
"frame",
11,
8,
2,
1,
1
],
[
"null",
12,
1,
1
],
[
"setarg",
11,
0,
12,
1,
1
],
[
"setarg",
11,
1,
9,
1,
1
],
[
"setarg",
11,
2,
7,
1,
1
],
[
"invoke",
11,
10,
1,
1
],
[
"return",
10,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 14,
"nr_close_slots": 0,
"instructions": [
[
"get",
5,
11,
1,
1,
1
],
[
"get",
6,
20,
1,
1,
1
],
[
"array",
7,
0,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
6,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"access",
8,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
9,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.not_both_int, @{10}.int_path\n@{11}.int_path\n %{12}.ia =l sar {13}, 1\n %{14}.ib =l sar {15}, 1\n %{16}.diff =l sub %{17}.ia, %{18}.ib\n %{19}.lo =w csltl %{20}.diff, {21}\n %{22}.hi =w csgtl %{23}.diff, {24}\n %{25}.ov =w or %{26}.lo, %{27}.hi\n jnz %{28}.ov, @{29}.int_overflow, @{30}.int_ok\n@{31}.int_ok\n %{32}.rw =w copy %{33}.diff\n %{34}.rext =l extuw %{35}.rw\n %{36} =l shl %{37}.rext, 1\n jmp @{38}.done\n@{39}.int_overflow\n %{40}.fd =d sltof %{41}.diff\n %{42} =l call $__JS_NewFloat64(l {43}, d %{44}.fd)\n jmp @{45}.done\n@{46}.not_both_int\n %{47}.a_is_num =w call $JS_IsNumber(l {48})\n %{49}.b_is_num =w call $JS_IsNumber(l {50})\n %{51}.both_num =w and %{52}.a_is_num, %{53}.b_is_num\n jnz %{54}.both_num, @{55}.float_path, @disrupt\n@{56}.float_path\n %{57} =l call $qbe_float_sub(l {58}, l {59}, l {60})\n@{61}.done\n",
1,
1
],
[
"frame",
11,
8,
2,
1,
1
],
[
"null",
12,
1,
1
],
[
"setarg",
11,
0,
12,
1,
1
],
[
"setarg",
11,
1,
9,
1,
1
],
[
"setarg",
11,
2,
7,
1,
1
],
[
"invoke",
11,
10,
1,
1
],
[
"return",
10,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 14,
"nr_close_slots": 0,
"instructions": [
[
"get",
5,
11,
1,
1,
1
],
[
"get",
6,
20,
1,
1,
1
],
[
"array",
7,
0,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
6,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"access",
8,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
9,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.not_both_int, @{10}.int_path\n@{11}.int_path\n %{12}.ia =l sar {13}, 1\n %{14}.ib =l sar {15}, 1\n %{16}.prod =l mul %{17}.ia, %{18}.ib\n %{19}.lo =w csltl %{20}.prod, {21}\n %{22}.hi =w csgtl %{23}.prod, {24}\n %{25}.ov =w or %{26}.lo, %{27}.hi\n jnz %{28}.ov, @{29}.int_overflow, @{30}.int_ok\n@{31}.int_ok\n %{32}.rw =w copy %{33}.prod\n %{34}.rext =l extuw %{35}.rw\n %{36} =l shl %{37}.rext, 1\n jmp @{38}.done\n@{39}.int_overflow\n %{40}.fd =d sltof %{41}.prod\n %{42} =l call $__JS_NewFloat64(l {43}, d %{44}.fd)\n jmp @{45}.done\n@{46}.not_both_int\n %{47}.a_is_num =w call $JS_IsNumber(l {48})\n %{49}.b_is_num =w call $JS_IsNumber(l {50})\n %{51}.both_num =w and %{52}.a_is_num, %{53}.b_is_num\n jnz %{54}.both_num, @{55}.float_path, @disrupt\n@{56}.float_path\n %{57} =l call $qbe_float_mul(l {58}, l {59}, l {60})\n@{61}.done\n",
1,
1
],
[
"frame",
11,
8,
2,
1,
1
],
[
"null",
12,
1,
1
],
[
"setarg",
11,
0,
12,
1,
1
],
[
"setarg",
11,
1,
9,
1,
1
],
[
"setarg",
11,
2,
7,
1,
1
],
[
"invoke",
11,
10,
1,
1
],
[
"return",
10,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 13,
"nr_close_slots": 0,
"instructions": [
[
"get",
5,
10,
1,
1,
1
],
[
"array",
6,
0,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
5,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
2,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
2,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"access",
7,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
8,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.not_both_int, @{10}.int_path\n@{11}.int_path\n %{12}.ia =w copy 0\n %{13}.tmp =l sar {14}, 1\n %{15}.ia =w copy %{16}.tmp\n %{17}.ib =w copy 0\n %{18}.tmp2 =l sar {19}, 1\n %{20}.ib =w copy %{21}.tmp2\n %{22}.div0 =w ceqw %{23}.ib, 0\n jnz %{24}.div0, @{25}.ret_null, @{26}.chk_exact\n@{27}.ret_null\n %{28} =l copy {29}\n jmp @{30}.done\n@{31}.chk_exact\n %{32}.rem =w rem %{33}.ia, %{34}.ib\n %{35}.exact =w ceqw %{36}.rem, 0\n jnz %{37}.exact, @{38}.int_div, @{39}.int_to_float\n@{40}.int_div\n %{41}.q =w div %{42}.ia, %{43}.ib\n %{44}.qext =l extuw %{45}.q\n %{46} =l shl %{47}.qext, 1\n jmp @{48}.done\n@{49}.int_to_float\n %{50}.da =d swtof %{51}.ia\n %{52}.db =d swtof %{53}.ib\n %{54}.dr =d div %{55}.da, %{56}.db\n %{57} =l call $__JS_NewFloat64(l {58}, d %{59}.dr)\n jmp @{60}.done\n@{61}.not_both_int\n %{62}.a_is_num =w call $JS_IsNumber(l {63})\n %{64}.b_is_num =w call $JS_IsNumber(l {65})\n %{66}.both_num =w and %{67}.a_is_num, %{68}.b_is_num\n jnz %{69}.both_num, @{70}.float_path, @disrupt\n@{71}.float_path\n %{72} =l call $qbe_float_div(l {73}, l {74}, l {75})\n@{76}.done\n",
1,
1
],
[
"frame",
10,
7,
2,
1,
1
],
[
"null",
11,
1,
1
],
[
"setarg",
10,
0,
11,
1,
1
],
[
"setarg",
10,
1,
8,
1,
1
],
[
"setarg",
10,
2,
6,
1,
1
],
[
"invoke",
10,
9,
1,
1
],
[
"return",
9,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 13,
"nr_close_slots": 0,
"instructions": [
[
"get",
5,
10,
1,
1,
1
],
[
"array",
6,
0,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
5,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"push",
6,
2,
1,
1
],
[
"push",
6,
3,
1,
1
],
[
"push",
6,
4,
1,
1
],
[
"push",
6,
1,
1,
1
],
[
"access",
7,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
8,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.not_both_int, @{10}.int_path\n@{11}.int_path\n %{12}.ia =w copy 0\n %{13}.tmp =l sar {14}, 1\n %{15}.ia =w copy %{16}.tmp\n %{17}.ib =w copy 0\n %{18}.tmp2 =l sar {19}, 1\n %{20}.ib =w copy %{21}.tmp2\n %{22}.div0 =w ceqw %{23}.ib, 0\n jnz %{24}.div0, @{25}.ret_null, @{26}.do_mod\n@{27}.ret_null\n %{28} =l copy {29}\n jmp @{30}.done\n@{31}.do_mod\n %{32}.r =w rem %{33}.ia, %{34}.ib\n %{35}.rext =l extuw %{36}.r\n %{37} =l shl %{38}.rext, 1\n jmp @{39}.done\n@{40}.not_both_int\n %{41}.a_is_num =w call $JS_IsNumber(l {42})\n %{43}.b_is_num =w call $JS_IsNumber(l {44})\n %{45}.both_num =w and %{46}.a_is_num, %{47}.b_is_num\n jnz %{48}.both_num, @{49}.float_path, @disrupt\n@{50}.float_path\n %{51} =l call $qbe_float_mod(l {52}, l {53}, l {54})\n@{55}.done\n",
1,
1
],
[
"frame",
10,
7,
2,
1,
1
],
[
"null",
11,
1,
1
],
[
"setarg",
10,
0,
11,
1,
1
],
[
"setarg",
10,
1,
8,
1,
1
],
[
"setarg",
10,
2,
6,
1,
1
],
[
"invoke",
10,
9,
1,
1
],
[
"return",
9,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 35,
"nr_close_slots": 0,
"instructions": [
[
"get",
10,
23,
1,
408,
20
],
[
"load_field",
11,
10,
"int_cmp_op",
408,
20
],
[
"move",
8,
11,
408,
20
],
[
"get",
12,
23,
1,
409,
25
],
[
"load_field",
13,
12,
"float_id",
409,
25
],
[
"move",
7,
13,
409,
25
],
[
"access",
9,
0,
410,
17
],
[
"get",
14,
47,
1,
411,
22
],
[
"move",
5,
14,
411,
22
],
[
"get",
15,
47,
1,
412,
18
],
[
"move",
6,
15,
412,
18
],
[
"get",
16,
23,
1,
413,
7
],
[
"load_field",
17,
16,
"is_eq",
413,
7
],
[
"move",
18,
17,
413,
7
],
[
"jump_true",
18,
"or_end_2",
413,
7
],
[
"get",
19,
23,
1,
413,
24
],
[
"load_field",
20,
19,
"is_ne",
413,
24
],
[
"move",
18,
20,
413,
24
],
"or_end_2",
[
"jump_false",
18,
"if_else_0",
413,
24
],
[
"access",
21,
1,
414,
15
],
[
"move",
9,
21,
414,
15
],
[
"jump",
"if_end_1",
414,
15
],
"if_else_0",
"if_end_1",
[
"get",
22,
23,
1,
416,
7
],
[
"load_field",
23,
22,
"is_ne",
416,
7
],
[
"jump_false",
23,
"if_else_3",
416,
7
],
[
"get",
24,
65,
1,
417,
20
],
[
"move",
5,
24,
417,
20
],
[
"jump",
"if_end_4",
417,
20
],
"if_else_3",
"if_end_4",
[
"get",
25,
23,
1,
419,
7
],
[
"load_field",
26,
25,
"null_true",
419,
7
],
[
"jump_false",
26,
"if_else_5",
419,
7
],
[
"get",
27,
65,
1,
420,
16
],
[
"move",
6,
27,
420,
16
],
[
"jump",
"if_end_6",
420,
16
],
"if_else_5",
"if_end_6",
[
"array",
28,
0,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
8,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
6,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
8,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
2,
1,
1
],
[
"push",
28,
7,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
2,
1,
1
],
[
"push",
28,
3,
1,
1
],
[
"push",
28,
4,
1,
1
],
[
"push",
28,
9,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
8,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"push",
28,
5,
1,
1
],
[
"push",
28,
1,
1,
1
],
[
"access",
29,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
30,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.not_both_int, @{10}.int_path\n@{11}.int_path\n %{12}.ia =l sar {13}, 1\n %{14}.ib =l sar {15}, 1\n %{16}.iw =w copy %{17}.ia\n %{18}.ibw =w copy %{19}.ib\n %{20}.cr =w {21} %{22}.iw, %{23}.ibw\n %{24}.crext =l extuw %{25}.cr\n %{26}.sh =l shl %{27}.crext, 5\n %{28} =l or %{29}.sh, 3\n jmp @{30}.done\n@{31}.not_both_int\n %{32}.a_tag5 =l and {33}, 31\n %{34}.b_tag5 =l and {35}, 31\n %{36}.a_is_null =w ceql %{37}.a_tag5, 7\n %{38}.b_is_null =w ceql %{39}.b_tag5, 7\n %{40}.both_null =w and %{41}.a_is_null, %{42}.b_is_null\n jnz %{43}.both_null, @{44}.null_path, @{45}.chk_bool\n@{46}.null_path\n %{47} =l copy {48}\n jmp @{49}.done\n@{50}.chk_bool\n %{51}.a_is_bool =w ceql %{52}.a_tag5, 3\n %{53}.b_is_bool =w ceql %{54}.b_tag5, 3\n %{55}.both_bool =w and %{56}.a_is_bool, %{57}.b_is_bool\n jnz %{58}.both_bool, @{59}.bool_path, @{60}.chk_num\n@{61}.bool_path\n %{62}.ba =l shr {63}, 5\n %{64}.baw =w and %{65}.ba, 1\n %{66}.bb =l shr {67}, 5\n %{68}.bbw =w and %{69}.bb, 1\n %{70}.bcr =w {71} %{72}.baw, %{73}.bbw\n %{74}.bcrext =l extuw %{75}.bcr\n %{76}.bsh =l shl %{77}.bcrext, 5\n %{78} =l or %{79}.bsh, 3\n jmp @{80}.done\n@{81}.chk_num\n %{82}.a_is_num =w call $JS_IsNumber(l {83})\n %{84}.b_is_num =w call $JS_IsNumber(l {85})\n %{86}.both_num =w and %{87}.a_is_num, %{88}.b_is_num\n jnz %{89}.both_num, @{90}.num_path, @{91}.chk_text\n@{92}.num_path\n %{93}.fcr =w call $qbe_float_cmp(l {94}, w {95}, l {96}, l {97})\n %{98}.fcrext =l extuw %{99}.fcr\n %{100}.fsh =l shl %{101}.fcrext, 5\n %{102} =l or %{103}.fsh, 3\n jmp @{104}.done\n@{105}.chk_text\n %{106}.a_is_text =w call $JS_IsText(l {107})\n %{108}.b_is_text =w call $JS_IsText(l {109})\n %{110}.both_text =w and %{111}.a_is_text, %{112}.b_is_text\n jnz %{113}.both_text, @{114}.text_path, @{115}.mismatch\n@{116}.text_path\n %{117}.scmp =w call $js_string_compare_value(l {118}, l {119}, l {120}, w {121})\n %{122}.tcr =w {123} %{124}.scmp, 0\n %{125}.tcrext =l extuw %{126}.tcr\n %{127}.tsh =l shl %{128}.tcrext, 5\n %{129} =l or %{130}.tsh, 3\n jmp @{131}.done\n@{132}.mismatch\n %{133} =l copy {134}\n@{135}.done\n",
1,
1
],
[
"frame",
32,
29,
2,
1,
1
],
[
"null",
33,
1,
1
],
[
"setarg",
32,
0,
33,
1,
1
],
[
"setarg",
32,
1,
30,
1,
1
],
[
"setarg",
32,
2,
28,
1,
1
],
[
"invoke",
32,
31,
1,
1
],
[
"return",
31,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 16,
"nr_close_slots": 0,
"instructions": [
[
"record",
5,
5
],
[
"access",
6,
"ceqw",
495,
26
],
[
"store_field",
5,
6,
"int_cmp_op",
495,
26
],
[
"access",
7,
0,
495,
44
],
[
"store_field",
5,
7,
"float_id",
495,
44
],
[
"true",
8,
495,
54
],
[
"store_field",
5,
8,
"is_eq",
495,
54
],
[
"false",
9,
495,
67
],
[
"store_field",
5,
9,
"is_ne",
495,
67
],
[
"true",
10,
495,
85
],
[
"store_field",
5,
10,
"null_true",
495,
85
],
[
"put",
5,
23,
1,
495,
85
],
[
"get",
12,
33,
1,
496,
10
],
[
"frame",
13,
12,
4,
496,
10
],
[
"null",
14,
496,
10
],
[
"setarg",
13,
0,
14,
496,
10
],
[
"setarg",
13,
1,
1,
496,
10
],
[
"setarg",
13,
2,
2,
496,
10
],
[
"setarg",
13,
3,
3,
496,
10
],
[
"setarg",
13,
4,
4,
496,
10
],
[
"tail_invoke",
13,
11,
496,
10
],
[
"return",
11,
496,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 16,
"nr_close_slots": 0,
"instructions": [
[
"record",
5,
5
],
[
"access",
6,
"cnew",
500,
26
],
[
"store_field",
5,
6,
"int_cmp_op",
500,
26
],
[
"access",
7,
1,
500,
44
],
[
"store_field",
5,
7,
"float_id",
500,
44
],
[
"false",
8,
500,
54
],
[
"store_field",
5,
8,
"is_eq",
500,
54
],
[
"true",
9,
500,
68
],
[
"store_field",
5,
9,
"is_ne",
500,
68
],
[
"false",
10,
500,
85
],
[
"store_field",
5,
10,
"null_true",
500,
85
],
[
"put",
5,
23,
1,
500,
85
],
[
"get",
12,
33,
1,
501,
10
],
[
"frame",
13,
12,
4,
501,
10
],
[
"null",
14,
501,
10
],
[
"setarg",
13,
0,
14,
501,
10
],
[
"setarg",
13,
1,
1,
501,
10
],
[
"setarg",
13,
2,
2,
501,
10
],
[
"setarg",
13,
3,
3,
501,
10
],
[
"setarg",
13,
4,
4,
501,
10
],
[
"tail_invoke",
13,
11,
501,
10
],
[
"return",
11,
501,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 16,
"nr_close_slots": 0,
"instructions": [
[
"record",
5,
5
],
[
"access",
6,
"csltw",
505,
26
],
[
"store_field",
5,
6,
"int_cmp_op",
505,
26
],
[
"access",
7,
2,
505,
45
],
[
"store_field",
5,
7,
"float_id",
505,
45
],
[
"false",
8,
505,
55
],
[
"store_field",
5,
8,
"is_eq",
505,
55
],
[
"false",
9,
505,
69
],
[
"store_field",
5,
9,
"is_ne",
505,
69
],
[
"false",
10,
505,
87
],
[
"store_field",
5,
10,
"null_true",
505,
87
],
[
"put",
5,
23,
1,
505,
87
],
[
"get",
12,
33,
1,
506,
10
],
[
"frame",
13,
12,
4,
506,
10
],
[
"null",
14,
506,
10
],
[
"setarg",
13,
0,
14,
506,
10
],
[
"setarg",
13,
1,
1,
506,
10
],
[
"setarg",
13,
2,
2,
506,
10
],
[
"setarg",
13,
3,
3,
506,
10
],
[
"setarg",
13,
4,
4,
506,
10
],
[
"tail_invoke",
13,
11,
506,
10
],
[
"return",
11,
506,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 16,
"nr_close_slots": 0,
"instructions": [
[
"record",
5,
5
],
[
"access",
6,
"cslew",
510,
26
],
[
"store_field",
5,
6,
"int_cmp_op",
510,
26
],
[
"access",
7,
3,
510,
45
],
[
"store_field",
5,
7,
"float_id",
510,
45
],
[
"false",
8,
510,
55
],
[
"store_field",
5,
8,
"is_eq",
510,
55
],
[
"false",
9,
510,
69
],
[
"store_field",
5,
9,
"is_ne",
510,
69
],
[
"true",
10,
510,
87
],
[
"store_field",
5,
10,
"null_true",
510,
87
],
[
"put",
5,
23,
1,
510,
87
],
[
"get",
12,
33,
1,
511,
10
],
[
"frame",
13,
12,
4,
511,
10
],
[
"null",
14,
511,
10
],
[
"setarg",
13,
0,
14,
511,
10
],
[
"setarg",
13,
1,
1,
511,
10
],
[
"setarg",
13,
2,
2,
511,
10
],
[
"setarg",
13,
3,
3,
511,
10
],
[
"setarg",
13,
4,
4,
511,
10
],
[
"tail_invoke",
13,
11,
511,
10
],
[
"return",
11,
511,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 16,
"nr_close_slots": 0,
"instructions": [
[
"record",
5,
5
],
[
"access",
6,
"csgtw",
515,
26
],
[
"store_field",
5,
6,
"int_cmp_op",
515,
26
],
[
"access",
7,
4,
515,
45
],
[
"store_field",
5,
7,
"float_id",
515,
45
],
[
"false",
8,
515,
55
],
[
"store_field",
5,
8,
"is_eq",
515,
55
],
[
"false",
9,
515,
69
],
[
"store_field",
5,
9,
"is_ne",
515,
69
],
[
"false",
10,
515,
87
],
[
"store_field",
5,
10,
"null_true",
515,
87
],
[
"put",
5,
23,
1,
515,
87
],
[
"get",
12,
33,
1,
516,
10
],
[
"frame",
13,
12,
4,
516,
10
],
[
"null",
14,
516,
10
],
[
"setarg",
13,
0,
14,
516,
10
],
[
"setarg",
13,
1,
1,
516,
10
],
[
"setarg",
13,
2,
2,
516,
10
],
[
"setarg",
13,
3,
3,
516,
10
],
[
"setarg",
13,
4,
4,
516,
10
],
[
"tail_invoke",
13,
11,
516,
10
],
[
"return",
11,
516,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"record",
5,
5
],
[
"access",
6,
"csgew",
520,
26
],
[
"store_field",
5,
6,
"int_cmp_op",
520,
26
],
[
"access",
7,
5,
520,
45
],
[
"store_field",
5,
7,
"float_id",
520,
45
],
[
"false",
8,
520,
55
],
[
"store_field",
5,
8,
"is_eq",
520,
55
],
[
"false",
9,
520,
69
],
[
"store_field",
5,
9,
"is_ne",
520,
69
],
[
"true",
10,
520,
87
],
[
"store_field",
5,
10,
"null_true",
520,
87
],
[
"put",
5,
23,
1,
520,
87
],
[
"null",
11,
520,
87
],
[
"return",
11,
520,
87
]
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"get",
4,
11,
1,
1,
1
],
[
"array",
5,
0,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
4,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"access",
6,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
7,
"@{0}.start\n %{1}.tag =l and {2}, 1\n %{3}.is_int =w ceql %{4}.tag, 0\n jnz %{5}.is_int, @{6}.int_path, @{7}.float_path\n@{8}.int_path\n %{9}.sl =l sar {10}, 1\n %{11}.iw =w copy %{12}.sl\n %{13}.is_min =w ceqw %{14}.iw, {15}\n jnz %{16}.is_min, @{17}.min_overflow, @{18}.int_ok\n@{19}.min_overflow\n %{20}.fd =d swtof %{21}.iw\n %{22}.fdn =d neg %{23}.fd\n %{24} =l call $__JS_NewFloat64(l {25}, d %{26}.fdn)\n jmp @{27}.done\n@{28}.int_ok\n %{29}.ni =w sub 0, %{30}.iw\n %{31}.niext =l extuw %{32}.ni\n %{33} =l shl %{34}.niext, 1\n jmp @{35}.done\n@{36}.float_path\n %{37} =l call $qbe_float_neg(l {38}, l {39})\n@{40}.done\n",
1,
1
],
[
"frame",
9,
6,
2,
1,
1
],
[
"null",
10,
1,
1
],
[
"setarg",
9,
0,
10,
1,
1
],
[
"setarg",
9,
1,
7,
1,
1
],
[
"setarg",
9,
2,
5,
1,
1
],
[
"invoke",
9,
8,
1,
1
],
[
"return",
8,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"get",
4,
20,
1,
1,
1
],
[
"array",
5,
0,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
4,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"access",
6,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
7,
"@{0}.start\n %{1}.tag =l and {2}, 1\n %{3}.is_int =w ceql %{4}.tag, 0\n jnz %{5}.is_int, @{6}.int_path, @{7}.float_path\n@{8}.int_path\n %{9}.sl =l sar {10}, 1\n %{11}.iw =w copy %{12}.sl\n %{13}.is_max =w ceqw %{14}.iw, {15}\n jnz %{16}.is_max, @{17}.max_overflow, @{18}.int_ok\n@{19}.max_overflow\n %{20}.fd =d swtof %{21}.iw\n %{22}.fd1 =d add %{23}.fd, d_1.0\n %{24} =l call $__JS_NewFloat64(l {25}, d %{26}.fd1)\n jmp @{27}.done\n@{28}.int_ok\n %{29}.ni =w add %{30}.iw, 1\n %{31}.niext =l extuw %{32}.ni\n %{33} =l shl %{34}.niext, 1\n jmp @{35}.done\n@{36}.float_path\n %{37} =l call $qbe_float_inc(l {38}, l {39})\n@{40}.done\n",
1,
1
],
[
"frame",
9,
6,
2,
1,
1
],
[
"null",
10,
1,
1
],
[
"setarg",
9,
0,
10,
1,
1
],
[
"setarg",
9,
1,
7,
1,
1
],
[
"setarg",
9,
2,
5,
1,
1
],
[
"invoke",
9,
8,
1,
1
],
[
"return",
8,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"get",
4,
11,
1,
1,
1
],
[
"array",
5,
0,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
4,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"access",
6,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
7,
"@{0}.start\n %{1}.tag =l and {2}, 1\n %{3}.is_int =w ceql %{4}.tag, 0\n jnz %{5}.is_int, @{6}.int_path, @{7}.float_path\n@{8}.int_path\n %{9}.sl =l sar {10}, 1\n %{11}.iw =w copy %{12}.sl\n %{13}.is_min =w ceqw %{14}.iw, {15}\n jnz %{16}.is_min, @{17}.min_overflow, @{18}.int_ok\n@{19}.min_overflow\n %{20}.fd =d swtof %{21}.iw\n %{22}.fd1 =d sub %{23}.fd, d_1.0\n %{24} =l call $__JS_NewFloat64(l {25}, d %{26}.fd1)\n jmp @{27}.done\n@{28}.int_ok\n %{29}.ni =w sub %{30}.iw, 1\n %{31}.niext =l extuw %{32}.ni\n %{33} =l shl %{34}.niext, 1\n jmp @{35}.done\n@{36}.float_path\n %{37} =l call $qbe_float_dec(l {38}, l {39})\n@{40}.done\n",
1,
1
],
[
"frame",
9,
6,
2,
1,
1
],
[
"null",
10,
1,
1
],
[
"setarg",
9,
0,
10,
1,
1
],
[
"setarg",
9,
1,
7,
1,
1
],
[
"setarg",
9,
2,
5,
1,
1
],
[
"invoke",
9,
8,
1,
1
],
[
"return",
8,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0}.bval =w call $JS_ToBool(l {1}, l {2})\n %{3}.neg =w ceqw %{4}.bval, 0\n %{5}.nex =l extuw %{6}.neg\n %{7}.sh =l shl %{8}.nex, 5\n %{9} =l or %{10}.sh, 3\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
"@{0}.start\n %{1}.tag =l and {2}, 1\n %{3}.is_int =w ceql %{4}.tag, 0\n jnz %{5}.is_int, @{6}.int_path, @{7}.slow_path\n@{8}.int_path\n %{9}.sl =l sar {10}, 1\n %{11}.iw =w copy %{12}.sl\n %{13}.nw =w xor %{14}.iw, -1\n %{15}.nex =l extuw %{16}.nw\n %{17} =l shl %{18}.nex, 1\n jmp @{19}.done\n@{20}.slow_path\n %{21} =l call $qbe_bnot(l {22}, l {23})\n@{24}.done\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 14,
"nr_close_slots": 0,
"instructions": [
[
"get",
6,
50,
1,
644,
16
],
[
"move",
5,
6,
644,
16
],
[
"array",
7,
0,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"access",
8,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
9,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.slow_path, @{10}.int_path\n@{11}.int_path\n %{12}.ia =l sar {13}, 1\n %{14}.iaw =w copy %{15}.ia\n %{16}.ib =l sar {17}, 1\n %{18}.ibw =w copy %{19}.ib\n %{20}.rw =w {21} %{22}.iaw, %{23}.ibw\n %{24}.rext =l extuw %{25}.rw\n %{26} =l shl %{27}.rext, 1\n jmp @{28}.done\n@{29}.slow_path\n %{30}.a_is_num =w call $JS_IsNumber(l {31})\n %{32}.b_is_num =w call $JS_IsNumber(l {33})\n %{34}.both_num =w and %{35}.a_is_num, %{36}.b_is_num\n jnz %{37}.both_num, @{38}.float_to_int, @disrupt\n@{39}.float_to_int\n %{40} =l call $qbe_bitwise_{41}(l {42}, l {43}, l {44})\n@{45}.done\n",
1,
1
],
[
"frame",
11,
8,
2,
1,
1
],
[
"null",
12,
1,
1
],
[
"setarg",
11,
0,
12,
1,
1
],
[
"setarg",
11,
1,
9,
1,
1
],
[
"setarg",
11,
2,
7,
1,
1
],
[
"invoke",
11,
10,
1,
1
],
[
"return",
10,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"and",
671,
10
],
[
"put",
5,
50,
1,
671,
10
],
[
"get",
7,
6,
1,
672,
10
],
[
"frame",
8,
7,
4,
672,
10
],
[
"null",
9,
672,
10
],
[
"setarg",
8,
0,
9,
672,
10
],
[
"setarg",
8,
1,
1,
672,
10
],
[
"setarg",
8,
2,
2,
672,
10
],
[
"setarg",
8,
3,
3,
672,
10
],
[
"setarg",
8,
4,
4,
672,
10
],
[
"tail_invoke",
8,
6,
672,
10
],
[
"return",
6,
672,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"or",
676,
10
],
[
"put",
5,
50,
1,
676,
10
],
[
"get",
7,
6,
1,
677,
10
],
[
"frame",
8,
7,
4,
677,
10
],
[
"null",
9,
677,
10
],
[
"setarg",
8,
0,
9,
677,
10
],
[
"setarg",
8,
1,
1,
677,
10
],
[
"setarg",
8,
2,
2,
677,
10
],
[
"setarg",
8,
3,
3,
677,
10
],
[
"setarg",
8,
4,
4,
677,
10
],
[
"tail_invoke",
8,
6,
677,
10
],
[
"return",
6,
677,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"xor",
681,
10
],
[
"put",
5,
50,
1,
681,
10
],
[
"get",
7,
6,
1,
682,
10
],
[
"frame",
8,
7,
4,
682,
10
],
[
"null",
9,
682,
10
],
[
"setarg",
8,
0,
9,
682,
10
],
[
"setarg",
8,
1,
1,
682,
10
],
[
"setarg",
8,
2,
2,
682,
10
],
[
"setarg",
8,
3,
3,
682,
10
],
[
"setarg",
8,
4,
4,
682,
10
],
[
"tail_invoke",
8,
6,
682,
10
],
[
"return",
6,
682,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 14,
"nr_close_slots": 0,
"instructions": [
[
"get",
6,
50,
1,
688,
16
],
[
"move",
5,
6,
688,
16
],
[
"array",
7,
0,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"access",
8,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
9,
"@{0}.start\n %{1}.at =l and {2}, 1\n %{3}.bt =l and {4}, 1\n %{5}.not_int =l or %{6}.at, %{7}.bt\n jnz %{8}.not_int, @{9}.slow_path, @{10}.int_path\n@{11}.int_path\n %{12}.ia =l sar {13}, 1\n %{14}.iaw =w copy %{15}.ia\n %{16}.ib =l sar {17}, 1\n %{18}.ibw =w copy %{19}.ib\n %{20}.sh =w and %{21}.ibw, 31\n %{22}.rw =w {23} %{24}.iaw, %{25}.sh\n %{26}.rext =l extuw %{27}.rw\n %{28} =l shl %{29}.rext, 1\n jmp @{30}.done\n@{31}.slow_path\n %{32}.a_is_num =w call $JS_IsNumber(l {33})\n %{34}.b_is_num =w call $JS_IsNumber(l {35})\n %{36}.both_num =w and %{37}.a_is_num, %{38}.b_is_num\n jnz %{39}.both_num, @{40}.float_to_int, @disrupt\n@{41}.float_to_int\n %{42} =l call $qbe_shift_{43}(l {44}, l {45}, l {46})\n@{47}.done\n",
1,
1
],
[
"frame",
11,
8,
2,
1,
1
],
[
"null",
12,
1,
1
],
[
"setarg",
11,
0,
12,
1,
1
],
[
"setarg",
11,
1,
9,
1,
1
],
[
"setarg",
11,
2,
7,
1,
1
],
[
"invoke",
11,
10,
1,
1
],
[
"return",
10,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"shl",
716,
10
],
[
"put",
5,
50,
1,
716,
10
],
[
"get",
7,
38,
1,
717,
10
],
[
"frame",
8,
7,
4,
717,
10
],
[
"null",
9,
717,
10
],
[
"setarg",
8,
0,
9,
717,
10
],
[
"setarg",
8,
1,
1,
717,
10
],
[
"setarg",
8,
2,
2,
717,
10
],
[
"setarg",
8,
3,
3,
717,
10
],
[
"setarg",
8,
4,
4,
717,
10
],
[
"tail_invoke",
8,
6,
717,
10
],
[
"return",
6,
717,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"sar",
721,
10
],
[
"put",
5,
50,
1,
721,
10
],
[
"get",
7,
38,
1,
722,
10
],
[
"frame",
8,
7,
4,
722,
10
],
[
"null",
9,
722,
10
],
[
"setarg",
8,
0,
9,
722,
10
],
[
"setarg",
8,
1,
1,
722,
10
],
[
"setarg",
8,
2,
2,
722,
10
],
[
"setarg",
8,
3,
3,
722,
10
],
[
"setarg",
8,
4,
4,
722,
10
],
[
"tail_invoke",
8,
6,
722,
10
],
[
"return",
6,
722,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"shr",
726,
10
],
[
"put",
5,
50,
1,
726,
10
],
[
"get",
7,
38,
1,
727,
10
],
[
"frame",
8,
7,
4,
727,
10
],
[
"null",
9,
727,
10
],
[
"setarg",
8,
0,
9,
727,
10
],
[
"setarg",
8,
1,
1,
727,
10
],
[
"setarg",
8,
2,
2,
727,
10
],
[
"setarg",
8,
3,
3,
727,
10
],
[
"setarg",
8,
4,
4,
727,
10
],
[
"tail_invoke",
8,
6,
727,
10
],
[
"return",
6,
727,
10
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"array",
5,
0,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
4,
1,
1
],
[
"access",
6,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
7,
" %{0} =l call $JS_ConcatString(l {1}, l {2}, l {3})\n",
1,
1
],
[
"frame",
9,
6,
2,
1,
1
],
[
"null",
10,
1,
1
],
[
"setarg",
9,
0,
10,
1,
1
],
[
"setarg",
9,
1,
7,
1,
1
],
[
"setarg",
9,
2,
5,
1,
1
],
[
"invoke",
9,
8,
1,
1
],
[
"return",
8,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"array",
5,
0,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
2,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
3,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
4,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"push",
5,
1,
1,
1
],
[
"access",
6,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
7,
" %{0}.ia =l sar {1}, 1\n %{2}.ib =l sar {3}, 1\n %{4}.iaw =w copy %{5}.ia\n %{6}.ibw =w copy %{7}.ib\n %{8}.cr =w {9} %{10}.iaw, %{11}.ibw\n %{12}.crext =l extuw %{13}.cr\n %{14}.sh =l shl %{15}.crext, 5\n %{16} =l or %{17}.sh, 3\n",
1,
1
],
[
"frame",
9,
6,
2,
1,
1
],
[
"null",
10,
1,
1
],
[
"setarg",
9,
0,
10,
1,
1
],
[
"setarg",
9,
1,
7,
1,
1
],
[
"setarg",
9,
2,
5,
1,
1
],
[
"invoke",
9,
8,
1,
1
],
[
"return",
8,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"ceqw",
754,
63
],
[
"get",
7,
19,
1,
754,
46
],
[
"frame",
8,
7,
4,
754,
46
],
[
"null",
9,
754,
46
],
[
"setarg",
8,
0,
9,
754,
46
],
[
"setarg",
8,
1,
1,
754,
46
],
[
"setarg",
8,
2,
3,
754,
46
],
[
"setarg",
8,
3,
4,
754,
46
],
[
"setarg",
8,
4,
5,
754,
46
],
[
"tail_invoke",
8,
6,
754,
46
],
[
"return",
6,
754,
46
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"cnew",
755,
63
],
[
"get",
7,
19,
1,
755,
46
],
[
"frame",
8,
7,
4,
755,
46
],
[
"null",
9,
755,
46
],
[
"setarg",
8,
0,
9,
755,
46
],
[
"setarg",
8,
1,
1,
755,
46
],
[
"setarg",
8,
2,
3,
755,
46
],
[
"setarg",
8,
3,
4,
755,
46
],
[
"setarg",
8,
4,
5,
755,
46
],
[
"tail_invoke",
8,
6,
755,
46
],
[
"return",
6,
755,
46
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"csltw",
756,
63
],
[
"get",
7,
19,
1,
756,
46
],
[
"frame",
8,
7,
4,
756,
46
],
[
"null",
9,
756,
46
],
[
"setarg",
8,
0,
9,
756,
46
],
[
"setarg",
8,
1,
1,
756,
46
],
[
"setarg",
8,
2,
3,
756,
46
],
[
"setarg",
8,
3,
4,
756,
46
],
[
"setarg",
8,
4,
5,
756,
46
],
[
"tail_invoke",
8,
6,
756,
46
],
[
"return",
6,
756,
46
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"cslew",
757,
63
],
[
"get",
7,
19,
1,
757,
46
],
[
"frame",
8,
7,
4,
757,
46
],
[
"null",
9,
757,
46
],
[
"setarg",
8,
0,
9,
757,
46
],
[
"setarg",
8,
1,
1,
757,
46
],
[
"setarg",
8,
2,
3,
757,
46
],
[
"setarg",
8,
3,
4,
757,
46
],
[
"setarg",
8,
4,
5,
757,
46
],
[
"tail_invoke",
8,
6,
757,
46
],
[
"return",
6,
757,
46
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"csgtw",
758,
63
],
[
"get",
7,
19,
1,
758,
46
],
[
"frame",
8,
7,
4,
758,
46
],
[
"null",
9,
758,
46
],
[
"setarg",
8,
0,
9,
758,
46
],
[
"setarg",
8,
1,
1,
758,
46
],
[
"setarg",
8,
2,
3,
758,
46
],
[
"setarg",
8,
3,
4,
758,
46
],
[
"setarg",
8,
4,
5,
758,
46
],
[
"tail_invoke",
8,
6,
758,
46
],
[
"return",
6,
758,
46
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"csgew",
759,
63
],
[
"get",
7,
19,
1,
759,
46
],
[
"frame",
8,
7,
4,
759,
46
],
[
"null",
9,
759,
46
],
[
"setarg",
8,
0,
9,
759,
46
],
[
"setarg",
8,
1,
1,
759,
46
],
[
"setarg",
8,
2,
3,
759,
46
],
[
"setarg",
8,
3,
4,
759,
46
],
[
"setarg",
8,
4,
5,
759,
46
],
[
"tail_invoke",
8,
6,
759,
46
],
[
"return",
6,
759,
46
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 14,
"nr_close_slots": 0,
"instructions": [
[
"get",
6,
50,
1,
764,
15
],
[
"move",
5,
6,
764,
15
],
[
"array",
7,
0,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
2,
1,
1
],
[
"push",
7,
5,
1,
1
],
[
"push",
7,
3,
1,
1
],
[
"push",
7,
4,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"push",
7,
1,
1,
1
],
[
"access",
8,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
9,
" %{0}.fcr =w call $qbe_float_cmp(l {1}, w {2}, l {3}, l {4})\n %{5}.fcrext =l extuw %{6}.fcr\n %{7}.fsh =l shl %{8}.fcrext, 5\n %{9} =l or %{10}.fsh, 3\n",
1,
1
],
[
"frame",
11,
8,
2,
1,
1
],
[
"null",
12,
1,
1
],
[
"setarg",
11,
0,
12,
1,
1
],
[
"setarg",
11,
1,
9,
1,
1
],
[
"setarg",
11,
2,
7,
1,
1
],
[
"invoke",
11,
10,
1,
1
],
[
"return",
10,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
0,
772,
48
],
[
"put",
5,
50,
1,
772,
48
],
[
"get",
7,
31,
1,
772,
58
],
[
"frame",
8,
7,
4,
772,
58
],
[
"null",
9,
772,
58
],
[
"setarg",
8,
0,
9,
772,
58
],
[
"setarg",
8,
1,
1,
772,
58
],
[
"setarg",
8,
2,
2,
772,
58
],
[
"setarg",
8,
3,
3,
772,
58
],
[
"setarg",
8,
4,
4,
772,
58
],
[
"tail_invoke",
8,
6,
772,
58
],
[
"return",
6,
772,
58
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
1,
773,
48
],
[
"put",
5,
50,
1,
773,
48
],
[
"get",
7,
31,
1,
773,
58
],
[
"frame",
8,
7,
4,
773,
58
],
[
"null",
9,
773,
58
],
[
"setarg",
8,
0,
9,
773,
58
],
[
"setarg",
8,
1,
1,
773,
58
],
[
"setarg",
8,
2,
2,
773,
58
],
[
"setarg",
8,
3,
3,
773,
58
],
[
"setarg",
8,
4,
4,
773,
58
],
[
"tail_invoke",
8,
6,
773,
58
],
[
"return",
6,
773,
58
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
2,
774,
48
],
[
"put",
5,
50,
1,
774,
48
],
[
"get",
7,
31,
1,
774,
58
],
[
"frame",
8,
7,
4,
774,
58
],
[
"null",
9,
774,
58
],
[
"setarg",
8,
0,
9,
774,
58
],
[
"setarg",
8,
1,
1,
774,
58
],
[
"setarg",
8,
2,
2,
774,
58
],
[
"setarg",
8,
3,
3,
774,
58
],
[
"setarg",
8,
4,
4,
774,
58
],
[
"tail_invoke",
8,
6,
774,
58
],
[
"return",
6,
774,
58
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
3,
775,
48
],
[
"put",
5,
50,
1,
775,
48
],
[
"get",
7,
31,
1,
775,
58
],
[
"frame",
8,
7,
4,
775,
58
],
[
"null",
9,
775,
58
],
[
"setarg",
8,
0,
9,
775,
58
],
[
"setarg",
8,
1,
1,
775,
58
],
[
"setarg",
8,
2,
2,
775,
58
],
[
"setarg",
8,
3,
3,
775,
58
],
[
"setarg",
8,
4,
4,
775,
58
],
[
"tail_invoke",
8,
6,
775,
58
],
[
"return",
6,
775,
58
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
4,
776,
48
],
[
"put",
5,
50,
1,
776,
48
],
[
"get",
7,
31,
1,
776,
58
],
[
"frame",
8,
7,
4,
776,
58
],
[
"null",
9,
776,
58
],
[
"setarg",
8,
0,
9,
776,
58
],
[
"setarg",
8,
1,
1,
776,
58
],
[
"setarg",
8,
2,
2,
776,
58
],
[
"setarg",
8,
3,
3,
776,
58
],
[
"setarg",
8,
4,
4,
776,
58
],
[
"tail_invoke",
8,
6,
776,
58
],
[
"return",
6,
776,
58
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
5,
777,
48
],
[
"put",
5,
50,
1,
777,
48
],
[
"get",
7,
31,
1,
777,
58
],
[
"frame",
8,
7,
4,
777,
58
],
[
"null",
9,
777,
58
],
[
"setarg",
8,
0,
9,
777,
58
],
[
"setarg",
8,
1,
1,
777,
58
],
[
"setarg",
8,
2,
2,
777,
58
],
[
"setarg",
8,
3,
3,
777,
58
],
[
"setarg",
8,
4,
4,
777,
58
],
[
"tail_invoke",
8,
6,
777,
58
],
[
"return",
6,
777,
58
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 16,
"nr_close_slots": 0,
"instructions": [
[
"get",
7,
50,
1,
782,
16
],
[
"move",
5,
7,
782,
16
],
[
"get",
8,
35,
1,
783,
17
],
[
"move",
6,
8,
783,
17
],
[
"array",
9,
0,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
2,
1,
1
],
[
"push",
9,
3,
1,
1
],
[
"push",
9,
4,
1,
1
],
[
"push",
9,
6,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
5,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"push",
9,
1,
1,
1
],
[
"access",
10,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
11,
" %{0}.scmp =w call $js_string_compare_value(l {1}, l {2}, l {3}, w {4})\n %{5}.tcr =w {6} %{7}.scmp, 0\n %{8}.tcrext =l extuw %{9}.tcr\n %{10}.tsh =l shl %{11}.tcrext, 5\n %{12} =l or %{13}.tsh, 3\n",
1,
1
],
[
"frame",
13,
10,
2,
1,
1
],
[
"null",
14,
1,
1
],
[
"setarg",
13,
0,
14,
1,
1
],
[
"setarg",
13,
1,
11,
1,
1
],
[
"setarg",
13,
2,
9,
1,
1
],
[
"invoke",
13,
12,
1,
1
],
[
"return",
12,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"ceqw",
792,
47
],
[
"put",
5,
50,
1,
792,
47
],
[
"access",
6,
1,
792,
63
],
[
"put",
6,
35,
1,
792,
63
],
[
"get",
8,
7,
1,
792,
73
],
[
"frame",
9,
8,
4,
792,
73
],
[
"null",
10,
792,
73
],
[
"setarg",
9,
0,
10,
792,
73
],
[
"setarg",
9,
1,
1,
792,
73
],
[
"setarg",
9,
2,
2,
792,
73
],
[
"setarg",
9,
3,
3,
792,
73
],
[
"setarg",
9,
4,
4,
792,
73
],
[
"tail_invoke",
9,
7,
792,
73
],
[
"return",
7,
792,
73
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"cnew",
793,
47
],
[
"put",
5,
50,
1,
793,
47
],
[
"access",
6,
1,
793,
63
],
[
"put",
6,
35,
1,
793,
63
],
[
"get",
8,
7,
1,
793,
73
],
[
"frame",
9,
8,
4,
793,
73
],
[
"null",
10,
793,
73
],
[
"setarg",
9,
0,
10,
793,
73
],
[
"setarg",
9,
1,
1,
793,
73
],
[
"setarg",
9,
2,
2,
793,
73
],
[
"setarg",
9,
3,
3,
793,
73
],
[
"setarg",
9,
4,
4,
793,
73
],
[
"tail_invoke",
9,
7,
793,
73
],
[
"return",
7,
793,
73
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"csltw",
794,
47
],
[
"put",
5,
50,
1,
794,
47
],
[
"access",
6,
0,
794,
64
],
[
"put",
6,
35,
1,
794,
64
],
[
"get",
8,
7,
1,
794,
74
],
[
"frame",
9,
8,
4,
794,
74
],
[
"null",
10,
794,
74
],
[
"setarg",
9,
0,
10,
794,
74
],
[
"setarg",
9,
1,
1,
794,
74
],
[
"setarg",
9,
2,
2,
794,
74
],
[
"setarg",
9,
3,
3,
794,
74
],
[
"setarg",
9,
4,
4,
794,
74
],
[
"tail_invoke",
9,
7,
794,
74
],
[
"return",
7,
794,
74
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"cslew",
795,
47
],
[
"put",
5,
50,
1,
795,
47
],
[
"access",
6,
0,
795,
64
],
[
"put",
6,
35,
1,
795,
64
],
[
"get",
8,
7,
1,
795,
74
],
[
"frame",
9,
8,
4,
795,
74
],
[
"null",
10,
795,
74
],
[
"setarg",
9,
0,
10,
795,
74
],
[
"setarg",
9,
1,
1,
795,
74
],
[
"setarg",
9,
2,
2,
795,
74
],
[
"setarg",
9,
3,
3,
795,
74
],
[
"setarg",
9,
4,
4,
795,
74
],
[
"tail_invoke",
9,
7,
795,
74
],
[
"return",
7,
795,
74
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"csgtw",
796,
47
],
[
"put",
5,
50,
1,
796,
47
],
[
"access",
6,
0,
796,
64
],
[
"put",
6,
35,
1,
796,
64
],
[
"get",
8,
7,
1,
796,
74
],
[
"frame",
9,
8,
4,
796,
74
],
[
"null",
10,
796,
74
],
[
"setarg",
9,
0,
10,
796,
74
],
[
"setarg",
9,
1,
1,
796,
74
],
[
"setarg",
9,
2,
2,
796,
74
],
[
"setarg",
9,
3,
3,
796,
74
],
[
"setarg",
9,
4,
4,
796,
74
],
[
"tail_invoke",
9,
7,
796,
74
],
[
"return",
7,
796,
74
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 12,
"nr_close_slots": 0,
"instructions": [
[
"access",
5,
"csgew",
797,
47
],
[
"put",
5,
50,
1,
797,
47
],
[
"access",
6,
0,
797,
64
],
[
"put",
6,
35,
1,
797,
64
],
[
"get",
8,
7,
1,
797,
74
],
[
"frame",
9,
8,
4,
797,
74
],
[
"null",
10,
797,
74
],
[
"setarg",
9,
0,
10,
797,
74
],
[
"setarg",
9,
1,
1,
797,
74
],
[
"setarg",
9,
2,
2,
797,
74
],
[
"setarg",
9,
3,
3,
797,
74
],
[
"setarg",
9,
4,
4,
797,
74
],
[
"tail_invoke",
9,
7,
797,
74
],
[
"return",
7,
797,
74
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 4
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0}.cr =w ceql {1}, {2}\n %{3}.crext =l extuw %{4}.cr\n %{5}.sh =l shl %{6}.crext, 5\n %{7} =l or %{8}.sh, 3\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0}.cr =w cnel {1}, {2}\n %{3}.crext =l extuw %{4}.cr\n %{5}.sh =l shl %{6}.crext, 5\n %{7} =l or %{8}.sh, 3\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
},
{
"disruption_pc": 0,
"nr_slots": 11,
"nr_close_slots": 0,
"instructions": [
[
"array",
4,
0,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
2,
1,
1
],
[
"push",
4,
3,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"push",
4,
1,
1,
1
],
[
"access",
5,
{
"name": "format",
"kind": "name",
"make": "intrinsic"
},
1,
1
],
[
"access",
6,
" %{0}.cr =w ceql {1}, {2}\n %{3}.crext =l extuw %{4}.cr\n %{5}.sh =l shl %{6}.crext, 5\n %{7} =l or %{8}.sh, 3\n",
1,
1
],
[
"frame",
8,
5,
2,
1,
1
],
[
"null",
9,
1,
1
],
[
"setarg",
8,
0,
9,
1,
1
],
[
"setarg",
8,
1,
6,
1,
1
],
[
"setarg",
8,
2,
4,
1,
1
],
[
"invoke",
8,
7,
1,
1
],
[
"return",
7,
1,
1
],
"_nop_ur_1",
"_nop_ur_2"
],
"name": "<anonymous>",
"filename": "qbe.cm",
"nr_args": 3
}
],
"main": {
"nr_args": 0,
"nr_close_slots": 0,
"nr_slots": 148,
"instructions": [
[
"access",
10,
7,
10,
15
],
[
"access",
47,
3,
11,
16
],
[
"access",
65,
35,
12,
15
],
[
"access",
49,
15,
13,
20
],
[
"access",
44,
27,
14,
21
],
[
"null",
50,
17,
12
],
[
"null",
35,
18,
13
],
[
"null",
23,
19,
15
],
[
"access",
11,
-2147483648,
21,
17
],
[
"access",
20,
2147483647,
22,
17
],
[
"access",
45,
4503599627370495,
23,
21
],
[
"function",
78,
0,
29,
14
],
[
"move",
76,
78,
29,
14
],
[
"function",
79,
1,
35,
17
],
[
"move",
15,
79,
35,
17
],
[
"function",
80,
2,
44,
15
],
[
"move",
59,
80,
44,
15
],
[
"function",
81,
3,
50,
15
],
[
"move",
36,
81,
50,
15
],
[
"function",
82,
4,
56,
20
],
[
"move",
54,
82,
56,
20
],
[
"function",
83,
5,
62,
14
],
[
"move",
26,
83,
62,
14
],
[
"function",
84,
6,
68,
19
],
[
"move",
66,
84,
68,
19
],
[
"function",
85,
7,
74,
15
],
[
"move",
16,
85,
74,
15
],
[
"function",
86,
8,
110,
15
],
[
"move",
12,
86,
110,
15
],
[
"function",
87,
9,
117,
16
],
[
"move",
72,
87,
117,
16
],
[
"function",
88,
10,
124,
15
],
[
"move",
14,
88,
124,
15
],
[
"function",
89,
11,
131,
19
],
[
"move",
21,
89,
131,
19
],
[
"function",
90,
12,
149,
18
],
[
"move",
75,
90,
149,
18
],
[
"function",
91,
13,
186,
15
],
[
"move",
46,
91,
186,
15
],
[
"function",
92,
14,
193,
16
],
[
"move",
67,
92,
193,
16
],
[
"function",
93,
15,
201,
19
],
[
"move",
8,
93,
201,
19
],
[
"function",
94,
16,
212,
11
],
[
"move",
42,
94,
212,
11
],
[
"function",
95,
17,
254,
11
],
[
"move",
5,
95,
254,
11
],
[
"function",
96,
18,
288,
11
],
[
"move",
1,
96,
288,
11
],
[
"function",
97,
19,
322,
11
],
[
"move",
56,
97,
322,
11
],
[
"function",
98,
20,
366,
11
],
[
"move",
2,
98,
366,
11
],
[
"function",
99,
21,
407,
11
],
[
"move",
33,
99,
407,
11
],
[
"function",
100,
22,
494,
10
],
[
"move",
71,
100,
494,
10
],
[
"function",
101,
23,
499,
10
],
[
"move",
68,
101,
499,
10
],
[
"function",
102,
24,
504,
10
],
[
"move",
51,
102,
504,
10
],
[
"function",
103,
25,
509,
10
],
[
"move",
43,
103,
509,
10
],
[
"function",
104,
26,
514,
10
],
[
"move",
69,
104,
514,
10
],
[
"function",
105,
27,
519,
10
],
[
"move",
70,
105,
519,
10
],
[
"function",
106,
28,
528,
11
],
[
"move",
57,
106,
528,
11
],
[
"function",
107,
29,
555,
11
],
[
"move",
28,
107,
555,
11
],
[
"function",
108,
30,
582,
11
],
[
"move",
30,
108,
582,
11
],
[
"function",
109,
31,
609,
12
],
[
"move",
37,
109,
609,
12
],
[
"function",
110,
32,
619,
12
],
[
"move",
60,
110,
619,
12
],
[
"function",
111,
33,
643,
18
],
[
"move",
6,
111,
643,
18
],
[
"function",
112,
34,
670,
12
],
[
"move",
32,
112,
670,
12
],
[
"function",
113,
35,
675,
11
],
[
"move",
62,
113,
675,
11
],
[
"function",
114,
36,
680,
12
],
[
"move",
53,
114,
680,
12
],
[
"function",
115,
37,
687,
16
],
[
"move",
38,
115,
687,
16
],
[
"function",
116,
38,
715,
11
],
[
"move",
58,
116,
715,
11
],
[
"function",
117,
39,
720,
11
],
[
"move",
73,
117,
720,
11
],
[
"function",
118,
40,
725,
12
],
[
"move",
3,
118,
725,
12
],
[
"function",
119,
41,
736,
14
],
[
"move",
4,
119,
736,
14
],
[
"function",
120,
42,
742,
15
],
[
"move",
19,
120,
742,
15
],
[
"function",
121,
43,
754,
14
],
[
"move",
24,
121,
754,
14
],
[
"function",
122,
44,
755,
14
],
[
"move",
18,
122,
755,
14
],
[
"function",
123,
45,
756,
14
],
[
"move",
22,
123,
756,
14
],
[
"function",
124,
46,
757,
14
],
[
"move",
29,
124,
757,
14
],
[
"function",
125,
47,
758,
14
],
[
"move",
74,
125,
758,
14
],
[
"function",
126,
48,
759,
14
],
[
"move",
9,
126,
759,
14
],
[
"function",
127,
49,
763,
17
],
[
"move",
31,
127,
763,
17
],
[
"function",
128,
50,
772,
16
],
[
"move",
77,
128,
772,
16
],
[
"function",
129,
51,
773,
16
],
[
"move",
39,
129,
773,
16
],
[
"function",
130,
52,
774,
16
],
[
"move",
40,
130,
774,
16
],
[
"function",
131,
53,
775,
16
],
[
"move",
63,
131,
775,
16
],
[
"function",
132,
54,
776,
16
],
[
"move",
41,
132,
776,
16
],
[
"function",
133,
55,
777,
16
],
[
"move",
52,
133,
777,
16
],
[
"function",
134,
56,
781,
16
],
[
"move",
7,
134,
781,
16
],
[
"function",
135,
57,
792,
15
],
[
"move",
25,
135,
792,
15
],
[
"function",
136,
58,
793,
15
],
[
"move",
34,
136,
793,
15
],
[
"function",
137,
59,
794,
15
],
[
"move",
27,
137,
794,
15
],
[
"function",
138,
60,
795,
15
],
[
"move",
17,
138,
795,
15
],
[
"function",
139,
61,
796,
15
],
[
"move",
48,
139,
796,
15
],
[
"function",
140,
62,
797,
15
],
[
"move",
13,
140,
797,
15
],
[
"function",
141,
63,
800,
15
],
[
"move",
61,
141,
800,
15
],
[
"function",
142,
64,
808,
15
],
[
"move",
55,
142,
808,
15
],
[
"function",
143,
65,
817,
20
],
[
"move",
64,
143,
817,
20
],
[
"record",
144,
65
],
[
"store_field",
144,
10,
"js_null",
831,
12
],
[
"store_field",
144,
47,
"js_false",
832,
13
],
[
"store_field",
144,
65,
"js_true",
833,
12
],
[
"access",
145,
15,
834,
17
],
[
"store_field",
144,
145,
"js_exception",
834,
17
],
[
"access",
146,
27,
835,
18
],
[
"store_field",
144,
146,
"js_empty_text",
835,
18
],
[
"store_field",
144,
76,
"is_int",
837,
11
],
[
"store_field",
144,
15,
"is_number",
838,
14
],
[
"store_field",
144,
59,
"is_null",
839,
12
],
[
"store_field",
144,
36,
"is_bool",
840,
12
],
[
"store_field",
144,
54,
"is_exception",
841,
17
],
[
"store_field",
144,
26,
"is_ptr",
842,
11
],
[
"store_field",
144,
66,
"is_imm_text",
843,
16
],
[
"store_field",
144,
16,
"is_text",
844,
12
],
[
"store_field",
144,
12,
"get_int",
846,
12
],
[
"store_field",
144,
72,
"get_bool",
847,
13
],
[
"store_field",
144,
14,
"get_ptr",
848,
12
],
[
"store_field",
144,
21,
"get_float64",
849,
16
],
[
"store_field",
144,
75,
"to_float64",
850,
15
],
[
"store_field",
144,
46,
"new_int",
852,
12
],
[
"store_field",
144,
67,
"new_bool",
853,
13
],
[
"store_field",
144,
8,
"new_float64",
854,
16
],
[
"store_field",
144,
42,
"add",
856,
8
],
[
"store_field",
144,
5,
"sub",
857,
8
],
[
"store_field",
144,
1,
"mul",
858,
8
],
[
"store_field",
144,
56,
"div",
859,
8
],
[
"store_field",
144,
2,
"mod",
860,
8
],
[
"store_field",
144,
71,
"eq",
862,
7
],
[
"store_field",
144,
68,
"ne",
863,
7
],
[
"store_field",
144,
51,
"lt",
864,
7
],
[
"store_field",
144,
43,
"le",
865,
7
],
[
"store_field",
144,
69,
"gt",
866,
7
],
[
"store_field",
144,
70,
"ge",
867,
7
],
[
"store_field",
144,
57,
"neg",
869,
8
],
[
"store_field",
144,
28,
"inc",
870,
8
],
[
"store_field",
144,
30,
"dec",
871,
8
],
[
"store_field",
144,
37,
"lnot",
872,
9
],
[
"store_field",
144,
60,
"bnot",
873,
9
],
[
"store_field",
144,
32,
"band",
875,
9
],
[
"store_field",
144,
62,
"bor",
876,
8
],
[
"store_field",
144,
53,
"bxor",
877,
9
],
[
"store_field",
144,
58,
"shl",
878,
8
],
[
"store_field",
144,
73,
"shr",
879,
8
],
[
"store_field",
144,
3,
"ushr",
880,
9
],
[
"store_field",
144,
4,
"concat",
882,
11
],
[
"store_field",
144,
24,
"eq_int",
884,
11
],
[
"store_field",
144,
18,
"ne_int",
885,
11
],
[
"store_field",
144,
22,
"lt_int",
886,
11
],
[
"store_field",
144,
29,
"le_int",
887,
11
],
[
"store_field",
144,
74,
"gt_int",
888,
11
],
[
"store_field",
144,
9,
"ge_int",
889,
11
],
[
"store_field",
144,
77,
"eq_float",
891,
13
],
[
"store_field",
144,
39,
"ne_float",
892,
13
],
[
"store_field",
144,
40,
"lt_float",
893,
13
],
[
"store_field",
144,
63,
"le_float",
894,
13
],
[
"store_field",
144,
41,
"gt_float",
895,
13
],
[
"store_field",
144,
52,
"ge_float",
896,
13
],
[
"store_field",
144,
25,
"eq_text",
898,
12
],
[
"store_field",
144,
34,
"ne_text",
899,
12
],
[
"store_field",
144,
27,
"lt_text",
900,
12
],
[
"store_field",
144,
17,
"le_text",
901,
12
],
[
"store_field",
144,
48,
"gt_text",
902,
12
],
[
"store_field",
144,
13,
"ge_text",
903,
12
],
[
"store_field",
144,
61,
"eq_bool",
905,
12
],
[
"store_field",
144,
55,
"ne_bool",
906,
12
],
[
"store_field",
144,
64,
"is_identical",
908,
17
],
[
"return",
144,
908,
17
],
"_nop_ur_1",
"_nop_ur_2"
]
},
"filename": "qbe.cm",
"data": {}
}