ArkScript
A small, fast, functional and scripting language for video games
Ark::internal::IROptimizer Class Referencefinal

#include <IROptimizer.hpp>

Collaboration diagram for Ark::internal::IROptimizer:
[legend]

Public Member Functions

 IROptimizer (unsigned debug)
 Create a new IROptimizer.
 
void process (const std::vector< IR::Block > &pages, const std::vector< std::string > &symbols, const std::vector< ValTableElem > &values)
 Turn a given IR into bytecode.
 
const std::vector< IR::Block > & intermediateRepresentation () const noexcept
 Return the IR blocks (one per scope)
 

Private Member Functions

std::optional< IR::EntitycompactEntities (const IR::Entity &first, const IR::Entity &second)
 
std::optional< IR::EntitycompactEntities (const IR::Entity &first, const IR::Entity &second, const IR::Entity &third)
 
bool isPositiveNumberInlinable (uint16_t id) const
 

Private Attributes

Logger m_logger
 
std::vector< IR::Blockm_ir
 
std::vector< std::string > m_symbols
 
std::vector< ValTableElemm_values
 

Detailed Description

Definition at line 23 of file IROptimizer.hpp.

Constructor & Destructor Documentation

◆ IROptimizer()

Ark::internal::IROptimizer::IROptimizer ( unsigned debug)
explicit

Create a new IROptimizer.

Parameters
debugdebug level

Definition at line 14 of file IROptimizer.cpp.

Member Function Documentation

◆ compactEntities() [1/2]

◆ compactEntities() [2/2]

◆ intermediateRepresentation()

const std::vector< IR::Block > & Ark::internal::IROptimizer::intermediateRepresentation ( ) const
nodiscardnoexcept

Return the IR blocks (one per scope)

Returns
const std::vector<Block>&

Definition at line 82 of file IROptimizer.cpp.

References m_ir.

Referenced by Ark::Welder::generateBytecode().

◆ isPositiveNumberInlinable()

bool Ark::internal::IROptimizer::isPositiveNumberInlinable ( uint16_t id) const
nodiscardprivate

Definition at line 151 of file IROptimizer.cpp.

References m_values, Ark::internal::IR::MaxValueForDualArg, and Ark::internal::Number.

Referenced by compactEntities().

◆ process()

void Ark::internal::IROptimizer::process ( const std::vector< IR::Block > & pages,
const std::vector< std::string > & symbols,
const std::vector< ValTableElem > & values )

Turn a given IR into bytecode.

Parameters
pageslist of lists of IR entities generated by the compiler
symbolssymbol table generated by the compiler
valuesvalue table generated by the compiler

Definition at line 18 of file IROptimizer.cpp.

References compactEntities(), m_ir, m_logger, m_symbols, m_values, Ark::internal::Logger::traceEnd(), and Ark::internal::Logger::traceStart().

Referenced by Ark::Welder::generateBytecode().

Member Data Documentation

◆ m_ir

std::vector<IR::Block> Ark::internal::IROptimizer::m_ir
private

Definition at line 51 of file IROptimizer.hpp.

Referenced by intermediateRepresentation(), and process().

◆ m_logger

Logger Ark::internal::IROptimizer::m_logger
private

Definition at line 50 of file IROptimizer.hpp.

Referenced by process().

◆ m_symbols

std::vector<std::string> Ark::internal::IROptimizer::m_symbols
private

Definition at line 52 of file IROptimizer.hpp.

Referenced by process().

◆ m_values

std::vector<ValTableElem> Ark::internal::IROptimizer::m_values
private

Definition at line 53 of file IROptimizer.hpp.

Referenced by compactEntities(), isPositiveNumberInlinable(), and process().


The documentation for this class was generated from the following files: