Author: chip
Date: Fri Nov 10 11:12:20 2006
New Revision: 15330
Modified:
trunk/docs/pdds/pdd03_calling_conventions.pod
Changes in other areas also in this revision:
Modified:
trunk/ (props changed)
trunk/compilers/imcc/imcc.l
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/pcc.c
trunk/compilers/imcc/symreg.h
trunk/docs/pcc_state.pod
trunk/include/parrot/enums.h
trunk/include/parrot/op.h
trunk/src/bignum.c
trunk/src/inter_call.c
Log:
Remove the :maybe_flat feature, which was intended to help Perl 6, but
they never used it.
Substantially improve editorial quality of pdd03 (++particle).
Modified: trunk/docs/pdds/pdd03_calling_conventions.pod
==
--- trunk/docs/pdds/pdd03_calling_conventions.pod (original)
+++ trunk/docs/pdds/pdd03_calling_conventions.pod Fri Nov 10 11:12:20 2006
@@ -59,10 +59,11 @@
get_opcode (..., 0x200, flags0, ...), ..., name, REG0, ...
The flags string is a literal quoted string denoting a list of zero or more
-comma-separated integers. The list as a whole may be surrounded by
-parentheses. Integers may be specified either in decimal, or if prefixed with
-0b/0x, in binary/hexadecimal. There must be exactly one integer for each
-value or register given.
+comma-separated integers. Integers may be specified either in decimal, or if
+prefixed with 0b/0x, in binary/hexadecimal. There must be exactly one
+integer for each value or register given.
+
+(DEPRECATED: The list as a whole may be surrounded by parentheses.)
For documentation purposes we'll number the bits 0 (low) through 30 (high).
Bit 31 (and higher, where available) will not be used.
@@ -109,63 +110,29 @@
The value is a literal constant, not a register. (Don't set this bit
yourself; the assembler will do it.)
-=item 5 CFLAT
-
-If this bit is set on a PMC value, then the PMC must be an aggregate or a
-scalar containing a reference to an aggregate. The contents of the aggregate,
-rather than the aggregate itself, will be passed.
-
- If the NAMED bit is also set, the aggregate will be used as a
- hash; its contents, as key/value pairs, will be passed as
- named parameters. The PMC must implement the full hash
- interface. {{ TODO: Limit the required interface. }}
-
- array; its contents will be used as positional parameters.
-
-The meaning of this bit is undefined when applied to integer, number, and
-string values.
-
-=item 6 CMAYBE_FLAT
-
-If this bit is set on a PMC value, and:
+=item 5 CFLAT (P only)
-=over 4
-
-=item a
+If this bit is set on a PMC value, then the PMC must be an aggregate. The
+contents of the aggregate, rather than the aggregate itself, will be passed.
-the PMC is either an aggregate or a scalar containing a reference to
-an aggregate, and
+If the CNAMED bit is also set, the aggregate will be used as a hash; its
+contents, as key/value pairs, will be passed as named parameters. The PMC
+must implement the full hash interface. {{ TODO: Limit the required
+interface. }}
-=item b
-
-the target register has the SLURPY bit set,
-
-=back
-
-then pass the PMC value as a list of values, in these ways:
-
-=over 4
-
-=item a
-
-if the value is an array, pass its elements in the normal way (FLAT
-style);
-
-=item b
-
-if the value is a hash, pass its elements as a list of key/value
-pairs contained in HLL-specific 'pair' PMCs.
-
-=back
+If the CNAMED bit is not set, the aggregate will be used as an array; its
+contents will be passed as positional parameters.
The meaning of this bit is undefined when applied to integer, number, and
-string values. It may not be combined with the NAMED bit.
+string values.
+
+=item 6 (unused)
-=item 7 C(unused)
+=item 7 (unused)
-=item 8 C(unused)
+=item 8 (unused)
-=item 9 CNAMED (FLAT or string constant only)
+=item 9 CNAMED (CFLAT or string constant only)
When the FLAT bit is also set, behavior is as described above in the FLAT
section. Otherwise, this bit may only be set on a unique string constant
@@ -195,9 +162,9 @@
=over 4
-=item 4 C(unused)
+=item 4 (unused)
-=item 5 CSLURPY (P only)
+=item 5 CSLURPY (P only)
If this bit is set on a P register, then it will be populated with an
aggregate that will contain all of the remaining values that have not already
@@ -206,15 +173,13 @@
All such values will be converted to PMCs according to the detailed rules
below, and those PMCs will be stored into the new aggregate.
- If the NAMED bit is also set, the aggregate will be an
- HLL-specific hash type and the contents will be all
- unassigned _named_ parameters.
-
- If the NAMED bit is not set, the aggregate will be an
- HLL-specific array type and the contents will be all
- unassigned positional parameters.
+If the CNAMED bit is also set, the aggregate will be the HLL-specific hash
+type and the contents will be all unassigned _named_ parameters.
+
+If