3 ms·
`extern` means it's implemented in native, but it has to conform to the interface that the VM provides, and register that function with the VM. At runtime, the
by tadeuzagallo 10y ago
`extern` means it's implemented in native, but it has to conform to the interface that the VM provides, and register that function with the VM. At runtime, the parser knows when a function is local (i.e. in the bytecode) or extern (i.e. C++). If it's local, it'll jump to the function's offset in the bytecode, if it's extern, the interpreter will use a native call.
You can take a look at some native functions here: https://github.com/tadeuzagallo/verve-lang/blob/master/runtime/builtins.cc#L146 https://github.com/tadeuzagallo/verve-lang/blob/master/runti...
And the implementation for the `op_call` opcode here (notice it has 2 branches: op_call_builtin and op_call_closure, the former is for `extern`ed functions): https://github.com/tadeuzagallo/verve-lang/blob/master/runtime/interpreter.S#L119 https://github.com/tadeuzagallo/verve-lang/blob/master/runti...