require(_calldatasToEMInDeployed.length == _returnDataForCodeContractInDeployed.length, "Invalid behavior requested for mock code contract: mismatch between number of calldata batches and returndata for post-deployment behavior.");
// Note: this function is the only way that the opcodes REVERT, CALLER, EXTCODESIZE, ADDRESS can appear in a code contract which passes SafetyChecker.isBytecodeSafe().
// The static analysis enforces that the EXACT functionality below is implemented by comparing to a reference bytestring.
function doSafeExecutionManagerCall(argOff, argLen, retOffset, retLen) {
let success := call(gas(), caller(), 0, argOff, argLen, retOffset, retLen)
return'subcall '+i+'('+generator.getFunctionName()+') had return status: '+EMsuccess+' and appears to have done: '+generator.interpretActualReturnData(EMdata,EMsuccess)
})
return'ovmCALL returned '+resultOfOvmCALL[0]+'\n with subcalls:'+JSON.stringify(interpretedResults)+'\n'
return'\n initcode subcall '+i+' had response status '+result[0]+' and appears to have done: '+this.getInitcodeGenerators()[i].interpretActualReturnData(result[1],result[0])
console.log('interpretation of expected: \n'+interpretationOfExpected)
expect(callResult).to.equal(testGenerator.getReturnData())//, 'got bad response, looks like it did:\n' + testGenerator.interpretActualReturnData(callResult))