| 120 | } |
| 121 | |
| 122 | void CompilerUtils::returnDataToArray() |
| 123 | { |
| 124 | if (m_context.evmVersion().supportsReturndata()) |
| 125 | { |
| 126 | m_context << Instruction::RETURNDATASIZE; |
| 127 | m_context.appendInlineAssembly(R"({ |
| 128 | switch v case 0 { |
| 129 | v := 0x60 |
| 130 | } default { |
| 131 | v := mload(0x40) |
| 132 | mstore(0x40, add(v, and(add(returndatasize(), 0x3f), not(0x1f)))) |
| 133 | mstore(v, returndatasize()) |
| 134 | returndatacopy(add(v, 0x20), 0, returndatasize()) |
| 135 | } |
| 136 | })", {"v"}); |
| 137 | } |
| 138 | else |
| 139 | pushZeroPointer(); |
| 140 | } |
| 141 | |
| 142 | void CompilerUtils::accessCalldataTail(Type const& _type) |
| 143 | { |
no test coverage detected