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
+50 -50
View File
@@ -1,91 +1,91 @@
FILE fqName:<root> fileName:/whileDoWhile.kt
FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[]
FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:x type:kotlin.Int flags:[var]
VAR name:x type:kotlin.Int [var]
CONST Int type=kotlin.Int value=0
WHILE label=null origin=WHILE_LOOP
condition: CALL 'FUN IR_BUILTINS_STUB name:less visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
arg1: CONST Int type=kotlin.Int value=0
WHILE label=null origin=WHILE_LOOP
condition: CALL 'FUN IR_BUILTINS_STUB name:less visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
arg1: CONST Int type=kotlin.Int value=5
body: TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:[val]
GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:inc visibility:public modality:FINAL <> ($this:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int [val]
GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp0: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
GET_VAR 'val tmp0: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
WHILE label=null origin=WHILE_LOOP
condition: CALL 'FUN IR_BUILTINS_STUB name:less visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
arg1: CONST Int type=kotlin.Int value=10
body: BLOCK type=kotlin.Unit origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp1 type:kotlin.Int flags:[val]
GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:inc visibility:public modality:FINAL <> ($this:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp1 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp1 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp1 type:kotlin.Int [val]
GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp1: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
GET_VAR 'val tmp1: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
BLOCK type=kotlin.Unit origin=null
DO_WHILE label=null origin=DO_WHILE_LOOP
condition: CALL 'FUN IR_BUILTINS_STUB name:less visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
arg1: CONST Int type=kotlin.Int value=0
BLOCK type=kotlin.Unit origin=null
DO_WHILE label=null origin=DO_WHILE_LOOP
body: TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp2 type:kotlin.Int flags:[val]
GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:inc visibility:public modality:FINAL <> ($this:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp2 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp2 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
condition: CALL 'FUN IR_BUILTINS_STUB name:less visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp2 type:kotlin.Int [val]
GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp2: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
GET_VAR 'val tmp2: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
arg1: CONST Int type=kotlin.Int value=15
BLOCK type=kotlin.Unit origin=null
DO_WHILE label=null origin=DO_WHILE_LOOP
body: COMPOSITE type=kotlin.Unit origin=null
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]
BLOCK type=kotlin.Int origin=POSTFIX_INCR
VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int flags:[val]
GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:inc visibility:public modality:FINAL <> ($this:kotlin.Int) returnType:kotlin.Int flags:[]' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
GET_VAR 'VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int flags:[val]' type=kotlin.Int origin=null
condition: CALL 'FUN IR_BUILTINS_STUB name:less visibility:public modality:FINAL <> (arg0:kotlin.Int, arg1:kotlin.Int) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'VAR name:x type:kotlin.Int flags:[var]' type=kotlin.Int origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int [val]
GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=POSTFIX_INCR
SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
$this: GET_VAR 'val tmp3: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
GET_VAR 'val tmp3: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
arg1: CONST Int type=kotlin.Int value=20
FUN name:testSmartcastInCondition visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[]
FUN name:testSmartcastInCondition visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:a type:kotlin.Any? flags:[val]
VAR name:a type:kotlin.Any? [val]
CONST Null type=kotlin.Nothing? value=null
WHEN type=kotlin.Unit origin=IF
BRANCH
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Boolean
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public flags:[] superTypes:[kotlin.Comparable<kotlin.Boolean>; java.io.Serializable]
GET_VAR 'VAR name:a type:kotlin.Any? flags:[val]' type=kotlin.Any? origin=null
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public superTypes:[kotlin.Comparable<kotlin.Boolean>; java.io.Serializable]
GET_VAR 'val a: kotlin.Any? [val] declared in <root>.testSmartcastInCondition' type=kotlin.Any? origin=null
then: BLOCK type=kotlin.Unit origin=null
WHILE label=null origin=WHILE_LOOP
condition: TYPE_OP type=kotlin.Boolean origin=IMPLICIT_CAST typeOperand=kotlin.Boolean
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public flags:[] superTypes:[kotlin.Comparable<kotlin.Boolean>; java.io.Serializable]
GET_VAR 'VAR name:a type:kotlin.Any? flags:[val]' type=kotlin.Any? origin=null
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public superTypes:[kotlin.Comparable<kotlin.Boolean>; java.io.Serializable]
GET_VAR 'val a: kotlin.Any? [val] declared in <root>.testSmartcastInCondition' type=kotlin.Any? origin=null
body: BLOCK type=kotlin.Unit origin=null
BLOCK type=kotlin.Unit origin=null
DO_WHILE label=null origin=DO_WHILE_LOOP
body: COMPOSITE type=kotlin.Unit origin=null
condition: TYPE_OP type=kotlin.Boolean origin=IMPLICIT_CAST typeOperand=kotlin.Boolean
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public flags:[] superTypes:[kotlin.Comparable<kotlin.Boolean>; java.io.Serializable]
GET_VAR 'VAR name:a type:kotlin.Any? flags:[val]' type=kotlin.Any? origin=null
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public superTypes:[kotlin.Comparable<kotlin.Boolean>; java.io.Serializable]
GET_VAR 'val a: kotlin.Any? [val] declared in <root>.testSmartcastInCondition' type=kotlin.Any? origin=null