X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FDisassembler.c;h=8b526c0af5aae669f9660159f97eb23ea9c3729a;hb=916abd028990c7fb1588d1792f3ac799a257ba21;hp=65809d38833c0a48cc7c647e3899aab2a38ab155;hpb=7215e7347b9e46ef5991bc07140dfd58b0a70cad;p=ghc-hetmet.git diff --git a/ghc/rts/Disassembler.c b/ghc/rts/Disassembler.c index 65809d3..8b526c0 100644 --- a/ghc/rts/Disassembler.c +++ b/ghc/rts/Disassembler.c @@ -5,12 +5,13 @@ * Copyright (c) 1994-1998. * * $RCSfile: Disassembler.c,v $ - * $Revision: 1.18 $ - * $Date: 2001/01/05 15:24:28 $ + * $Revision: 1.25 $ + * $Date: 2002/07/17 09:21:49 $ * ---------------------------------------------------------------------------*/ -#ifdef GHCI +#ifdef DEBUG +#include "PosixSource.h" #include "Rts.h" #include "RtsAPI.h" #include "RtsUtils.h" @@ -23,6 +24,8 @@ #include "Disassembler.h" #include "Interpreter.h" +#include + /* -------------------------------------------------------------------------- * Disassembler * ------------------------------------------------------------------------*/ @@ -44,6 +47,17 @@ int disInstr ( StgBCO *bco, int pc ) StgInfoTable** itbls = (StgInfoTable**)(&itbls_arr->payload[0]); switch (instrs[pc++]) { + case bci_SWIZZLE: + fprintf(stderr, "SWIZZLE stkoff %d by %d\n", + instrs[pc], (signed int)instrs[pc+1]); + pc += 2; break; + case bci_CCALL: + fprintf(stderr, "CCALL marshaller at 0x%x\n", + literals[instrs[pc]] ); + pc += 1; break; + case bci_STKCHECK: + fprintf(stderr, "STKCHECK %d\n", instrs[pc] ); + pc += 1; break; case bci_ARGCHECK: fprintf(stderr, "ARGCHECK %d\n", instrs[pc] ); pc += 1; break; @@ -98,6 +112,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]); @@ -190,4 +211,4 @@ void disassemble( StgBCO *bco ) ASSERT(pc == nbcs+1); } -#endif /* GHCI */ +#endif /* DEBUG */