dmd.backend.dt

Intermediate representation for static data

Discussion

Compiler implementation of the D programming language.

Authors

Walter Bright

  • Declaration

    nothrow @nogc @trusted void dt_free(dt_t* dt);

    Free a data definition struct.

  • Declaration

    nothrow @nogc @safe void dt_term();

    Free free list.

  • Declaration

    nothrow @nogc @safe void dtpatchoffset(dt_t* dt, uint offset);

  • Declaration

    nothrow @nogc @trusted void init_common(Symbol* s);

    Make a common block for s.

  • Declaration

    nothrow @nogc @trusted uint dt_size(const(dt_t)* dtstart);

    Compute size of a dt

  • Declaration

    nothrow @nogc @safe bool dtallzeros(const(dt_t)* dt);

    Return true if dt is all zeros.

  • Declaration

    nothrow @nogc @safe bool dtpointers(const(dt_t)* dtstart);

    Return true if dt contains pointers (requires relocations).

  • Declaration

    nothrow @nogc @safe void dt2common(dt_t** pdt);

    Turn DT_azeros into DTcommon

  • Declaration

    struct DtBuilder;

    • Declaration

      nothrow @nogc @safe void checkInitialized();

      Useful for checking if DtBuilder got initialized.

    • Declaration

      nothrow @nogc @trusted void print();

      Print state of DtBuilder for debugging.

    • Declaration

      nothrow @nogc @safe dt_t* finish();

      Finish and return completed data structure.

    • Declaration

      nothrow @nogc @trusted void nbytes(uint size, const(char)* ptr);

      Append data represented by ptr[0..size]

    • Declaration

      nothrow @nogc @trusted void abytes(tym_t ty, uint offset, uint size, const(char)* ptr, uint nzeros, ubyte _align);

      Write a reference to the data ptr[0..size+nzeros]

      Parameters

      tym_t ty

      pointer type

      uint offset

      to be added to offset of data generated

      uint size

      number of bytes pointed to by ptr

      const(char)* ptr

      points to data bytes

      uint nzeros

      number of zero bytes to add to the end

      ubyte _align

      alignment of pointed-to data

    • Declaration

      nothrow @nogc @trusted void dword(int value);

      Write 4 bytes of value.

    • Declaration

      nothrow @nogc @trusted void size(ulong value);

      Write a size_t value.

    • Declaration

      nothrow @nogc @safe void nzeros(uint size);

      Write a bunch of zeros

    • Declaration

      nothrow @nogc @trusted void xoff(Symbol* s, uint offset, tym_t ty);

      Write a reference to s+offset

    • Declaration

      nothrow @nogc @safe void xoff(Symbol* s, uint offset);

      Create reference to s+offset

    • Declaration

      nothrow @nogc @trusted dt_t* xoffpatch(Symbol* s, uint offset, tym_t ty);

      Like xoff(), but returns handle with which to patch 'offset' value.

    • Declaration

      nothrow @nogc @trusted Symbol* dtoff(dt_t* dt, uint offset);

      Create a reference to another dt.

      Return Value

      the internal symbol used for the other dt

    • Declaration

      nothrow @nogc @trusted void coff(uint offset);

      Write reference to offset in code segment.

    • cat

      Declaration

      nothrow @nogc @safe void cat(dt_t* dt);

      Append dt to data.

    • cat

      Declaration

      nothrow @nogc @safe void cat(ref DtBuilder dtb);

      Append dtb to data.

    • Declaration

      nothrow @nogc @trusted void repeat(dt_t* dt, size_t count);

      Repeat a list of dt_t's count times.

    • Declaration

      nothrow @nogc @safe uint length();

      Return size of data.

    • Declaration

      nothrow @nogc @safe bool isZeroLength();

      Return true if size of data is 0.

  • Declaration

    nothrow @nogc @safe dt_t* dt_get_nzeros(uint n);

    Temporary hack to initialize a dt_t* for C.