Implement address(...).code in the IR

This commit is contained in:
chriseth
2020-12-11 03:00:30 +00:00
committed by Alex Beregszaszi
parent 7b347b9ec2
commit baaf7c0db8
5 changed files with 30 additions and 3 deletions
+18
View File
@@ -4055,3 +4055,21 @@ string YulUtilFunctions::copyConstructorArgumentsToMemoryFunction(
.render();
});
}
string YulUtilFunctions::externalCodeFunction()
{
string functionName = "external_code_at";
return m_functionCollector.createFunction(functionName, [&]() {
return util::Whiskers(R"(
function <functionName>(addr) -> mpos {
let length := extcodesize(addr)
mpos := <allocateArray>(length)
extcodecopy(addr, add(mpos, 0x20), 0, length)
}
)")
("functionName", functionName)
("allocateArray", allocateMemoryArrayFunction(*TypeProvider::bytesMemory()))
.render();
});
}