diff options
author | Björn Gustavsson <[email protected]> | 2011-08-09 16:49:39 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-10-11 11:36:37 +0200 |
commit | 2a30746d09f467c13e9361774867462ae4f2bd32 (patch) | |
tree | 1823e57adc1d31516cf366f3726ec6a736f6d8ea /erts/emulator/beam | |
parent | e87760199eb9d3c02480e92a0bcf76864c750972 (diff) | |
download | otp-2a30746d09f467c13e9361774867462ae4f2bd32.tar.gz otp-2a30746d09f467c13e9361774867462ae4f2bd32.tar.bz2 otp-2a30746d09f467c13e9361774867462ae4f2bd32.zip |
Introduce 'try_me_else_fail'
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/beam_load.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c index 7d2b4dea28..655b5496a8 100644 --- a/erts/emulator/beam/beam_load.c +++ b/erts/emulator/beam/beam_load.c @@ -4225,6 +4225,7 @@ transform_engine(LoaderState* st) GenOp* instr; Uint* pc; int rval; + static Uint restart_fail[1] = {TOP_fail}; ASSERT(gen_opc[st->genop->op].transform != -1); pc = op_transform + gen_opc[st->genop->op].transform; @@ -4528,10 +4529,13 @@ transform_engine(LoaderState* st) restart += *pc++; ASSERT(*pc < NUM_TOPS); /* Valid instruction? */ break; + case TOP_try_me_else_fail: + restart = restart_fail; + break; case TOP_end: RETURN(TE_OK); case TOP_fail: - RETURN(TE_FAIL) + RETURN(TE_FAIL); default: ASSERT(0); } |