Mercurial > projects > ddmd
view dmd/backend/BC.d @ 0:10317f0c89a5
Initial commit
author | korDen |
---|---|
date | Sat, 24 Oct 2009 08:42:06 +0400 |
parents | |
children |
line wrap: on
line source
module dmd.backend.BC; enum BC { BCgoto = 1, // goto Bsucc block BCiftrue = 2, // if (Belem) goto Bsucc[0] else Bsucc[1] BCret = 3, // return (no return value) BCretexp = 4, // return with return value BCexit = 5, // never reaches end of block (like exit() was called) BCasm = 6, // inline assembler block (Belem is NULL, Bcode // contains code generated). // These blocks have one or more successors in Bsucc, // never 0 BCswitch = 7, // switch statement // Bswitch points to switch data // Default is Bsucc // Cases follow in linked list BCifthen = 8, // a BCswitch is converted to if-then // statements BCjmptab = 9, // a BCswitch is converted to a jump // table (switch value is index into // the table) BCtry = 10, // C++ try block // first block in a try-block. The first block in // Bsucc is the next one to go to, subsequent // blocks are the catch blocks BCcatch = 11, // C++ catch block BCjump = 12, // Belem specifies (near) address to jump to BC_try = 13, // SEH: first block of try-except or try-finally // Jupiter, Mars: try-catch or try-finally BC_filter = 14, // SEH exception-filter (always exactly one block) BC_finally = 15, // first block of SEH termination-handler, // or finally block BC_ret = 16, // last block of SEH termination-handler or finally block BC_except = 17, // first block of SEH exception-handler BCjcatch = 18, // first block of Jupiter or Mars catch-block BCjplace = 19, // Jupiter: placeholder BCMAX } import dmd.EnumUtils; mixin(BringToCurrentScope!(BC));