Patrick R. Michaud wrote:
On Mon, Jun 08, 2009 at 10:07:06AM +1000, Vasily Chekalkin wrote:
Few days ago I created branch for implementing mathematical ops in term of i_ops. E.g. "c = add a, b" implemented as "c = a; c+= b". No test failures (actually I fixed some i_ops which was wrong before. E.g. Integer.i_add(Complex) and so on), so I'm going to merge this branch to trunk.

Any objections?

I object, somewhat strongly.

If I'm reading the branch diff correctly, it appears to be
replacing most instances of

       dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));

with

       dest = SELF.clone();

However, these are not exactly the same thing.  In particular,
I can imagine that a VTABLE_clone operation for some (derived)
PMC types could be a lot more expensive than simply creating
a new empty instance, which is what happens now.

Objection accepted. I can replace SELF.clone with pmc_new. OTOH, this behaviour is more consistent with HLL. Consider next example:

  $P0 = new ['somehll', 'Integer']
  $P1 = new ['somehll', 'Integer']
  $P2 = $P0 + $P1

With SELF.clone $P2 type will be ['somehll', 'Integer'] without any additional work from hll implementers.

--
Bacek
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to