Gyoji Compiler
Loading...
Searching...
No Matches
Protected Member Functions | List of all members
Gyoji::mir::OperationGetMethod Class Reference

Method call (invoke) preparation. More...

#include <operations.hpp>

Inheritance diagram for Gyoji::mir::OperationGetMethod:
Inheritance graph
[legend]
Collaboration diagram for Gyoji::mir::OperationGetMethod:
Collaboration graph
[legend]

Protected Member Functions

virtual std::string get_description () const
 Produce a description of the operation.
 
- Protected Member Functions inherited from Gyoji::mir::Operation
void add_operand (size_t operand)
 Add an operand.
 

Additional Inherited Members

- Public Types inherited from Gyoji::mir::Operation
enum  OperationType {
  OP_FUNCTION_CALL , OP_DESTRUCTOR , OP_SYMBOL , OP_WIDEN_SIGNED ,
  OP_WIDEN_UNSIGNED , OP_WIDEN_FLOAT , OP_ARRAY_INDEX , OP_DOT ,
  OP_LOCAL_DECLARE , OP_LOCAL_UNDECLARE , OP_LOCAL_VARIABLE , OP_LITERAL_CHAR ,
  OP_LITERAL_STRING , OP_LITERAL_INT , OP_LITERAL_FLOAT , OP_LITERAL_BOOL ,
  OP_LITERAL_NULL , OP_ANONYMOUS_STRUCTURE , OP_ADDRESSOF , OP_DEREFERENCE ,
  OP_NEGATE , OP_BITWISE_NOT , OP_LOGICAL_NOT , OP_SIZEOF_TYPE ,
  OP_ADD , OP_SUBTRACT , OP_MULTIPLY , OP_DIVIDE ,
  OP_MODULO , OP_LOGICAL_AND , OP_LOGICAL_OR , OP_BITWISE_AND ,
  OP_BITWISE_OR , OP_BITWISE_XOR , OP_SHIFT_LEFT , OP_SHIFT_RIGHT ,
  OP_COMPARE_LESS , OP_COMPARE_GREATER , OP_COMPARE_LESS_EQUAL , OP_COMPARE_GREATER_EQUAL ,
  OP_COMPARE_NOT_EQUAL , OP_COMPARE_EQUAL , OP_ASSIGN , OP_JUMP_CONDITIONAL ,
  OP_JUMP , OP_RETURN , OP_RETURN_VOID
}
 Operations of the MIR virtual-machine. More...
 
- Public Member Functions inherited from Gyoji::mir::Operation
 Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result)
 
 Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result, size_t _operand)
 
 Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result, size_t _operand_a, size_t _operand_b)
 
 Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result, size_t _operand_a, size_t _operand_b, size_t _operand_c)
 
virtual ~Operation ()
 Move along, nothing to see here.
 
void dump (FILE *out, size_t operation_index) const
 
OperationType get_type () const
 Opcode of this operation.
 
const std::vector< size_t > & get_operands () const
 Get the operands.
 
size_t get_result () const
 Get the result of this operation.
 
bool is_terminating () const
 Returns true if this is a terminating operation for a block.
 
std::vector< size_t > get_connections () const
 Returns the list of basic blocks we might connect to.
 
const Gyoji::context::SourceReferenceget_source_ref () const
 Get the reference to the source which originated this operation.
 

Detailed Description

Method call (invoke) preparation.

This subclass of Operation represents obtaining the necessary information to perform a method call. This consists of a pair of the specific object to call the method on and the function-pointer of the method to call. This does not actually perform the method call. That is left to the OperationFunctionCall which must come afterward. Technically, this isn't necessary in the VM, but modelling the calls this way makes the 'lowering' code simpler.

Member Function Documentation

◆ get_description()

virtual std::string Gyoji::mir::OperationGetMethod::get_description ( ) const
protectedvirtual

Produce a description of the operation.

This method returns a full description of the operation including the return-value, operands, and any other ancilary information about the operation. This is a string that is constructed dynamically when needed and is used almost exclusively by the "dump" method to provide debuginng information.

Reimplemented from Gyoji::mir::Operation.


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