IR: descriptor-less rendering of IR elements (work in progress)

This commit is contained in:
Dmitry Petrov
2019-03-18 14:15:50 +03:00
parent cd138bc022
commit 9a82f926a1
323 changed files with 19062 additions and 18959 deletions
+21 -21
View File
@@ -2,11 +2,11 @@
// FUN: digitCountInNumber
BB 0
CONTENT
1 FUN name:digitCountInNumber visibility:public modality:FINAL <> (n:kotlin.Int, m:kotlin.Int) returnType:kotlin.Int flags:[]
1 FUN name:digitCountInNumber visibility:public modality:FINAL <> (n:kotlin.Int, m:kotlin.Int) returnType:kotlin.Int
2 CONST Int type=kotlin.Int value=0
3 VAR name:count type:kotlin.Int flags:[var]
4 GET_VAR 'VALUE_PARAMETER name:n index:0 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
5 VAR name:number type:kotlin.Int flags:[var]
3 VAR name:count type:kotlin.Int [var]
4 GET_VAR 'n: kotlin.Int declared in <root>.digitCountInNumber' type=kotlin.Int origin=null
5 VAR name:number type:kotlin.Int [var]
6 DO_WHILE label=null origin=DO_WHILE_LOOP
OUTGOING -> BB 1
Do..while entry: DO_WHILE label=null origin=DO_WHILE_LOOP
@@ -15,20 +15,20 @@ INCOMING <- BB 0, 4
Do..while entry: DO_WHILE label=null origin=DO_WHILE_LOOP
CONTENT
1 WHEN type=kotlin.Unit origin=IF
2 GET_VAR 'VALUE_PARAMETER name:m index:1 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
3 GET_VAR 'VAR name:number type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
2 GET_VAR 'm: kotlin.Int declared in <root>.digitCountInNumber' type=kotlin.Int origin=null
3 GET_VAR 'var number: kotlin.Int [var] declared in <root>.digitCountInNumber' type=kotlin.Int origin=null
4 CONST Int type=kotlin.Int value=10
5 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:rem visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=PERC
5 CALL 'public final fun rem (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PERC
OUTGOING -> BB 2
CALL 'FUN IR_BUILTINS_STUB name:EQEQ visibility:public modality:FINAL <> (arg0:kotlin.Any?, arg1:kotlin.Any?) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=EQEQ
CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
BB 2
INCOMING <- BB 1
CALL 'FUN IR_BUILTINS_STUB name:EQEQ visibility:public modality:FINAL <> (arg0:kotlin.Any?, arg1:kotlin.Any?) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=EQEQ
CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
CONTENT
1 GET_VAR 'VAR name:count type:kotlin.Int flags:[var]' type=kotlin.Int origin=POSTFIX_INCR
2 VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:[val]
3 SET_VAR 'VAR name:count type:kotlin.Int flags:[var]' type=kotlin.Unit origin=POSTFIX_INCR
4 GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
1 GET_VAR 'var count: kotlin.Int [var] declared in <root>.digitCountInNumber' type=kotlin.Int origin=POSTFIX_INCR
2 VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int [val]
3 SET_VAR 'var count: kotlin.Int [var] declared in <root>.digitCountInNumber' type=kotlin.Unit origin=POSTFIX_INCR
4 GET_VAR 'val tmp0: kotlin.Int [val] declared in <root>.digitCountInNumber' type=kotlin.Int origin=null
5 TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
OUTGOING -> BB 3
When exit: WHEN type=kotlin.Unit origin=IF
@@ -36,20 +36,20 @@ BB 3
INCOMING <- BB 2
When exit: WHEN type=kotlin.Unit origin=IF
CONTENT
1 SET_VAR 'VAR name:number type:kotlin.Int flags:[var]' type=kotlin.Unit origin=DIVEQ
2 GET_VAR 'VAR name:number type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
1 SET_VAR 'var number: kotlin.Int [var] declared in <root>.digitCountInNumber' type=kotlin.Unit origin=DIVEQ
2 GET_VAR 'var number: kotlin.Int [var] declared in <root>.digitCountInNumber' type=kotlin.Int origin=null
3 CONST Int type=kotlin.Int value=0
OUTGOING -> BB 4, 5
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
BB 4
INCOMING <- BB 3
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
CONTENT
OUTGOING -> BB 1
Do..while entry: DO_WHILE label=null origin=DO_WHILE_LOOP
BB 5
INCOMING <- BB 3
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
CONTENT
OUTGOING -> BB 6
Do..while exit: DO_WHILE label=null origin=DO_WHILE_LOOP
@@ -57,10 +57,10 @@ BB 6
INCOMING <- BB 5
Do..while exit: DO_WHILE label=null origin=DO_WHILE_LOOP
CONTENT
1 GET_VAR 'VAR name:count type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
2 RETURN type=kotlin.Nothing from='FUN name:digitCountInNumber visibility:public modality:FINAL <> (n:kotlin.Int, m:kotlin.Int) returnType:kotlin.Int flags:[]'
1 GET_VAR 'var count: kotlin.Int [var] declared in <root>.digitCountInNumber' type=kotlin.Int origin=null
2 RETURN type=kotlin.Nothing from='public final fun digitCountInNumber (n: kotlin.Int, m: kotlin.Int): kotlin.Int declared in <root>'
OUTGOING -> NONE
Function exit: FUN name:digitCountInNumber visibility:public modality:FINAL <> (n:kotlin.Int, m:kotlin.Int) returnType:kotlin.Int flags:[]
Function exit: FUN name:digitCountInNumber visibility:public modality:FINAL <> (n:kotlin.Int, m:kotlin.Int) returnType:kotlin.Int
// END FUN: digitCountInNumber
+17 -17
View File
@@ -2,14 +2,14 @@
// FUN: factorial
BB 0
CONTENT
1 FUN name:factorial visibility:public modality:FINAL <> (i:kotlin.Int) returnType:kotlin.Int flags:[]
1 FUN name:factorial visibility:public modality:FINAL <> (i:kotlin.Int) returnType:kotlin.Int
2 CONST Int type=kotlin.Int value=1
3 VAR name:result type:kotlin.Int flags:[var]
3 VAR name:result type:kotlin.Int [var]
4 CONST Int type=kotlin.Int value=2
5 GET_VAR 'VALUE_PARAMETER name:i index:0 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
6 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:rangeTo visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.ranges.IntRange flags:[]' type=kotlin.ranges.IntRange origin=RANGE
7 CALL 'FUN FAKE_OVERRIDE name:iterator visibility:public modality:OPEN <> ($this:kotlin.ranges.IntProgression) returnType:kotlin.collections.IntIterator flags:[]' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
8 VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator flags:[val]
5 GET_VAR 'i: kotlin.Int declared in <root>.factorial' type=kotlin.Int origin=null
6 CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
7 CALL 'public open fun iterator (): kotlin.collections.IntIterator declared in kotlin.ranges.IntRange' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
8 VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator [val]
9 WHILE label=null origin=FOR_LOOP_INNER_WHILE
OUTGOING -> BB 1
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
@@ -17,22 +17,22 @@ BB 1
INCOMING <- BB 0, 2
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
CONTENT
1 GET_VAR 'VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator flags:[val]' type=kotlin.collections.IntIterator origin=null
1 GET_VAR 'val tmp0_iterator: kotlin.collections.IntIterator [val] declared in <root>.factorial' type=kotlin.collections.IntIterator origin=null
OUTGOING -> BB 2, 3
CALL 'FUN FAKE_OVERRIDE name:hasNext visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Iterator<kotlin.Int>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
BB 2
INCOMING <- BB 1
CALL 'FUN FAKE_OVERRIDE name:hasNext visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Iterator<kotlin.Int>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CONTENT
1 GET_VAR 'VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator flags:[val]' type=kotlin.collections.IntIterator origin=null
2 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:next visibility:public modality:FINAL <> ($this:kotlin.collections.IntIterator) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=FOR_LOOP_NEXT
3 VAR FOR_LOOP_VARIABLE name:j type:kotlin.Int flags:[val]
4 SET_VAR 'VAR name:result type:kotlin.Int flags:[var]' type=kotlin.Unit origin=MULTEQ
1 GET_VAR 'val tmp0_iterator: kotlin.collections.IntIterator [val] declared in <root>.factorial' type=kotlin.collections.IntIterator origin=null
2 CALL 'public final fun next (): kotlin.Int declared in kotlin.collections.IntIterator' type=kotlin.Int origin=FOR_LOOP_NEXT
3 VAR FOR_LOOP_VARIABLE name:j type:kotlin.Int [val]
4 SET_VAR 'var result: kotlin.Int [var] declared in <root>.factorial' type=kotlin.Unit origin=MULTEQ
OUTGOING -> BB 1
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
BB 3
INCOMING <- BB 1
CALL 'FUN FAKE_OVERRIDE name:hasNext visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Iterator<kotlin.Int>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CONTENT
OUTGOING -> BB 4
While exit: WHILE label=null origin=FOR_LOOP_INNER_WHILE
@@ -40,10 +40,10 @@ BB 4
INCOMING <- BB 3
While exit: WHILE label=null origin=FOR_LOOP_INNER_WHILE
CONTENT
1 GET_VAR 'VAR name:result type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
2 RETURN type=kotlin.Nothing from='FUN name:factorial visibility:public modality:FINAL <> (i:kotlin.Int) returnType:kotlin.Int flags:[]'
1 GET_VAR 'var result: kotlin.Int [var] declared in <root>.factorial' type=kotlin.Int origin=null
2 RETURN type=kotlin.Nothing from='public final fun factorial (i: kotlin.Int): kotlin.Int declared in <root>'
OUTGOING -> NONE
Function exit: FUN name:factorial visibility:public modality:FINAL <> (i:kotlin.Int) returnType:kotlin.Int flags:[]
Function exit: FUN name:factorial visibility:public modality:FINAL <> (i:kotlin.Int) returnType:kotlin.Int
// END FUN: factorial
+31 -31
View File
@@ -2,16 +2,16 @@
// FUN: isPerfect
BB 0
CONTENT
1 FUN name:isPerfect visibility:public modality:FINAL <> (n:kotlin.Int) returnType:kotlin.Boolean flags:[]
1 FUN name:isPerfect visibility:public modality:FINAL <> (n:kotlin.Int) returnType:kotlin.Boolean
2 CONST Int type=kotlin.Int value=1
3 VAR name:sum type:kotlin.Int flags:[var]
3 VAR name:sum type:kotlin.Int [var]
4 CONST Int type=kotlin.Int value=2
5 GET_VAR 'VALUE_PARAMETER name:n index:0 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
5 GET_VAR 'n: kotlin.Int declared in <root>.isPerfect' type=kotlin.Int origin=null
6 CONST Int type=kotlin.Int value=2
7 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:div visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=DIV
8 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:rangeTo visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.ranges.IntRange flags:[]' type=kotlin.ranges.IntRange origin=RANGE
9 CALL 'FUN FAKE_OVERRIDE name:iterator visibility:public modality:OPEN <> ($this:kotlin.ranges.IntProgression) returnType:kotlin.collections.IntIterator flags:[]' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
10 VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator flags:[val]
7 CALL 'public final fun div (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=DIV
8 CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
9 CALL 'public open fun iterator (): kotlin.collections.IntIterator declared in kotlin.ranges.IntRange' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
10 VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator [val]
11 WHILE label=null origin=FOR_LOOP_INNER_WHILE
OUTGOING -> BB 1
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
@@ -19,56 +19,56 @@ BB 1
INCOMING <- BB 0, 3, 6
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
CONTENT
1 GET_VAR 'VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator flags:[val]' type=kotlin.collections.IntIterator origin=null
1 GET_VAR 'val tmp0_iterator: kotlin.collections.IntIterator [val] declared in <root>.isPerfect' type=kotlin.collections.IntIterator origin=null
OUTGOING -> BB 2, 7
CALL 'FUN FAKE_OVERRIDE name:hasNext visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Iterator<kotlin.Int>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
BB 2
INCOMING <- BB 1
CALL 'FUN FAKE_OVERRIDE name:hasNext visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Iterator<kotlin.Int>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CONTENT
1 GET_VAR 'VAR FOR_LOOP_ITERATOR name:tmp0_iterator type:kotlin.collections.IntIterator flags:[val]' type=kotlin.collections.IntIterator origin=null
2 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:next visibility:public modality:FINAL <> ($this:kotlin.collections.IntIterator) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=FOR_LOOP_NEXT
3 VAR FOR_LOOP_VARIABLE name:m type:kotlin.Int flags:[val]
1 GET_VAR 'val tmp0_iterator: kotlin.collections.IntIterator [val] declared in <root>.isPerfect' type=kotlin.collections.IntIterator origin=null
2 CALL 'public final fun next (): kotlin.Int declared in kotlin.collections.IntIterator' type=kotlin.Int origin=FOR_LOOP_NEXT
3 VAR FOR_LOOP_VARIABLE name:m type:kotlin.Int [val]
4 WHEN type=kotlin.Unit origin=IF
5 GET_VAR 'VALUE_PARAMETER name:n index:0 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
6 GET_VAR 'VAR FOR_LOOP_VARIABLE name:m type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
7 CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:rem visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=PERC
5 GET_VAR 'n: kotlin.Int declared in <root>.isPerfect' type=kotlin.Int origin=null
6 GET_VAR 'val m: kotlin.Int [val] declared in <root>.isPerfect' type=kotlin.Int origin=null
7 CALL 'public final fun rem (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PERC
8 CONST Int type=kotlin.Int value=0
OUTGOING -> BB 3, 4
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
BB 3
INCOMING <- BB 2
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
CONTENT
1 CONTINUE label=null loop.label=null
OUTGOING -> BB 1
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
BB 4
INCOMING <- BB 2
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
CONTENT
1 SET_VAR 'VAR name:sum type:kotlin.Int flags:[var]' type=kotlin.Unit origin=PLUSEQ
1 SET_VAR 'var sum: kotlin.Int [var] declared in <root>.isPerfect' type=kotlin.Unit origin=PLUSEQ
2 WHEN type=kotlin.Unit origin=IF
3 GET_VAR 'VAR name:sum type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
4 GET_VAR 'VALUE_PARAMETER name:n index:0 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
3 GET_VAR 'var sum: kotlin.Int [var] declared in <root>.isPerfect' type=kotlin.Int origin=null
4 GET_VAR 'n: kotlin.Int declared in <root>.isPerfect' type=kotlin.Int origin=null
OUTGOING -> BB 5, 6
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
BB 5
INCOMING <- BB 4
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
CONTENT
1 BREAK label=null loop.label=null
OUTGOING -> BB 8
While exit: WHILE label=null origin=FOR_LOOP_INNER_WHILE
BB 6
INCOMING <- BB 4
CALL 'FUN IR_BUILTINS_STUB name:greater visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=GT
CALL 'public final fun greater (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=GT
CONTENT
OUTGOING -> BB 1
While entry: WHILE label=null origin=FOR_LOOP_INNER_WHILE
BB 7
INCOMING <- BB 1
CALL 'FUN FAKE_OVERRIDE name:hasNext visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Iterator<kotlin.Int>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
CONTENT
OUTGOING -> BB 8
While exit: WHILE label=null origin=FOR_LOOP_INNER_WHILE
@@ -76,12 +76,12 @@ BB 8
INCOMING <- BB 5, 7
While exit: WHILE label=null origin=FOR_LOOP_INNER_WHILE
CONTENT
1 GET_VAR 'VAR name:sum type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
2 GET_VAR 'VALUE_PARAMETER name:n index:0 type:kotlin.Int flags:[]' type=kotlin.Int origin=null
3 CALL 'FUN IR_BUILTINS_STUB name:EQEQ visibility:public modality:FINAL <> (arg0:kotlin.Any?, arg1:kotlin.Any?) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=EQEQ
4 RETURN type=kotlin.Nothing from='FUN name:isPerfect visibility:public modality:FINAL <> (n:kotlin.Int) returnType:kotlin.Boolean flags:[]'
1 GET_VAR 'var sum: kotlin.Int [var] declared in <root>.isPerfect' type=kotlin.Int origin=null
2 GET_VAR 'n: kotlin.Int declared in <root>.isPerfect' type=kotlin.Int origin=null
3 CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
4 RETURN type=kotlin.Nothing from='public final fun isPerfect (n: kotlin.Int): kotlin.Boolean declared in <root>'
OUTGOING -> NONE
Function exit: FUN name:isPerfect visibility:public modality:FINAL <> (n:kotlin.Int) returnType:kotlin.Boolean flags:[]
Function exit: FUN name:isPerfect visibility:public modality:FINAL <> (n:kotlin.Int) returnType:kotlin.Boolean
// END FUN: isPerfect