aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2011-08-09 16:49:39 +0200
committerBjörn Gustavsson <[email protected]>2011-10-11 11:36:37 +0200
commit2a30746d09f467c13e9361774867462ae4f2bd32 (patch)
tree1823e57adc1d31516cf366f3726ec6a736f6d8ea /erts/emulator/beam
parente87760199eb9d3c02480e92a0bcf76864c750972 (diff)
downloadotp-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.c6
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);
}