# Add a localized IAbort
fun add_abort(s: String...)
do
- stmt(new IAbort(s, method, module))
+ stmt(new IAbort(s, module))
end
# Add an assigment to the iroutine return value
# The current sequence of icodes
readable writable var _seq: ISeq
- # The method associated to the iroutine (if any)
- readable var _method: nullable MMMethod
-
- init(module: MMModule, r: IRoutine, m: nullable MMMethod)
+ init(module: MMModule, r: IRoutine)
do
_module = module
_current_location = r.location
_iroutine = r
_seq = r.body
- _method = m
end
# New ICodes are set to this location
end
# Create an empty IClosureDef that match the signature
- fun generate_empty_iclosuredef: IClosureDef
+ fun generate_empty_iclosuredef(icb: ICodeBuilder): IClosureDef
do
var args = new Array[IRegister]
for i in [0..arity[ do
- args.add(new IRegister(self[i]))
+ args.add(icb.new_register(self[i]))
end
var res: nullable IRegister = null
var rtype = return_type
if rtype != null then
- res = new IRegister(rtype)
+ res = icb.new_register(rtype)
end
var iroutine = new IClosureDef(args, res)
var clos: nullable Array[IClosureDecl] = null