+ (Parrot_class_offset): Make "Not an object" a real_exception.
[parrot.git] / ABI_CHANGES
blobfdba2334b8f9b580ec916618e2b6d9b70a1d3cd1
1 # $Id$
3 This document describes changes to the Parrot ABI.
5 2004.11.27 leo
7 Removed oppodes:
9   abs I, N              - irregular operand mix
10   lcm N, I, I           - duplicate of lcm I,I,I with float result
11   rand *                - deprecated before 0.1.1
13 Internally handled opcodes:
15 All binary, unary, compare, and branch opcodes with evaluable constant
16 arguments are replaced with equivalent results of the opcode, e.g.
18   add I0, 10, 20      => set I0, 30
19   eq 10, 10, L1       => branch L1
20   ne 10, 10, L1       => gets deleted
21   iseq I0, "a", "a"   => set I0, 1
23 Opcodes with mixed I and N source arguments are replaced to take
24 either a FLOATVAL constant or with a sequence of opcodes, e.g.:
26   add N0, N1, 1       => add N0, N1, 1.0
27   add N0, N1, I2      => set $N0, I2
28                          add N0, N1, $N0
29   sin N0, 2           => sin N0, 2.0
31 The compare and branch opcodes gt, ge, isgt, and isge for I, N, S
32 arguments are not emitted any more. They are replaced with their
33 counterparts with swapped arguments, e.g. :
35   gt I0, I1, L1       => lt I1, I0, L1
36   isge I0, 100, I2    => isle I0, I2, 100
39 While all these opcodes are valid to use, these are no more listed in
40 ops/ops.num nor generated. Compilers shouldn't emit these opcodes, as
41 it's slightly inefficient to create the equivalent opcodes.
43 2004.11.15 leo
45 The variables P0, P1, P2, S0 aren't visible in the called subroutine
46 anymore.  See docs/pdds/pdd03_calling_conventions.pod.