Version 3 (modified by plobsing, 11 years ago)

add deprecation information about indirect register ops

Parrot Deprecations for 3.0

Indirect Register Access Ops

Opcodes that access registers that are not their direct arguments are deprecated. Note, however, that direct arguments does include keys and pcc ops.

Rationale

They don't fit well with the level of the rest of parrot's opcodes. They make register lifetime analysis impossible, preventing many optimizations.

Replacement

If you really are using this, rethink your code. Stop using the register frame as an aggregate. Use an object aggregate in stead.

Exchange Op

Description

The exchange ops are deprecated.

Rationale

They operate at too low a level to be useful as parrot ops.

Replacement

You aren't using this. Seriously?

.macro xchg_int(a, b)
    $I0 = .a
    .a = .b
    .b = $I0
.endm

PIR string literals with charset and encoding are deprecated

Description

PIR string literals of the form

encoding:charset:"string"

are deprecated.

Rationale

After the charset/encoding merge, they're unneeded.

Replacement

They can be replaced with

encoding:"string"

The encoding should be one of the new unified encodings.

Remaining string_* functions are deprecated

Description

The string_* functions have been deprecated for a while. The remaining functions are:

string_make
string_ord
string_chr
string_to_cstring_nullable
string_max_bytes
string_increment

Rationale

They're old cruft.

Replacement

string_make should be replaced with Parrot_str_new_init. You can use Parrot_find_encoding to get an encoding from a cstring.

Replace string_ord with Parrot_str_indexed.

Replace string_chr with Parrot_str_chr.

Replace string_to_cstring_nullable with Parrot_str_to_cstring.

string_max_bytes and string_increment will be removed.