@@ -71,7 +71,6 @@ evmc::VM& EVMHost::getVM(std::string const& _path)
7171 std::cerr << " :" << std::endl << errorMsg;
7272 std::cerr << std::endl;
7373 }
74- vms[_path]->set_option (" validate_eof" , " 1" );
7574 }
7675
7776 if (vms.count (_path) > 0 )
@@ -315,6 +314,8 @@ evmc::Result EVMHost::call(evmc_message const& _message) noexcept
315314 }
316315 }
317316
317+ solAssert (message.kind != EVMC_EOFCREATE );
318+
318319 if (message.kind == EVMC_CREATE )
319320 {
320321 // TODO is the nonce incremented on failure, too?
@@ -350,17 +351,13 @@ evmc::Result EVMHost::call(evmc_message const& _message) noexcept
350351
351352 code = evmc::bytes (message.input_data , message.input_data + message.input_size );
352353 }
353- else if (message.kind == EVMC_CREATE2 || message. kind == EVMC_EOFCREATE )
354+ else if (message.kind == EVMC_CREATE2 )
354355 {
355356 h160 createAddress (keccak256 (
356357 bytes{0xff } +
357358 bytes (std::begin (message.sender .bytes ), std::end (message.sender .bytes )) +
358359 bytes (std::begin (message.create2_salt .bytes ), std::end (message.create2_salt .bytes )) +
359- keccak256 (
360- message.kind == EVMC_CREATE2 ?
361- bytes (message.input_data , message.input_data + message.input_size ) :
362- bytes (message.code , message.code + message.code_size )
363- ).asBytes ()
360+ keccak256 (bytes (message.input_data , message.input_data + message.input_size )).asBytes ()
364361 ), h160::AlignRight);
365362
366363 message.recipient = convertToEVMC (createAddress);
@@ -375,16 +372,14 @@ evmc::Result EVMHost::call(evmc_message const& _message) noexcept
375372 return result;
376373 }
377374
378- if (message.kind == EVMC_CREATE2 )
379- code = evmc::bytes (message.input_data , message.input_data + message.input_size );
380- else // EOFCREATE
381- code = evmc::bytes (message.code , message.code + message.code_size );
375+
376+ code = evmc::bytes (message.input_data , message.input_data + message.input_size );
382377 }
383378 else
384379 code = accounts[message.code_address ].code ;
385380
386381 auto & destination = accounts[message.recipient ];
387- if (message.kind == EVMC_CREATE || message.kind == EVMC_CREATE2 || message. kind == EVMC_EOFCREATE )
382+ if (message.kind == EVMC_CREATE || message.kind == EVMC_CREATE2 )
388383 // Mark account as created if it is a CREATE or CREATE2 call
389384 // TODO: Should we roll changes back on failure like we do for `accounts`?
390385 m_newlyCreatedAccounts.emplace (message.recipient );
@@ -421,7 +416,7 @@ evmc::Result EVMHost::call(evmc_message const& _message) noexcept
421416 }
422417 evmc::Result result = m_vm.execute (*this , m_evmRevision, message, code.data (), code.size ());
423418
424- if (message.kind == EVMC_CREATE || message.kind == EVMC_CREATE2 || message. kind == EVMC_EOFCREATE )
419+ if (message.kind == EVMC_CREATE || message.kind == EVMC_CREATE2 )
425420 {
426421 int64_t codeDepositGas = static_cast <int64_t >(evmasm::GasCosts::createDataGas * result.output_size );
427422 result.gas_left -= codeDepositGas;
@@ -434,7 +429,6 @@ evmc::Result EVMHost::call(evmc_message const& _message) noexcept
434429 }
435430 else
436431 {
437- // TODO: Add proper codehash calculation for EOF.
438432 m_totalCodeDepositGas += codeDepositGas;
439433 result.create_address = message.recipient ;
440434 destination.code = evmc::bytes (result.output_data , result.output_data + result.output_size );
@@ -1387,7 +1381,7 @@ void EVMHostPrinter::callRecords()
13871381 case evmc_call_kind::EVMC_CREATE2 :
13881382 return " CREATE2" ;
13891383 case evmc_call_kind::EVMC_EOFCREATE :
1390- return " EOFCREATE " ;
1384+ solAssert ( false ); // EOF is not supported.
13911385 }
13921386 unreachable ();
13931387 };
0 commit comments