Search code examples
erlanghipe

Erlang compilation: mixed of "HiPE object code" and "opcode"?


Is it possible to have a VM instance that executes both HiPE code and the usual "opcode" based objects at the same time?

This question is related to : Erlang OTP release compiles with HiPE?


Solution

  • Yes, that is how the native compiler is integrated. Only those modules that are compiled with the +native option are executing in native machine code, and the rest are interpreted by the BEAM emulator as usual. When you make calls between modules compiled in different ways, a "mode switch" happens. This way, you can mix native and emulated modules seamlessly. Still, you should try to select which modules you native compile so that you avoid mode switches in tight, performance critical loops, because there is a small overhead each time.