Change how new operators are compiled.

Instead of an instruction that always instantiates an instance,
the "new" is compiled to a method call on the class, followed by a
method call on the (presumably) new instance.

The former lets built-in types like Fn do special stuff instead of
allocating an instance. In particular, it means:

  new Fn { ... }

can just return the block argument.
This commit is contained in:
Bob Nystrom
2014-04-02 17:42:30 -07:00
parent cc56ac4da7
commit a550d6cea4
8 changed files with 49 additions and 33 deletions
+1 -1
View File
@@ -428,7 +428,7 @@ class Variable {
// Removes all traces of c from this variable.
removeConstraint(constraint) {
_constraints = _constraints.where(fn (c) c != constraint)
_constraints = _constraints.where { |c| c != constraint }
if (_determinedBy == constraint) _determinedBy = null
}
}