fun dump_global_optimizations_information(directory_name: String) do
dump_out_of_init_information(directory_name)
dump_dead_method_optimization(directory_name)
+ dump_inline_get_set(directory_name)
end
# This method will create log files storing analysis information
import program
redef class Program
+ var _number_getter_setter_inlined : Int = 0
+
+ # This method will create a file and output this optimization's stats in it
+ fun dump_inline_get_set(directory_name: String) do
+ var f = new OFStream.open("{directory_name}/{module.name}.inline_get_set.log")
+
+ f.write ("Number of getters and setters inlined: {_number_getter_setter_inlined}\n")
+
+ f.close
+ end
+
fun inline_get_set do
with_each_iroutines !action(i, m) do
var v = new InlineGetSetVisitor(m, i)
v.visit_iroutine(i)
+
+ _number_getter_setter_inlined += v.number_inlined
end
end
end
private class InlineGetSetVisitor
special ICodeVisitor
var _icb: ICodeBuilder
+ readable var _number_inlined: Int = 0
redef fun visit_icode(ic)
do
end
current_icode.delete
icb.seq = old_seq
+ _number_inlined += 1
visit_icode(seq)
end
end