//_________________________________________________________________________________________________ void SwitchInst::setTarget(U_32 i, Node* bb) { assert(bb->isBlockNode()); ConstantAreaItem * cai = getConstantAreaItem(); assert(i<cai->getSize()/sizeof(Node*)); ((Node**)cai->getValue())[i]=bb; }
//_________________________________________________________________________________________________ void SwitchInst::replaceTarget(Node * bbFrom, Node * bbTo) { assert(bbTo->isBlockNode()); ConstantAreaItem * cai = getConstantAreaItem(); Node** bbs=(Node**)cai->getValue(); #ifdef _DEBUG bool found = false; #endif for (U_32 i=0, n=cai->getSize()/sizeof(Node*); i<n; i++) { if (bbs[i]==bbFrom) { #ifdef _DEBUG found = true; #endif bbs[i]=bbTo; } } assert(found); }
Node* SwitchInst::getTarget(U_32 i)const { ConstantAreaItem * cai = getConstantAreaItem(); assert(i<cai->getSize()/sizeof(Node*)); return ((Node**)cai->getValue())[i]; }