/*********************************** * Output function thunk. */ void outthunk(symbol *sthunk,symbol *sfunc,unsigned p,tym_t thisty, targ_size_t d,int i,targ_size_t d2) { cod3_thunk(sthunk,sfunc,p,thisty,d,i,d2); sthunk->Sfunc->Fflags &= ~Fpending; sthunk->Sfunc->Fflags |= Foutput; /* mark it as having been output */ }
Symbol *FuncDeclaration::toThunkSymbol(int offset) { toSymbol(this); Symbol *sthunk = symbol_generate(SCstatic, csym->Stype); sthunk->Sflags |= SFLimplem; cod3_thunk(sthunk, csym, 0, TYnptr, -offset, -1, 0); return sthunk; }
Symbol *toThunkSymbol(FuncDeclaration *fd, int offset) { toSymbol(fd); Symbol *sthunk = symbol_generate(SCstatic, fd->csym->Stype); sthunk->Sflags |= SFLimplem; cod3_thunk(sthunk, fd->csym, 0, TYnptr, -offset, -1, 0); return sthunk; }
Symbol *FuncDeclaration::toThunkSymbol(int offset) { Symbol *sthunk; toSymbol(); #if 0 char *id; char *n; type *t; n = sym->Sident; id = (char *) alloca(8 + 5 + strlen(n) + 1); sprintf(id,"_thunk%d__%s", offset, n); s = symbol_calloc(id); slist_add(s); s->Stype = csym->Stype; s->Stype->Tcount++; #endif sthunk = symbol_generate(SCstatic, csym->Stype); sthunk->Sflags |= SFLimplem; cod3_thunk(sthunk, csym, 0, TYnptr, -offset, -1, 0); return sthunk; }