Changeset 395

Show
Ignore:
Timestamp:
02/21/10 21:21:56 (6 months ago)
Author:
walter
Message:

asserts to use ModuleInfo?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/backend/rtlsym.h

    r251 r395  
    4545SYMBOL_MARS(MONITOR_HANDLER, FLfunc,FREGSAVED,"_d_monitor_handler", 0, 0) \ 
    4646SYMBOL_MARS(MONITOR_PROLOG,  FLfunc,FREGSAVED,"_d_monitor_prolog",0,t) \ 
    4747SYMBOL_MARS(MONITOR_EPILOG,  FLfunc,FREGSAVED,"_d_monitor_epilog",0,t) \ 
    4848SYMBOL_MARS(DCOVER,      FLfunc,FREGSAVED,"_d_cover_register", 0, t) \ 
    4949SYMBOL_MARS(DASSERT,         FLfunc,FREGSAVED,"_d_assert", SFLexit, t) \ 
     50SYMBOL_MARS(DASSERTM,        FLfunc,FREGSAVED,"_d_assertm", SFLexit, t) \ 
    5051SYMBOL_MARS(DASSERT_MSG,     FLfunc,FREGSAVED,"_d_assert_msg", SFLexit, t) \ 
    5152SYMBOL_MARS(DARRAY,      FLfunc,FREGSAVED,"_d_array_bounds", SFLexit, t) \ 
    5253SYMBOL_MARS(DINVARIANT,      FLfunc,FREGSAVED,"D9invariant12_d_invariantFC6ObjectZv", 0, tsdlib) \ 
    5354SYMBOL_MARS(_DINVARIANT,     FLfunc,FREGSAVED,"_D9invariant12_d_invariantFC6ObjectZv", 0, tsdlib) \ 
    5455SYMBOL_MARS(MEMCPY,      FLfunc,FREGSAVED,"memcpy",    0, t) \ 
     
    6667SYMBOL_MARS(CRITICALENTER, FLfunc,FREGSAVED,"_d_criticalenter",0, t) \ 
    6768SYMBOL_MARS(CRITICALEXIT,  FLfunc,FREGSAVED,"_d_criticalexit",0, t) \ 
    6869SYMBOL_MARS(SWITCH_STRING, FLfunc,FREGSAVED,"_d_switch_string", 0, t) \ 
    6970SYMBOL_MARS(SWITCH_USTRING,FLfunc,FREGSAVED,"_d_switch_ustring", 0, t) \ 
    7071SYMBOL_MARS(SWITCH_DSTRING,FLfunc,FREGSAVED,"_d_switch_dstring", 0, t) \ 
    71 SYMBOL_MARS(DSWITCHERR,    FLfunc,FREGSAVED,"_d_switch_error", 0, t) \ 
     72SYMBOL_MARS(DSWITCHERR,    FLfunc,FREGSAVED,"_d_switch_error", SFLexit, t) \ 
    7273SYMBOL_MARS(DHIDDENFUNC,   FLfunc,FREGSAVED,"_d_hidden_func", 0, t) \ 
    7374SYMBOL_MARS(NEWCLASS,      FLfunc,FREGSAVED,"_d_newclass", 0, t) \ 
    7475SYMBOL_MARS(NEWARRAYT,     FLfunc,FREGSAVED,"_d_newarrayT", 0, t) \ 
    7576SYMBOL_MARS(NEWARRAYIT,    FLfunc,FREGSAVED,"_d_newarrayiT", 0, t) \ 
    7677SYMBOL_MARS(NEWARRAYMT,    FLfunc,FREGSAVED,"_d_newarraymT", 0, t) \ 
  • trunk/src/glue.c

    r393 r395  
    469469    Symbol *ma = i ? marray : massert; 
    470470 
    471471    if (ma) 
    472472    { 
    473473        elem *elinnum; 
    474         elem *efilename; 
    475474 
    476475        localgot = NULL; 
    477476 
    478477        // Call dassert(filename, line) 
    479478        // Get sole parameter, linnum 
     
    491490        symbol_add(sp); 
    492491 
    493492        elinnum = el_var(sp); 
    494493        } 
    495494 
    496         efilename = toEmodulename(); 
    497  
    498         elem *e = el_var(rtlsym[i ? RTLSYM_DARRAY : RTLSYM_DASSERT]); 
     495        elem *efilename = el_ptr(toSymbol()); 
     496 
     497        elem *e = el_var(rtlsym[i ? RTLSYM_DARRAY : RTLSYM_DASSERTM]); 
    499498        e = el_bin(OPcall, TYvoid, e, el_param(elinnum, efilename)); 
    500499 
    501500        block *b = block_calloc(); 
    502501        b->BC = BCret; 
    503502        b->Belem = e; 
     
    11571156 
    11581157/************************************** 
    11591158 * Generate elem that is a pointer to the module file name. 
    11601159 */ 
    11611160 
    1162 elem *Module::toEmodulename() 
    1163 { 
    1164    elem *efilename; 
    1165  
    1166     // Get filename 
    1167     if (needModuleInfo()) 
    1168     {   Symbol *si; 
    1169  
    1170     /* Class ModuleInfo is defined in std.moduleinfo. 
    1171      * The module name will be at nameoffset from the start of it. 
    1172      */ 
    1173  
    1174     si = toSymbol(); 
    1175  
    1176     //printf("nameoffset = x%x\n", nameoffset); 
    1177     assert(nameoffset >= 4); 
    1178  
    1179     efilename = el_ptr(si); 
    1180     efilename = el_bin(OPadd, TYnptr, efilename, el_long(TYsize_t, nameoffset)); 
    1181     efilename = el_pair(TYdarray, el_long(TYsize_t, namelen), efilename); 
    1182     } 
    1183     else // generate our own filename 
    1184     { 
    1185     efilename = toEfilename(); 
    1186     } 
    1187     return efilename; 
    1188 } 
    1189  
    11901161elem *Module::toEfilename() 
    11911162{   elem *efilename; 
    11921163 
    11931164    if (!sfilename) 
    11941165    { 
  • trunk/src/module.h

    r393 r395  
    168168    Symbol *toModuleArray();    // get module array bounds function 
    169169 
    170170 
    171171    static Symbol *gencritsec(); 
    172172    elem *toEfilename(); 
    173     elem *toEmodulename(); 
    174173 
    175174    Symbol *toSymbol(); 
    176175    void genmoduleinfo(); 
    177176 
    178177    Module *isModule() { return this; } 
  • trunk/src/s2ir.c

    r288 r395  
    11501150    block_next(blx,BCgoto,NULL); 
    11511151} 
    11521152 
    11531153void SwitchErrorStatement::toIR(IRState *irs) 
    11541154{ 
    1155     elem *e; 
    1156     elem *elinnum; 
    1157     elem *efilename; 
    11581155    Blockx *blx = irs->blx; 
    11591156 
    11601157    //printf("SwitchErrorStatement::toIR()\n"); 
    11611158 
    1162     efilename = blx->module->toEmodulename(); 
    1163     elinnum = el_long(TYint, loc.linnum); 
    1164     e = el_bin(OPcall, TYvoid, el_var(rtlsym[RTLSYM_DSWITCHERR]), el_param(elinnum, efilename)); 
     1159    elem *efilename = el_ptr(blx->module->toSymbol()); 
     1160    elem *elinnum = el_long(TYint, loc.linnum); 
     1161    elem *e = el_bin(OPcall, TYvoid, el_var(rtlsym[RTLSYM_DSWITCHERR]), el_param(elinnum, efilename)); 
    11651162    block_appendexp(blx->curblock, e); 
    11661163} 
    11671164 
    11681165/************************************** 
    11691166 */ 
  • trunk/src/toobj.c

    r394 r395  
    171171    // Put out module name as a 0-terminated string, to save bytes 
    172172    nameoffset = dt_size(dt); 
    173173    const char *name = toPrettyChars(); 
    174174    namelen = strlen(name); 
    175175    dtnbytes(&dt, namelen + 1, name); 
     176    //printf("nameoffset = x%x\n", nameoffset); 
    176177#else 
    177178    /* The layout is: 
    178179       { 
    179180        void **vptr; 
    180181        monitor_t monitor;