compile the blocks too
method_compilers have block_compilers just like methods have blocks But assemblers are a flat list
This commit is contained in:
parent
165036ea39
commit
a3059108eb
@ -27,10 +27,23 @@ module Mom
|
|||||||
def translate_methods(translator)
|
def translate_methods(translator)
|
||||||
method_compilers.collect do |compiler|
|
method_compilers.collect do |compiler|
|
||||||
#log.debug "Translate method #{compiler.method.name}"
|
#log.debug "Translate method #{compiler.method.name}"
|
||||||
translate_cpu(compiler , translator)
|
translate_method(compiler , translator)
|
||||||
end
|
end.flatten
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# translate one method, which means the method itself and all blocks inside it
|
||||||
|
# returns an array of assemblers
|
||||||
|
def translate_method( method_compiler , translator)
|
||||||
|
all = []
|
||||||
|
all << translate_cpu( method_compiler , translator )
|
||||||
|
method_compiler.block_compilers.each do |block_compiler|
|
||||||
|
all << translate_cpu(block_compiler , translator)
|
||||||
|
end
|
||||||
|
all
|
||||||
|
end
|
||||||
|
|
||||||
|
# compile the callable (method or block) to cpu
|
||||||
|
# return an Assembler that will then translate to binary
|
||||||
def translate_cpu(compiler , translator)
|
def translate_cpu(compiler , translator)
|
||||||
risc = compiler.risc_instructions
|
risc = compiler.risc_instructions
|
||||||
cpu_instructions = risc.to_cpu(translator)
|
cpu_instructions = risc.to_cpu(translator)
|
||||||
|
Loading…
Reference in New Issue
Block a user