MCPcopy Create free account
hub / github.com/argotorg/solidity / extractReturndataFunction

Method extractReturndataFunction

libsolidity/codegen/YulUtilFunctions.cpp:4735–4762  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4733}
4734
4735std::string YulUtilFunctions::extractReturndataFunction()
4736{
4737 std::string const functionName = "extract_returndata";
4738
4739 return m_functionCollector.createFunction(functionName, [&]() {
4740 return util::Whiskers(R"(
4741 function <functionName>() -> data {
4742 <?supportsReturndata>
4743 switch returndatasize()
4744 case 0 {
4745 data := <emptyArray>()
4746 }
4747 default {
4748 data := <allocateArray>(returndatasize())
4749 returndatacopy(add(data, 0x20), 0, returndatasize())
4750 }
4751 <!supportsReturndata>
4752 data := <emptyArray>()
4753 </supportsReturndata>
4754 }
4755 )")
4756 ("functionName", functionName)
4757 ("supportsReturndata", m_evmVersion.supportsReturndata())
4758 ("allocateArray", allocateMemoryArrayFunction(*TypeProvider::bytesMemory()))
4759 ("emptyArray", zeroValueFunction(*TypeProvider::bytesMemory()))
4760 .render();
4761 });
4762}
4763
4764std::string YulUtilFunctions::copyConstructorArgumentsToMemoryFunction(
4765 ContractDefinition const& _contract,

Callers 2

appendBareCallMethod · 0.80
handleCatchFallbackMethod · 0.80

Calls 4

WhiskersClass · 0.85
renderMethod · 0.80
supportsReturndataMethod · 0.80
createFunctionMethod · 0.45

Tested by

no test coverage detected