/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 Ġ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 Ġkotlin . wasm . internal Ċ Ċ internal Ġconst Ġval ĠCHAR _ SIZE _ BYTES Ġ= Ġ 2 Ċ internal Ġconst Ġval ĠINT _ SIZE _ BYTES Ġ= Ġ 4 Ċ Ċ internal Ġfun Ġunsafe Raw Memory To Char ( addr : ĠInt ) Ġ= Ġwasm _ i 3 2 _ load 1 6 _ u ( addr ). to Char () Ċ Ċ internal Ġfun Ġunsafe Raw Memory To CharArray ( start Addr : ĠInt , Ġlength : ĠInt ): ĠChar Array Ġ{ ĊĠĠĠ Ġval Ġret Ġ= ĠChar Array ( length ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġret [ i ] Ġ= Ġunsafe Raw Memory To Char ( start Addr Ġ+ Ġi Ġ* ĠCHAR _ SIZE _ BYTES ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġret Ċ } Ċ Ċ // ĠReturns Ġa Ġpointer Ġinto Ġa Ġtemporary Ġscratch Ġsegment Ġin Ġthe Ġraw Ġwasm Ġmemory . ĠAlign ed Ġby Ġ 4 . Ċ // ĠNote : Ġcurrently Ġthere Ġis Ġsingle Ġsuch Ġsegment Ġfor Ġa Ġwhole Ġwasm Ġmodule , Ġso Ġuse Ġwith Ġcare . Ċ @ Excluded From Code gen Ċ internal Ġfun Ġunsafe Get Scratch Raw Memory ( size Bytes : ĠInt ): ĠInt Ġ= ĊĠĠĠ Ġimplemented As Intr insic Ċ Ċ // ĠAss umes Ġthere Ġis Ġenough Ġspace Ġat Ġthe Ġdestination , Ġfails Ġwith Ġwasm Ġtrap Ġotherwise . Ċ internal Ġfun Ġunsafe CharArray To Raw Memory ( src : ĠChar Array , Ġdst Addr : ĠInt ) Ġ{ ĊĠĠĠ Ġvar Ġcur Addr Ġ= Ġdst Addr ĊĠĠĠ Ġfor Ġ( i Ġin Ġsrc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwasm _ i 3 2 _ store 1 6 ( cur Addr , Ġi ) ĊĠĠĠĠĠĠĠ Ġcur Addr Ġ+= ĠCHAR _ SIZE _ BYTES ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ W asm No Op Cast Ċ internal Ġfun Ġunsafe NotNull ( x : ĠAny ?): ĠAny Ġ= ĊĠĠĠ Ġimplemented As Intr insic Ċ Ċ internal Ġfun Ġnullable Equals ( lhs : ĠAny ?, Ġrhs : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( wasm _ ref _ is _ null ( lhs )) ĊĠĠĠĠĠĠĠ Ġreturn Ġwasm _ ref _ is _ null ( rhs ) ĊĠĠĠ Ġreturn Ġunsafe NotNull ( lhs ). equals ( rhs ) Ċ } Ċ Ċ internal Ġfun Ġany N toString ( x : ĠAny ?): ĠString Ġ= Ġx . toString () Ċ Ċ internal Ġfun Ġnullable Float I eee 7 5 4 Equals ( lhs : ĠFloat ?, Ġrhs : ĠFloat ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( lhs Ġ== Ġnull ) Ġreturn Ġrhs Ġ== Ġnull ĊĠĠĠ Ġif Ġ( rhs Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠ Ġreturn Ġwasm _ f 3 2 _ eq ( lhs , Ġrhs ) Ċ } Ċ Ċ internal Ġfun Ġnullable Double I eee 7 5 4 Equals ( lhs : ĠDouble ?, Ġrhs : ĠDouble ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( lhs Ġ== Ġnull ) Ġreturn Ġrhs Ġ== Ġnull ĊĠĠĠ Ġif Ġ( rhs Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠ Ġreturn Ġwasm _ f 6 4 _ eq ( lhs , Ġrhs ) Ċ } ĊĊ Ċ internal Ġfun Ġ< T Ġ: ĠAny > Ġensure NotNull ( v : ĠT ?): ĠT Ġ= Ġif Ġ( v Ġ== Ġnull ) ĠTHROW _ N PE () Ġelse Ġv Ċ Ċ @ Excluded From Code gen Ċ internal Ġfun Ġ< T , ĠR > Ġbox Intr insic ( x : ĠT ): ĠR Ġ= ĊĠĠĠ Ġimplemented As Intr insic Ċ Ċ @ Excluded From Code gen Ċ internal Ġfun Ġ< T , ĠR > Ġun box Intr insic ( x : ĠT ): ĠR Ġ= ĊĠĠĠ Ġimplemented As Intr insic Ċ Ċ internal Ġfun Ġwasm Throw ( e : ĠThrowable ): ĠNothing Ġ{ ĊĠĠĠ Ġprintln (" Kotlin / W asm Ġexception Ġwasm Ġthrown : Ġ${ e . message }") ĊĠĠĠ Ġwasm _ unreachable () Ċ }