2026-06-21 14:35:48 +10:00
|
|
|
#include "../../../include/ground.h"
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
void _GroundBytecodeProgramExecute(GroundBytecodeProgram* program, GroundBytecodeHeap* heap) {
|
2026-06-21 16:39:05 +10:00
|
|
|
GroundSize i = 0;
|
|
|
|
|
while (i < program->len) {
|
2026-06-21 14:35:48 +10:00
|
|
|
int64_t status = Ground.Bytecode.Instruction.execute(&program->at[i], heap);
|
|
|
|
|
if (Ground.Flags.error) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (status) {
|
2026-06-21 16:39:05 +10:00
|
|
|
case -1: i++; break;
|
2026-06-21 14:35:48 +10:00
|
|
|
case -2: return;
|
|
|
|
|
default: i = status; break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|