lp:~mgiuca/mars/closure-templates

Created by Matt Giuca and last modified

A major change to the instruction set architecture: replacing parcall instructions with lower-level 'closure template' functions that can be instantiated with a new new_closure instruction. Addresses bug #744760.

Get this branch:
bzr branch lp:~mgiuca/mars/closure-templates
Only Matt Giuca can upload to this branch. If you are Matt Giuca please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Matt Giuca
Project:
Mars
Status:
Merged

Recent revisions

1263. By Matt Giuca

interpret: Changed show behaviour for functions; no longer prints the function name and displays 'closure' instead of 'curried'.
This reflects the new semantics of function objects. Any lifted function object will now have a meaningless name, so it doesn't make sense to show it.
Also, closures are no longer necessarily curried, since we could introduce lambda expressions.
Sadly, this means we can no longer see the name of a function object at runtime, or distinguish between built-ins, constructors, thunks etc (since they are all wrapped in closure templates).

1262. By Matt Giuca

doc/dev/isa: Minor fix.

1261. By Matt Giuca

Merge from trunk (minor doc fixes).

1260. By Matt Giuca

ir: Remove three instructions: parcall, parcall_ctor and parcall_global.
These have now been entirely replaced by closure templates and the new_closure instruction, and are no longer generated.
Remove all references to these instructions from the rest of the code, and the documentation.

1259. By Matt Giuca

typedict: Remove special case for new_closure call to show or eq.
As show or eq are not closure templates, they can never be the target of new_closure, hence this case is never entered.

1258. By Matt Giuca

ast_cfg: Partial application to a local function value is now compiled to a new closure template (specific to the type of the function being called), instead of a parcall instruction.

1257. By Matt Giuca

ast_cfg: Abstract common code for building a closure template (shared between parcall_global and parcall_ctor).

1256. By Matt Giuca

ast_cfg: Now generates closure templates for lifts and partial application of constructors, rather than generating parcall_ctor instructions.

1255. By Matt Giuca

Merge from trunk (parcall tests).
Removed typedict test suite (those cases are duplicated in the parcall tests from trunk).

1254. By Matt Giuca

typedict: Fixed unbound variable errors.
Now unifies the actual CVars with the formals.
All test cases pass.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:mars
This branch contains Public information 
Everyone can see this information.

Subscribers