Exemplo n.º 1
0
  void NodeGen::materializeBlock(PReg* r, SplitSig* sig,
                                 PRegBList* materialized, bool recursive) {
    Unused(recursive);
    if (r->isBlockPReg() && !materialized->contains(r)) {
      BlockPReg* bpr = (BlockPReg*)r;
      bpr->isMaterialized = true;

      // make sure the block is created
      APPEND(new BlockCreateNode(bpr, sig));
      
      // flush if uplevel-accessed
      // done by BlockCreateNode
      // if (recursive) APPEND(new FlushNode(currentScope(), bpr, true));
      materialized->append(bpr);
      
      // also make sure all uplevel-accessed blocks exist
      msig = sig; mlist = materialized; // params for materializeHelper
      bpr->nscope()->doUplevelAccesses(bpr, materializeHelper);
    }
  }