Articles

CodeSwitch API improvements
CodeSwitch is designed to be a library that can be embedded in any application. A good API is crucial. While I can't say that CodeSwitch's C++ API is completely stable yet, I think it's gotten to a pretty usable state.
Tagged: codeswitch gypsum virtual-machines

Memory management in CodeSwitch
CodeSwitch has its own garbage collected heap, which is used not only for objects allocated by interpreted code, but also for most internal data structures. In this article, I'll describe how the heap is built, how the garbage collector works, and how it tracks pointers to the heap from C++ code.
Tagged: codeswitch garbage-collection gypsum virtual-machines

CodeSwitch bytecode and interpretation
The interpreter is essentially a loop with a big switch-statement. In each iteration, it reads one instruction, switches on the opcode, branches to the appropriate case, then executes some code for that instruction.
Tagged: codeswitch gypsum interpreter virtual-machines

A tour of V8: Garbage Collection
In this article, I reveal the secrets of V8's garbage collector! Tagged pointers, generational collection, incremental marking, and parallel sweeping are demystified!
Tagged: garbage-collection javascript v8 virtual-machines

A tour of V8: Crankshaft, the optimizing compiler
Crankshaft is V8's optimizing compiler. Once unoptimized code has been running for a while, V8 identifies hot functions and recompiles them with Crankshaft, greatly improving performance.
Tagged: javascript optimization v8 virtual-machines

A tour of V8: object representation
JavaScript allows developers to define objects in a very flexible way. This article looks at the clever optimizations V8 uses to make accessing JavaScript objects as fast as objects in class-based languages.
Tagged: javascript v8 virtual-machines

A tour of V8: full compiler
An overview of the high level structure of the V8 JavaScript Virtual Machine, with details on the full compiler and inline caches.
Tagged: javascript optimization v8 virtual-machines

Polymorphic Inline Caches explained
Polymorphic inline caches are a way to optimize function calls in dynamic languages
Tagged: optimization virtual-machines