int getNth( int n ) { TRACELOG; if ( ! isMemoized(n) ) { compute(n); } return getMemoized(n); }
void BlockCreateNode::gen() { BasicNode::gen(); if (block()->primFailBlockScope) { // must generate block (in primitive fail branch) assert(!isMemoized(), "shouldn't be memoized"); genCall(); } else if (isMemoized()) { // test if already created theAssembler->Comment("test memoized block"); Location t = genHelper->moveToReg(block(), Temp1); Location t2 = genHelper->loadImmediateOop(deadBlockPR, Temp2, false); theAssembler->SubCCR(t, t2, G0); Label* done = theAssembler->BneForward(false); genCall(); done->define(); } else { // block has already been created (by initial BlockClone node) } }