Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

dmd.backend.dt

Intermediate representation for static data
Compiler implementation of the D programming language.
Authors:
nothrow @nogc @trusted void dt_free(dt_t* dt);
Free a data definition struct.
nothrow @nogc @safe void dt_term();
Free free list.
nothrow @nogc @safe void dtpatchoffset(dt_t* dt, uint offset);
nothrow @nogc @trusted void init_common(Symbol* s);
Make a common block for s.
nothrow @nogc @trusted uint dt_size(const(dt_t)* dtstart);
Compute size of a dt
nothrow @nogc @safe bool dtallzeros(const(dt_t)* dt);
Return true if dt is all zeros.
nothrow @nogc @safe bool dtpointers(const(dt_t)* dtstart);
Return true if dt contains pointers (requires relocations).
nothrow @nogc @safe void dt2common(dt_t** pdt);
Turn DT_azeros into DTcommon
struct DtBuilder;
nothrow @safe void checkInitialized();
Useful for checking if DtBuilder got initialized.
nothrow @trusted void print();
Print state of DtBuilder for debugging.
nothrow @safe dt_t* finish();
Finish and return completed data structure.
nothrow @trusted void nbytes(uint size, const(char)* ptr);
Append data represented by ptr[0..size]
nothrow @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 log2() of byte alignment of pointed-to data
nothrow @trusted void dword(int value);
Write 4 bytes of value.
nothrow @trusted void size(ulong value);
Write a size_t value.
nothrow @safe void nzeros(uint size);
Write a bunch of zeros
nothrow @trusted void xoff(Symbol* s, uint offset, tym_t ty);
Write a reference to s+offset
nothrow @safe void xoff(Symbol* s, uint offset);
Create reference to s+offset
nothrow @trusted dt_t* xoffpatch(Symbol* s, uint offset, tym_t ty);
Like xoff(), but returns handle with which to patch 'offset' value.
nothrow @trusted Symbol* dtoff(dt_t* dt, uint offset);
Create a reference to another dt.
Returns:
the internal symbol used for the other dt
nothrow @trusted void coff(uint offset);
Write reference to offset in code segment.
nothrow @safe void cat(dt_t* dt);
Append dt to data.
nothrow @safe void cat(ref DtBuilder dtb);
Append dtb to data.
nothrow @trusted void repeat(dt_t* dt, size_t count);
Repeat a list of dt_t's count times.
nothrow @safe uint length();
Return size of data.
nothrow @safe bool isZeroLength();
Return true if size of data is 0.
nothrow @nogc @safe dt_t* dt_get_nzeros(uint n);
Temporary hack to initialize a dt_t* for C.