@ Override public void modelNormalInstruction ( Instruction ins , int numWordsConsumed , int numWordsProduced ) { int flags = 0 ; if ( ins instanceof InvokeInstruction ) { flags = ValueNumber . RETURN_VALUE ; } else if ( ins instanceof ArrayInstruction ) { flags = ValueNumber . ARRAY_VALUE ; } else if ( ins instanceof ConstantPushInstruction ) { flags = ValueNumber . CONSTANT_VALUE ; } // Get the input operands to this instruction. ValueNumber [ ] inputValueList = popInputValues ( numWordsConsumed ) ; // See if we have the output operands in the cache. // If not, push default (fresh) values for the output, // and add them to the cache. ValueNumber [ ] outputValueList = getOutputValues ( inputValueList , numWordsProduced , flags ) ; if ( VERIFY_INTEGRITY ) { checkConsumedAndProducedValues ( ins , inputValueList , outputValueList ) ; } // Push output operands on stack. pushOutputValues ( outputValueList ) ; }
This is the default instruction modeling method .