mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 18:14:06 +09:00
43 lines
1.1 KiB
Kotlin
43 lines
1.1 KiB
Kotlin
package net.torvald.terrarum.tests
|
|
|
|
import net.torvald.terrarum.serialise.toUint
|
|
import net.torvald.unsafe.UnsafeHelper
|
|
import sun.misc.Unsafe
|
|
|
|
/**
|
|
* Created by minjaesong on 2019-06-22.
|
|
*/
|
|
class UnsafeTest {
|
|
|
|
private val unsafe: Unsafe
|
|
init {
|
|
val unsafeConstructor = Unsafe::class.java.getDeclaredConstructor()
|
|
unsafeConstructor.isAccessible = true
|
|
unsafe = unsafeConstructor.newInstance()
|
|
}
|
|
|
|
private val memsize = 512L // must be big enough value so that your OS won't always return zero-filled pieces
|
|
|
|
fun main() {
|
|
val intarray = intArrayOf(5,4,3,2,1)
|
|
|
|
val arrayBaseOffset = UnsafeHelper.getArrayOffset(intarray) // should be 16 or 12 on 64-bit JVM
|
|
|
|
println(arrayBaseOffset)
|
|
}
|
|
|
|
|
|
fun printDump(ptr: Long) {
|
|
println("MINIMINIDUMP START")
|
|
for (i in 0 until memsize) {
|
|
val b = unsafe.getByte(ptr + i).toUint().toString(16).padStart(2, '0')
|
|
print("$b ")
|
|
}
|
|
println("\nMINIMINIDUMP END")
|
|
}
|
|
|
|
}
|
|
|
|
fun main(args: Array<String>) {
|
|
UnsafeTest().main()
|
|
} |