Class: Rjq::Program
- Inherits:
-
Object
- Object
- Rjq::Program
- Defined in:
- lib/rjq/opcodes.rb
Instance Attribute Summary collapse
-
#constants ⇒ Object
readonly
Returns the value of attribute constants.
-
#definitions ⇒ Object
readonly
Returns the value of attribute definitions.
-
#instructions ⇒ Object
readonly
Returns the value of attribute instructions.
-
#module_metadata ⇒ Object
readonly
Returns the value of attribute module_metadata.
-
#module_variables ⇒ Object
readonly
Returns the value of attribute module_variables.
Instance Method Summary collapse
- #disasm ⇒ Object
- #finalize! ⇒ Object
-
#initialize(instructions:, constants: [], definitions: [], module_metadata: {}, module_variables: {}) ⇒ Program
constructor
A new instance of Program.
Constructor Details
#initialize(instructions:, constants: [], definitions: [], module_metadata: {}, module_variables: {}) ⇒ Program
Returns a new instance of Program.
53 54 55 56 57 58 59 |
# File 'lib/rjq/opcodes.rb', line 53 def initialize(instructions:, constants: [], definitions: [], module_metadata: {}, module_variables: {}) @instructions = instructions @constants = constants @definitions = definitions @module_metadata = @module_variables = module_variables end |
Instance Attribute Details
#constants ⇒ Object (readonly)
Returns the value of attribute constants.
51 52 53 |
# File 'lib/rjq/opcodes.rb', line 51 def constants @constants end |
#definitions ⇒ Object (readonly)
Returns the value of attribute definitions.
51 52 53 |
# File 'lib/rjq/opcodes.rb', line 51 def definitions @definitions end |
#instructions ⇒ Object (readonly)
Returns the value of attribute instructions.
51 52 53 |
# File 'lib/rjq/opcodes.rb', line 51 def instructions @instructions end |
#module_metadata ⇒ Object (readonly)
Returns the value of attribute module_metadata.
51 52 53 |
# File 'lib/rjq/opcodes.rb', line 51 def @module_metadata end |
#module_variables ⇒ Object (readonly)
Returns the value of attribute module_variables.
51 52 53 |
# File 'lib/rjq/opcodes.rb', line 51 def module_variables @module_variables end |
Instance Method Details
#disasm ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/rjq/opcodes.rb', line 61 def disasm lines = [] append_disasm(lines, instructions, 'main', 0) definitions.each do |definition| append_disasm(lines, definition.body.instructions, "definition:#{definition.name}/#{definition.params.length}", 0) end lines.join("\n") end |
#finalize! ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/rjq/opcodes.rb', line 71 def finalize! freeze_value(instructions) freeze_value(constants) freeze_value(definitions) freeze_value() freeze_value(module_variables) freeze end |