Fun
0.41.5
The programming language that makes you have fun!
Main Page
Data Structures
Files
File List
Globals
Loading...
Searching...
No Matches
src
vm
core
load_const.c
Go to the documentation of this file.
1
/*
2
* This file is part of the Fun programming language.
3
* https://fun-lang.xyz/
4
*
5
* Copyright 2025 Johannes Findeisen <you@hanez.org>
6
* Licensed under the terms of the Apache-2.0 license.
7
* https://opensource.org/license/apache-2-0
8
*/
9
10
/**
11
* @file load_const.c
12
* @brief Implements the OP_LOAD_CONST opcode for loading constants in the VM.
13
*
14
* This file handles the OP_LOAD_CONST instruction, which loads a constant value
15
* from the bytecode's constant pool onto the stack.
16
*
17
* Behavior:
18
* - operand is index into constant pool
19
* - Pushes copy of constant onto stack
20
*
21
* Error Handling:
22
* - Exits if invalid constant index
23
*/
24
25
case
OP_LOAD_CONST
: {
26
int
idx
= inst.operand;
27
if
(
idx < 0 || idx >
=
f
->fn->const_count) {
28
fprintf
(stderr,
"Runtime error: constant index out of range\n"
);
29
exit
(1);
30
}
31
Value
c
=
copy_value
(&
f
->fn->constants[
idx
]);
32
push_value
(vm,
c
);
33
break
;
34
}
OP_LOAD_CONST
@ OP_LOAD_CONST
Definition
bytecode.h:37
idx
int idx
Definition
index_of.c:38
c
Value c
Definition
load_const.c:31
push_value
push_value(vm, c)
f
FILE * f
Definition
read_file.c:38
Value
Tagged union representing a Fun value.
Definition
value.h:68
copy_value
Value copy_value(const Value *v)
Shallow copy a Value.
Definition
value.c:415
fprintf
#define fprintf
Definition
vm.c:200
exit
#define exit(code)
Definition
vm.c:230
Generated on
for Fun by
1.16.1