C0 Runtime
C0RT (C0 Runtime Instance)
A C0RT is an abstract class defined in ./src/types.d.ts that contains following interface:
declare abstract class C0VM_RT {
abstract step_forward(UIHooks: ReactUIHook): boolean;
/**
* @deprecated This method "restart" is a legacy from the original
* vanilla HTML frontend. It should not be used anymore in the React
* frontend.
*/
abstract restart(): void;
abstract debug(): any;
}The actual C0VM state, heap allocator and all things are encapsulated into this Runtime instance.
When the function step_forward is called, the C0VM will execute a single bytecode instruction from the .bc0 string given in constructor and returns a boolean value.
If result is
true, the VM can continue "step forward".If result is
false, the VM either have executed all the commands in bytecode or have met a breakpoint.
C0VM_RuntimeState
Defined in ./src/vm_core/exec/state.ts, the state C0VM_RuntimeState is defined as follow:
export default class C0VM_RuntimeState implements C0VM_RT{
public raw_code: string;
public code: C0ByteCode;
public state: VM_State;
public allocator: C0HeapAllocator;
public heap_size: undefined | number
constructor(rawByteCode: string, heapSize?: number);
public step_forward(UIHooks: ReactUIHook): boolean;
public restart(): never;
public clone(): C0VM_RuntimeState;
public debug(): any;
}
constructor method
Receives a raw byte code and initialize the virtual machine. The PC will be set to the first byte in main function.
step_forward method
Execute a step in virtual machine, that is, execute a single bytecode instruction at the position PC points to.
restart method
This method is deprecated as it is an "anti-pattern" in current react framework. This method is here just to comply with C0RT interface and should never be used.
clone method
Return a shallow copy of the state itself.
The clone method in this class is to deal with the immutability requirement of React. Calling this function will return a shallow copy of original C0VM state.
debug method
Returns a reference to the heap memory if DEBUG option is set to true.
Last updated