Reini Urban > B-C-1.38 > B::Stackobj

Download:
B-C-1.38.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 1.00_03   Source   Latest Release: B-C-1.52

NAME ^

B::Stackobj - Stack and type annotation helper module for the CC backend

SYNOPSIS ^

        use B::Stackobj;

DESCRIPTION ^

A simple representation of pp stacks and lexical pads for the B::CC compiler. All locals and function arguments get type annotated, for all B::CC ops which can be optimized.

For lexical pads (i.e. my or better our variables) we currently can force the type of variables according to a magic naming scheme in "load_pad" in B::CC.

    my $<name>_i;    IV integer
    my $<name>_ir;   IV integer in a pseudo register
    my $<name>_d;    NV double

Future ideas are type qualifiers as attributes

  B<double>, B<int>, B<register>, B<temp>, B<unsigned>, B<ro>

such as in

        our int $i : unsigned : ro;
        our double $d;

Type attributes for sub definitions are not spec'ed yet. Ctypes attributes and objects should also be recognized, such as c_int and c_double.

my vs our: Note that only our attributes are resolved at compile-time, my attributes are resolved at run-time. So the compiler will only see type attributes for our variables.

See "load_pad" in B::CC and Ctypes.

TODO: To represent on this stack not only PADs,SV,IV,PV,NV,BOOL,Special and a SV const, but also GV,CV,RV,AV,HV use B::Stackobj::Const.

AUTHOR ^

Malcolm Beattie MICB at cpan.org (retired)

syntax highlighting: