Jamie Lokier 2a7ccceb3e
EVM: Make continuation exceptions behave as they did before
The account database code is not supposed to raise exceptions in the EVM, and
the behaviour is not well defined if it does.  It isn't compliant with EVMC
spec either.  But that will be dealt with properly when the account state-cache
is dealt with, as there is some work to be done on it.

Meanwhile, if it raises in code under `chainTo` and then `(continuation)()`,
the behaviour was changed slightly by the stack-shrink patches.

Before those patches, an exception after the recursion-point was converted to
`c.setError` "Opcode Dispatch Error" in `executeOpcodes.  After, it would
propagate out, a different behaviour.  (It still correctly walked the chain of
`c.dispose()` calls to clean up.)

It's easy to restore the original behaviour just by moving the continuation
call, so let's do that.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-04-30 11:32:42 +07:00
..
2020-07-21 13:25:27 +07:00
2019-11-13 21:49:39 +07:00
2020-11-19 14:23:07 +07:00
2020-01-20 18:36:58 +02:00
2019-01-28 12:38:23 +02:00
2018-05-28 13:22:28 +03:00
2021-04-28 15:24:14 +03:00
2019-04-17 03:56:28 +02:00
2020-07-21 00:16:59 +07:00
2019-11-13 21:49:39 +07:00