- JVM Runtime
- Stacks rule everything around me
- Threads and the call stack
- Execution stack per method
- Bytecodes
- javap
- Anatomy of a bytecode (optional params, actually bytes)
- load
- store
- Constant pool
- new/dup/
- get/putfield
- if/goto (look ma, no loops!)
- invoke methods
- Stacks rule everything around me
- Concurrency
- We can see the interleaving between threads
- Tail Call
- Top level functions in Kotlin, but still need a class in bytecode!
- GOTO makes everything better
- Coroutines
- Like before, lots extra generated on our behalf!
- State machine for each of our steps
- Following method calls