KrkChunk Struct Reference
Opcode chunk of a code object. More...
#include <chunk.h>
Public Member Functions | |
void | krk_initChunk (KrkChunk *chunk) |
Initialize an opcode chunk. | |
void | krk_writeChunk (KrkChunk *chunk, uint8_t byte, size_t line) |
Append a byte to an opcode chunk. | |
void | krk_freeChunk (KrkChunk *chunk) |
Release the resources allocated to an opcode chunk. | |
size_t | krk_addConstant (KrkChunk *chunk, KrkValue value) |
Add a new constant value to an opcode chunk. | |
void | krk_emitConstant (KrkChunk *chunk, size_t ind, size_t line) |
Write an OP_CONSTANT(_LONG) instruction. | |
size_t | krk_writeConstant (KrkChunk *chunk, KrkValue value, size_t line) |
Add a new constant and write an instruction for it. | |
size_t | krk_lineNumber (KrkChunk *chunk, size_t offset) |
Obtain the line number for a byte offset into a bytecode chunk. More... | |
Data Fields | |
size_t | count |
size_t | capacity |
uint8_t * | code |
size_t | linesCount |
size_t | linesCapacity |
KrkLineMap * | lines |
struct KrkString * | filename |
KrkValueArray | constants |
Detailed Description
Opcode chunk of a code object.
Opcode chunks are internal to code objects and I'm not really sure why we're still separating them from the KrkCodeObjects.
Stores four flexible arrays using three different formats:
- Code, representing opcodes and operands.
- Lines, representing offset-to-line mappings.
- Filename, the string name of the source file.
- Constants, an array of values referenced by the code object.
Member Function Documentation
◆ krk_lineNumber()
size_t krk_lineNumber | ( | KrkChunk * | chunk, |
size_t | offset | ||
) |
Obtain the line number for a byte offset into a bytecode chunk.
Scans the line mapping table for the given chunk to find the correct line number from the original source file for the instruction at byte index 'offset'.
- Parameters
-
chunk Bytecode chunk containing the instruction. offset Byte offset of the instruction to locate.
- Returns
- Line number, 1-indexed.
The documentation for this struct was generated from the following file:
- src/kuroko/chunk.h