Commit 44f0f21f authored by sewardj's avatar sewardj

[project @ 2001-03-21 10:56:04 by sewardj]

RTS support for the ugly tagToEnum# hack.  Actually a very general
thing -- just a bytecode unconditional jump, so we can do more general
control-flow in BCOs.
parent 7d61cc6a
/* -----------------------------------------------------------------------------
* $Id: Bytecodes.h,v 1.5 2001/02/06 12:01:00 sewardj Exp $
* $Id: Bytecodes.h,v 1.6 2001/03/21 10:56:04 sewardj Exp $
*
* (c) The GHC Team, 1998-2000
*
......@@ -51,6 +51,7 @@
#define bci_ENTER 24
#define bci_RETURN 25
#define bci_STKCHECK 26
#define bci_JMP 27
/* If a BCO definitely requires less than this many words of stack,
......
......@@ -5,8 +5,8 @@
* Copyright (c) 1994-1998.
*
* $RCSfile: Disassembler.c,v $
* $Revision: 1.19 $
* $Date: 2001/02/11 17:51:07 $
* $Revision: 1.20 $
* $Date: 2001/03/21 10:56:04 $
* ---------------------------------------------------------------------------*/
#ifdef DEBUG
......@@ -98,6 +98,13 @@ int disInstr ( StgBCO *bco, int pc )
fprintf(stderr, "\n");
pc += 2; break;
case bci_CASEFAIL:
fprintf(stderr, "CASEFAIL\n" );
break;
case bci_JMP:
fprintf(stderr, "JMP to %d\n", instrs[pc]);
pc += 1; break;
case bci_TESTLT_I:
fprintf(stderr, "TESTLT_I %d, fail to %d\n", literals[instrs[pc]],
instrs[pc+1]);
......
......@@ -5,8 +5,8 @@
* Copyright (c) 1994-2000.
*
* $RCSfile: Interpreter.c,v $
* $Revision: 1.20 $
* $Date: 2001/02/15 14:30:07 $
* $Revision: 1.21 $
* $Date: 2001/03/21 10:56:04 $
* ---------------------------------------------------------------------------*/
#include "Rts.h"
......@@ -738,6 +738,12 @@ StgThreadReturnCode interpretBCO ( Capability* cap )
}
}
case bci_JMP: {
/* BCO_NEXT modifies bciPtr, so be conservative. */
int nextpc = BCO_NEXT;
bciPtr = nextpc;
goto nextInsn;
}
case bci_CASEFAIL:
barf("interpretBCO: hit a CASEFAIL");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment