コード例 #1
0
void
PersistentInstructionIdGenerator::runPass(IRManager& irm) {
    MemoryManager mm("PersistentInstructionIdGenerator::runPass");
    
    MethodDesc& methodDesc = irm.getMethodDesc();

    StlVector<Node*> nodes(mm);
    irm.getFlowGraph().getNodesPostOrder(nodes);

    StlVector<Node*>::reverse_iterator i;
    for(i = nodes.rbegin(); i != nodes.rend(); ++i) {
        Node* node = *i;
        Inst* label = (Inst*)node->getFirstInst();
        for(Inst* inst = label->getNextInst(); inst != NULL; inst = inst->getNextInst())
            inst->setPersistentInstructionId(PersistentInstructionId(&methodDesc, inst->getId() - irm.getMinimumInstId()));
    }
}