Setting up the use of this module.
§1. This section simply sets up the module in ways expected by foundation, and contains no code of interest. The following constant exists only in tools which use this module:
define BYTECODE_MODULE TRUE
§2. This module defines the following classes:
enum inter_tree_CLASS enum inter_tree_node_CLASS enum inter_warehouse_CLASS enum inter_warehouse_room_CLASS enum inter_symbols_table_CLASS enum inter_symbol_CLASS enum inter_annotation_CLASS enum inter_construct_CLASS enum inter_annotation_form_CLASS enum inter_error_message_CLASS enum inter_error_stash_CLASS enum inter_package_CLASS enum inter_node_list_CLASS enum inter_node_array_CLASS
DECLARE_CLASS(inter_tree) DECLARE_CLASS(inter_warehouse) DECLARE_CLASS(inter_warehouse_room) DECLARE_CLASS(inter_symbols_table) DECLARE_CLASS(inter_construct) DECLARE_CLASS(inter_annotation_form) DECLARE_CLASS(inter_error_message) DECLARE_CLASS(inter_package) DECLARE_CLASS(inter_node_list) DECLARE_CLASS(inter_node_array) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(inter_error_stash, 1024) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(inter_symbol, 1024) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(inter_tree_node, 8192) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(inter_annotation, 8192)
§3. Like all modules, this one must define a start and end function:
void BytecodeModule::start(void) { Register this module's memory allocation reasons3.2; Register this module's stream writers3.3; Register this module's debugging log aspects3.5; Register this module's debugging log writers3.6; InterInstruction::create_language(); InterTypes::initialise_constructors(); } void BytecodeModule::end(void) { }
enum INTER_SYMBOLS_MREASON enum INTER_BYTECODE_MREASON enum INTER_LINKS_MREASON enum TREE_LIST_MREASON
§3.2. Register this module's memory allocation reasons3.2 =
Memory::reason_name(INTER_SYMBOLS_MREASON, "inter symbols storage"); Memory::reason_name(INTER_BYTECODE_MREASON, "inter bytecode storage"); Memory::reason_name(INTER_LINKS_MREASON, "inter links storage"); Memory::reason_name(TREE_LIST_MREASON, "inter tree location list storage");
- This code is used in §3.
§3.3. Register this module's stream writers3.3 =
Writers::register_writer('t', &TextualInter::writer); Writers::register_writer('F', &InterInstruction::instruction_writer);
- This code is used in §3.
enum INTER_FILE_READ_DA enum INTER_MEMORY_DA enum INTER_BINARY_DA enum INTER_SYMBOLS_DA enum INTER_CONNECTORS_DA enum CONSTANT_DEPTH_CALCULATION_DA
§3.5. Register this module's debugging log aspects3.5 =
Log::declare_aspect(INTER_MEMORY_DA, U"inter memory usage", FALSE, FALSE); Log::declare_aspect(INTER_FILE_READ_DA, U"intermediate file reading", FALSE, FALSE); Log::declare_aspect(INTER_BINARY_DA, U"inter binary", FALSE, FALSE); Log::declare_aspect(INTER_SYMBOLS_DA, U"inter symbols", FALSE, FALSE); Log::declare_aspect(INTER_CONNECTORS_DA, U"inter connectors", FALSE, FALSE); Log::declare_aspect(CONSTANT_DEPTH_CALCULATION_DA, U"constant depth calculation", FALSE, FALSE);
- This code is used in §3.
§3.6. Register this module's debugging log writers3.6 =
Writers::register_logger('3', InterSymbol::log); Writers::register_logger('4', InterSymbolsTable::log); Writers::register_logger('5', InterBookmark::log); Writers::register_logger('6', InterPackage::log);
- This code is used in §3.