Packages

class Transformer[F[_], Ctx] extends AnyRef

Transforms a WebAssembly program into another one. Tree traversal is performed in bottom-up order, with a _preparation_ phase for recursive instructions to upgrade the context before inspecting children.

Every instruction has a default noop transform method, as well as a instruction categories (see group Category for instructions).

To implement your own transformation, you can override the methods that need specific handling.

A Transformer is a cats.Semigroup, two transformers can be merged into one, based on the approach presented in Miniphases: Compilation using Modular and Efficient Tree Transformations. When merged, two transformers are fused, making it possible to perform both transformations in one tree traversal only. Make sure your transformations respect the criteria defined in section 6 of the Miniphase paper to fuse them, otherwise, behavior of the result won't be the expected one. If not, transformations cannot be fused, and must be chained one after the other and perform two tree traversals.

Source
Transformer.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Transformer
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Transformer()(implicit F: Monad[F])

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. val binopTransform: (Ctx, Binop) => F[(Ctx, Inst)]
  6. val binopTransformId: (Ctx, Binop) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  7. val blockPrepare: (Ctx, Block) => F[Ctx]
  8. val blockTransform: (Ctx, Block) => F[(Ctx, Inst)]
  9. val brIfTransform: (Ctx, BrIf) => F[(Ctx, Inst)]
  10. val brTableTransform: (Ctx, BrTable) => F[(Ctx, Inst)]
  11. val brTransform: (Ctx, Br) => F[(Ctx, Inst)]
  12. val callIndirectTransform: (Ctx, CallIndirect) => F[(Ctx, Inst)]
  13. val callTransform: (Ctx, Call) => F[(Ctx, Inst)]
  14. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  15. val constTransform: (Ctx, AConst) => F[(Ctx, Inst)]
  16. val constTransformId: (Ctx, AConst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  17. val convertopTransform: (Ctx, Convertop) => F[(Ctx, Inst)]
  18. val convertopTransformId: (Ctx, Convertop) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  19. val dropTransform: (Ctx, Drop.type) => F[(Ctx, Inst)]
  20. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  21. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  22. val f32AbsTransform: (Ctx, Abs.type) => F[(Ctx, Inst)]
  23. val f32AddTransform: (Ctx, Add.type) => F[(Ctx, Inst)]
  24. val f32CeilTransform: (Ctx, Ceil.type) => F[(Ctx, Inst)]
  25. val f32ConstTransform: (Ctx, Const) => F[(Ctx, Inst)]
  26. val f32ConvertSI32Transform: (Ctx, ConvertSI32.type) => F[(Ctx, Inst)]
  27. val f32ConvertSI64Transform: (Ctx, ConvertSI64.type) => F[(Ctx, Inst)]
  28. val f32ConvertUI32Transform: (Ctx, ConvertUI32.type) => F[(Ctx, Inst)]
  29. val f32ConvertUI64Transform: (Ctx, ConvertUI64.type) => F[(Ctx, Inst)]
  30. val f32CopysignTransform: (Ctx, Copysign.type) => F[(Ctx, Inst)]
  31. val f32DemoteF64Transform: (Ctx, DemoteF64.type) => F[(Ctx, Inst)]
  32. val f32DivTransform: (Ctx, Div.type) => F[(Ctx, Inst)]
  33. val f32EqTransform: (Ctx, Eq.type) => F[(Ctx, Inst)]
  34. val f32FloorTransform: (Ctx, Floor.type) => F[(Ctx, Inst)]
  35. val f32GeTransform: (Ctx, Ge.type) => F[(Ctx, Inst)]
  36. val f32GtTransform: (Ctx, Gt.type) => F[(Ctx, Inst)]
  37. val f32LeTransform: (Ctx, Le.type) => F[(Ctx, Inst)]
  38. val f32LoadTransform: (Ctx, Load) => F[(Ctx, Inst)]
  39. val f32LtTransform: (Ctx, Lt.type) => F[(Ctx, Inst)]
  40. val f32MaxTransform: (Ctx, Max.type) => F[(Ctx, Inst)]
  41. val f32MinTransform: (Ctx, Min.type) => F[(Ctx, Inst)]
  42. val f32MulTransform: (Ctx, Mul.type) => F[(Ctx, Inst)]
  43. val f32NeTransform: (Ctx, Ne.type) => F[(Ctx, Inst)]
  44. val f32NearestTransform: (Ctx, Nearest.type) => F[(Ctx, Inst)]
  45. val f32NegTransform: (Ctx, Neg.type) => F[(Ctx, Inst)]
  46. val f32ReinterpretI32Transform: (Ctx, ReinterpretI32.type) => F[(Ctx, Inst)]
  47. val f32SqrtTransform: (Ctx, Sqrt.type) => F[(Ctx, Inst)]
  48. val f32StoreTransform: (Ctx, Store) => F[(Ctx, Inst)]
  49. val f32SubTransform: (Ctx, Sub.type) => F[(Ctx, Inst)]
  50. val f32TruncTransform: (Ctx, Trunc.type) => F[(Ctx, Inst)]
  51. val f64AbsTransform: (Ctx, Abs.type) => F[(Ctx, Inst)]
  52. val f64AddTransform: (Ctx, Add.type) => F[(Ctx, Inst)]
  53. val f64CeilTransform: (Ctx, Ceil.type) => F[(Ctx, Inst)]
  54. val f64ConstTransform: (Ctx, Const) => F[(Ctx, Inst)]
  55. val f64ConvertSI32Transform: (Ctx, ConvertSI32.type) => F[(Ctx, Inst)]
  56. val f64ConvertSI64Transform: (Ctx, ConvertSI64.type) => F[(Ctx, Inst)]
  57. val f64ConvertUI32Transform: (Ctx, ConvertUI32.type) => F[(Ctx, Inst)]
  58. val f64ConvertUI64Transform: (Ctx, ConvertUI64.type) => F[(Ctx, Inst)]
  59. val f64CopysignTransform: (Ctx, Copysign.type) => F[(Ctx, Inst)]
  60. val f64DivTransform: (Ctx, Div.type) => F[(Ctx, Inst)]
  61. val f64EqTransform: (Ctx, Eq.type) => F[(Ctx, Inst)]
  62. val f64FloorTransform: (Ctx, Floor.type) => F[(Ctx, Inst)]
  63. val f64GeTransform: (Ctx, Ge.type) => F[(Ctx, Inst)]
  64. val f64GtTransform: (Ctx, Gt.type) => F[(Ctx, Inst)]
  65. val f64LeTransform: (Ctx, Le.type) => F[(Ctx, Inst)]
  66. val f64LoadTransform: (Ctx, Load) => F[(Ctx, Inst)]
  67. val f64LtTransform: (Ctx, Lt.type) => F[(Ctx, Inst)]
  68. val f64MaxTransform: (Ctx, Max.type) => F[(Ctx, Inst)]
  69. val f64MinTransform: (Ctx, Min.type) => F[(Ctx, Inst)]
  70. val f64MulTransform: (Ctx, Mul.type) => F[(Ctx, Inst)]
  71. val f64NeTransform: (Ctx, Ne.type) => F[(Ctx, Inst)]
  72. val f64NearestTransform: (Ctx, Nearest.type) => F[(Ctx, Inst)]
  73. val f64NegTransform: (Ctx, Neg.type) => F[(Ctx, Inst)]
  74. val f64PromoteF32Transform: (Ctx, PromoteF32.type) => F[(Ctx, Inst)]
  75. val f64ReinterpretI64Transform: (Ctx, ReinterpretI64.type) => F[(Ctx, Inst)]
  76. val f64SqrtTransform: (Ctx, Sqrt.type) => F[(Ctx, Inst)]
  77. val f64StoreTransform: (Ctx, Store) => F[(Ctx, Inst)]
  78. val f64SubTransform: (Ctx, Sub.type) => F[(Ctx, Inst)]
  79. val f64TruncTransform: (Ctx, Trunc.type) => F[(Ctx, Inst)]
  80. val fst: (Ctx, Inst) => F[Ctx]
    Attributes
    protected[this]
  81. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  82. val globalGetTransform: (Ctx, GlobalGet) => F[(Ctx, Inst)]
  83. val globalSetTransform: (Ctx, GlobalSet) => F[(Ctx, Inst)]
  84. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  85. val i32AddTransform: (Ctx, Add.type) => F[(Ctx, Inst)]
  86. val i32AndTransform: (Ctx, And.type) => F[(Ctx, Inst)]
  87. val i32ClzTransform: (Ctx, Clz.type) => F[(Ctx, Inst)]
  88. val i32ConstTransform: (Ctx, Const) => F[(Ctx, Inst)]
  89. val i32CtzTransform: (Ctx, Ctz.type) => F[(Ctx, Inst)]
  90. val i32DivSTransform: (Ctx, DivS.type) => F[(Ctx, Inst)]
  91. val i32DivUTransform: (Ctx, DivU.type) => F[(Ctx, Inst)]
  92. val i32EqTransform: (Ctx, Eq.type) => F[(Ctx, Inst)]
  93. val i32EqzTransform: (Ctx, Eqz.type) => F[(Ctx, Inst)]
  94. val i32Extend16STransform: (Ctx, Extend16S.type) => F[(Ctx, Inst)]
  95. val i32Extend8STransform: (Ctx, Extend8S.type) => F[(Ctx, Inst)]
  96. val i32GeSTransform: (Ctx, GeS.type) => F[(Ctx, Inst)]
  97. val i32GeUTransform: (Ctx, GeU.type) => F[(Ctx, Inst)]
  98. val i32GtSTransform: (Ctx, GtS.type) => F[(Ctx, Inst)]
  99. val i32GtUTransform: (Ctx, GtU.type) => F[(Ctx, Inst)]
  100. val i32LeSTransform: (Ctx, LeS.type) => F[(Ctx, Inst)]
  101. val i32LeUTransform: (Ctx, LeU.type) => F[(Ctx, Inst)]
  102. val i32Load16STransform: (Ctx, Load16S) => F[(Ctx, Inst)]
  103. val i32Load16UTransform: (Ctx, Load16U) => F[(Ctx, Inst)]
  104. val i32Load8STransform: (Ctx, Load8S) => F[(Ctx, Inst)]
  105. val i32Load8UTransform: (Ctx, Load8U) => F[(Ctx, Inst)]
  106. val i32LoadTransform: (Ctx, Load) => F[(Ctx, Inst)]
  107. val i32LtSTransform: (Ctx, LtS.type) => F[(Ctx, Inst)]
  108. val i32LtUTransform: (Ctx, LtU.type) => F[(Ctx, Inst)]
  109. val i32MulTransform: (Ctx, Mul.type) => F[(Ctx, Inst)]
  110. val i32NeTransform: (Ctx, Ne.type) => F[(Ctx, Inst)]
  111. val i32OrTransform: (Ctx, Or.type) => F[(Ctx, Inst)]
  112. val i32PopcntTransform: (Ctx, Popcnt.type) => F[(Ctx, Inst)]
  113. val i32ReinterpretF32Transform: (Ctx, ReinterpretF32.type) => F[(Ctx, Inst)]
  114. val i32RemSTransform: (Ctx, RemS.type) => F[(Ctx, Inst)]
  115. val i32RemUTransform: (Ctx, RemU.type) => F[(Ctx, Inst)]
  116. val i32RotlTransform: (Ctx, Rotl.type) => F[(Ctx, Inst)]
  117. val i32RotrTransform: (Ctx, Rotr.type) => F[(Ctx, Inst)]
  118. val i32ShlTransform: (Ctx, Shl.type) => F[(Ctx, Inst)]
  119. val i32ShrSTransform: (Ctx, ShrS.type) => F[(Ctx, Inst)]
  120. val i32ShrUTransform: (Ctx, ShrU.type) => F[(Ctx, Inst)]
  121. val i32Store16Transform: (Ctx, Store16) => F[(Ctx, Inst)]
  122. val i32Store8Transform: (Ctx, Store8) => F[(Ctx, Inst)]
  123. val i32StoreTransform: (Ctx, Store) => F[(Ctx, Inst)]
  124. val i32SubTransform: (Ctx, Sub.type) => F[(Ctx, Inst)]
  125. val i32TruncSF32Transform: (Ctx, TruncSF32.type) => F[(Ctx, Inst)]
  126. val i32TruncSF64Transform: (Ctx, TruncSF64.type) => F[(Ctx, Inst)]
  127. val i32TruncSatSF32Transform: (Ctx, TruncSatSF32.type) => F[(Ctx, Inst)]
  128. val i32TruncSatSF64Transform: (Ctx, TruncSatSF64.type) => F[(Ctx, Inst)]
  129. val i32TruncSatUF32Transform: (Ctx, TruncSatUF32.type) => F[(Ctx, Inst)]
  130. val i32TruncSatUF64Transform: (Ctx, TruncSatUF64.type) => F[(Ctx, Inst)]
  131. val i32TruncUF32Transform: (Ctx, TruncUF32.type) => F[(Ctx, Inst)]
  132. val i32TruncUF64Transform: (Ctx, TruncUF64.type) => F[(Ctx, Inst)]
  133. val i32WrapI64Transform: (Ctx, WrapI64.type) => F[(Ctx, Inst)]
  134. val i32XorTransform: (Ctx, Xor.type) => F[(Ctx, Inst)]
  135. val i64AddTransform: (Ctx, Add.type) => F[(Ctx, Inst)]
  136. val i64AndTransform: (Ctx, And.type) => F[(Ctx, Inst)]
  137. val i64ClzTransform: (Ctx, Clz.type) => F[(Ctx, Inst)]
  138. val i64ConstTransform: (Ctx, Const) => F[(Ctx, Inst)]
  139. val i64CtzTransform: (Ctx, Ctz.type) => F[(Ctx, Inst)]
  140. val i64DivSTransform: (Ctx, DivS.type) => F[(Ctx, Inst)]
  141. val i64DivUTransform: (Ctx, DivU.type) => F[(Ctx, Inst)]
  142. val i64EqTransform: (Ctx, Eq.type) => F[(Ctx, Inst)]
  143. val i64EqzTransform: (Ctx, Eqz.type) => F[(Ctx, Inst)]
  144. val i64Extend16STransform: (Ctx, Extend16S.type) => F[(Ctx, Inst)]
  145. val i64Extend32STransform: (Ctx, Extend32S.type) => F[(Ctx, Inst)]
  146. val i64Extend8STransform: (Ctx, Extend8S.type) => F[(Ctx, Inst)]
  147. val i64ExtendSI32Transform: (Ctx, ExtendSI32.type) => F[(Ctx, Inst)]
  148. val i64ExtendUI32Transform: (Ctx, ExtendUI32.type) => F[(Ctx, Inst)]
  149. val i64GeSTransform: (Ctx, GeS.type) => F[(Ctx, Inst)]
  150. val i64GeUTransform: (Ctx, GeU.type) => F[(Ctx, Inst)]
  151. val i64GtSTransform: (Ctx, GtS.type) => F[(Ctx, Inst)]
  152. val i64GtUTransform: (Ctx, GtU.type) => F[(Ctx, Inst)]
  153. val i64LeSTransform: (Ctx, LeS.type) => F[(Ctx, Inst)]
  154. val i64LeUTransform: (Ctx, LeU.type) => F[(Ctx, Inst)]
  155. val i64Load16STransform: (Ctx, Load16S) => F[(Ctx, Inst)]
  156. val i64Load16UTransform: (Ctx, Load16U) => F[(Ctx, Inst)]
  157. val i64Load32STransform: (Ctx, Load32S) => F[(Ctx, Inst)]
  158. val i64Load32UTransform: (Ctx, Load32U) => F[(Ctx, Inst)]
  159. val i64Load8STransform: (Ctx, Load8S) => F[(Ctx, Inst)]
  160. val i64Load8UTransform: (Ctx, Load8U) => F[(Ctx, Inst)]
  161. val i64LoadTransform: (Ctx, Load) => F[(Ctx, Inst)]
  162. val i64LtSTransform: (Ctx, LtS.type) => F[(Ctx, Inst)]
  163. val i64LtUTransform: (Ctx, LtU.type) => F[(Ctx, Inst)]
  164. val i64MulTransform: (Ctx, Mul.type) => F[(Ctx, Inst)]
  165. val i64NeTransform: (Ctx, Ne.type) => F[(Ctx, Inst)]
  166. val i64OrTransform: (Ctx, Or.type) => F[(Ctx, Inst)]
  167. val i64PopcntTransform: (Ctx, Popcnt.type) => F[(Ctx, Inst)]
  168. val i64ReinterpretF64Transform: (Ctx, ReinterpretF64.type) => F[(Ctx, Inst)]
  169. val i64RemSTransform: (Ctx, RemS.type) => F[(Ctx, Inst)]
  170. val i64RemUTransform: (Ctx, RemU.type) => F[(Ctx, Inst)]
  171. val i64RotlTransform: (Ctx, Rotl.type) => F[(Ctx, Inst)]
  172. val i64RotrTransform: (Ctx, Rotr.type) => F[(Ctx, Inst)]
  173. val i64ShlTransform: (Ctx, Shl.type) => F[(Ctx, Inst)]
  174. val i64ShrSTransform: (Ctx, ShrS.type) => F[(Ctx, Inst)]
  175. val i64ShrUTransform: (Ctx, ShrU.type) => F[(Ctx, Inst)]
  176. val i64Store16Transform: (Ctx, Store16) => F[(Ctx, Inst)]
  177. val i64Store32Transform: (Ctx, Store32) => F[(Ctx, Inst)]
  178. val i64Store8Transform: (Ctx, Store8) => F[(Ctx, Inst)]
  179. val i64StoreTransform: (Ctx, Store) => F[(Ctx, Inst)]
  180. val i64SubTransform: (Ctx, Sub.type) => F[(Ctx, Inst)]
  181. val i64TruncSF32Transform: (Ctx, TruncSF32.type) => F[(Ctx, Inst)]
  182. val i64TruncSF64Transform: (Ctx, TruncSF64.type) => F[(Ctx, Inst)]
  183. val i64TruncSatSF32Transform: (Ctx, TruncSatSF32.type) => F[(Ctx, Inst)]
  184. val i64TruncSatSF64Transform: (Ctx, TruncSatSF64.type) => F[(Ctx, Inst)]
  185. val i64TruncSatUF32Transform: (Ctx, TruncSatUF32.type) => F[(Ctx, Inst)]
  186. val i64TruncSatUF64Transform: (Ctx, TruncSatUF64.type) => F[(Ctx, Inst)]
  187. val i64TruncUF32Transform: (Ctx, TruncUF32.type) => F[(Ctx, Inst)]
  188. val i64TruncUF64Transform: (Ctx, TruncUF64.type) => F[(Ctx, Inst)]
  189. val i64XorTransform: (Ctx, Xor.type) => F[(Ctx, Inst)]
  190. val id: (Ctx, Inst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  191. val ifPrepare: (Ctx, If) => F[Ctx]
  192. val ifTransform: (Ctx, If) => F[(Ctx, Inst)]
  193. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  194. val loadInstTransform: (Ctx, LoadInst) => F[(Ctx, Inst)]
  195. val loadInstTransformId: (Ctx, LoadInst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  196. val loadNInstTransform: (Ctx, LoadNInst) => F[(Ctx, Inst)]
  197. val loadNInstTransformId: (Ctx, LoadNInst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  198. val localGetTransform: (Ctx, LocalGet) => F[(Ctx, Inst)]
  199. val localSetTransform: (Ctx, LocalSet) => F[(Ctx, Inst)]
  200. val localTeeTransform: (Ctx, LocalTee) => F[(Ctx, Inst)]
  201. val loopPrepare: (Ctx, Loop) => F[Ctx]
  202. val loopTransform: (Ctx, Loop) => F[(Ctx, Inst)]
  203. val memoryGrowTransform: (Ctx, MemoryGrow.type) => F[(Ctx, Inst)]
  204. val memoryInstTransform: (Ctx, MemoryInst) => F[(Ctx, Inst)]
  205. val memoryInstTransformId: (Ctx, MemoryInst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  206. val memorySizeTransform: (Ctx, MemorySize.type) => F[(Ctx, Inst)]
  207. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  208. val nopTransform: (Ctx, Nop.type) => F[(Ctx, Inst)]
  209. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  210. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  211. val otherPrepare: (Ctx, Inst) => F[Ctx]
  212. val relopTransform: (Ctx, Relop) => F[(Ctx, Inst)]
  213. val relopTransformId: (Ctx, Relop) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  214. val returnTransform: (Ctx, Return.type) => F[(Ctx, Inst)]
  215. final def run(ctx: Ctx, inst: Inst): F[(Ctx, Inst)]
  216. val satConvertopTransform: (Ctx, SatConvertop) => F[(Ctx, Inst)]
  217. val satConvertopTransformId: (Ctx, SatConvertop) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  218. val selectTransform: (Ctx, Select.type) => F[(Ctx, Inst)]
  219. val storeInstTransform: (Ctx, StoreInst) => F[(Ctx, Inst)]
  220. val storeInstTransformId: (Ctx, StoreInst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  221. val storeNInstTransform: (Ctx, StoreNInst) => F[(Ctx, Inst)]
  222. val storeNInstTransformId: (Ctx, StoreNInst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  223. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  224. val testopTransform: (Ctx, Testop) => F[(Ctx, Inst)]
  225. val testopTransformId: (Ctx, Testop) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  226. def toString(): String
    Definition Classes
    AnyRef → Any
  227. final def transform(ctx: Ctx, inst: Inst): F[(Ctx, Inst)]
  228. val unopTransform: (Ctx, Unop) => F[(Ctx, Inst)]
  229. val unopTransformId: (Ctx, Unop) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  230. val unreachableTransform: (Ctx, Unreachable.type) => F[(Ctx, Inst)]
  231. val varInstTransform: (Ctx, VarInst) => F[(Ctx, Inst)]
  232. val varInstTransformId: (Ctx, VarInst) => F[(Ctx, Inst)]
    Attributes
    protected[this]
  233. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  234. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  235. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated @deprecated
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from AnyRef

Inherited from Any

Ungrouped