/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . codegen . range Ċ Ċ import Ġorg . jetbrains . kotlin . builtins . Unsigned Type Ċ import Ġorg . jetbrains . kotlin . builtins . Unsigned Types Ċ import Ġorg . jetbrains . kotlin . codegen . Stack Value Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġorg . jetbrains . kotlin . types . type Util . is Nothing Ċ import Ġorg . jetbrains . org . object web . asm . Type Ċ Ċ val ĠStack Value . unsigned Type : ĠUnsigned Type ? ĊĠĠĠ Ġget () Ġ= Ġkotlin Type ?. let Ġ{ ĠUnsigned Types . to Unsigned Type ( it ) Ġ} Ċ Ċ fun Ġco erce Unsigned To UInt ( stack Value : ĠStack Value , Ġu Int Kotlin Type : ĠKotlin Type ): ĠStack Value Ġ= ĊĠĠĠ Ġco erce Unsigned To UInt ( stack Value , Ġstack Value . kotlin Type , Ġu Int Kotlin Type ) Ċ Ċ fun Ġco erce Unsigned To UInt ( ĊĠĠĠ Ġstack Value : ĠStack Value , ĊĠĠĠ Ġvalue Kotlin Type : ĠKotlin Type ?, ĊĠĠĠ Ġu Int Kotlin Type : ĠKotlin Type Ċ ): ĠStack Value Ġ{ ĊĠĠĠ Ġstack Value . kotlin Type ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . is Nothing ()) Ġreturn Ġstack Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġvalue Unsigned Type Ġ= Ġstack Value . unsigned Type ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" Unsigned Ġtype Ġexpected : Ġ${ stack Value . kotlin Type }") ĊĊĠĠĠ Ġif Ġ( value Unsigned Type Ġ== ĠUnsigned Type . UINT ) Ġreturn Ġstack Value ĊĊĠĠĠ Ġreturn ĠStack Value . operation ( Type . INT _ TYPE , Ġu Int Kotlin Type ) Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠ Ġstack Value . put ( stack Value . type , Ġvalue Kotlin Type , Ġv ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value Unsigned Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsigned Type . UBY TE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . iconst ( 0 xFF ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . and ( Type . INT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsigned Type . USH ORT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . iconst ( 0 xFFFF ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . and ( Type . INT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsigned Type . ULONG Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . cast ( Type . LONG _ TYPE , ĠType . INT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠAssertionError (" Unexpected Ġvalue Ġtype : Ġ$ value Kotlin Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġco erce Unsigned To UL ong ( stack Value : ĠStack Value , Ġu Long Kotlin Type : ĠKotlin Type ): ĠStack Value Ġ= ĊĠĠĠ Ġco erce Unsigned To UL ong ( stack Value , Ġstack Value . kotlin Type , Ġu Long Kotlin Type ) Ċ Ċ fun Ġco erce Unsigned To UL ong ( ĊĠĠĠ Ġstack Value : ĠStack Value , ĊĠĠĠ Ġvalue Kotlin Type : ĠKotlin Type ?, ĊĠĠĠ Ġu Long Kotlin Type : ĠKotlin Type Ċ ): ĠStack Value Ġ{ ĊĠĠĠ Ġval Ġvalue Unsigned Type Ġ= Ġstack Value . unsigned Type ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" Unsigned Ġtype Ġexpected : Ġ$ value Kotlin Type ") ĊĊĠĠĠ Ġif Ġ( value Unsigned Type Ġ== ĠUnsigned Type . ULONG ) Ġreturn Ġstack Value ĊĊĠĠĠ Ġreturn ĠStack Value . operation ( Type . LONG _ TYPE , Ġu Long Kotlin Type ) Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠ Ġstack Value . put ( stack Value . type , Ġvalue Kotlin Type , Ġv ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value Unsigned Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsigned Type . UBY TE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . cast ( Type . INT _ TYPE , ĠType . LONG _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . l const ( 0 xFF ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . and ( Type . LONG _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsigned Type . USH ORT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . cast ( Type . INT _ TYPE , ĠType . LONG _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . l const ( 0 xFFFF ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . and ( Type . LONG _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsigned Type . UINT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . cast ( Type . INT _ TYPE , ĠType . LONG _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . l const ( 0 xFFFF _ FFFF L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . and ( Type . LONG _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠAssertionError (" Unexpected Ġvalue Ġtype : Ġ$ value Kotlin Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ