From 420b91db29485df39fd6e724e782c449158811cb Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 2 Jan 2007 08:33:20 +0000 Subject: Print done when done. --- indra/lscript/lscript_compile/lscript_bytecode.h | 71 ++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 indra/lscript/lscript_compile/lscript_bytecode.h (limited to 'indra/lscript/lscript_compile/lscript_bytecode.h') diff --git a/indra/lscript/lscript_compile/lscript_bytecode.h b/indra/lscript/lscript_compile/lscript_bytecode.h new file mode 100644 index 0000000000..afe7f9411b --- /dev/null +++ b/indra/lscript/lscript_compile/lscript_bytecode.h @@ -0,0 +1,71 @@ +/** + * @file lscript_bytecode.h + * @brief classes to build actual bytecode + * + * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LSCRIPT_BYTECODE_H +#define LL_LSCRIPT_BYTECODE_H + +#include "lscript_byteconvert.h" +#include "lscript_scope.h" + +class LLScriptJumpTable +{ +public: + LLScriptJumpTable(); + ~LLScriptJumpTable(); + + void addLabel(char *name, S32 offset); + void addJump(char *name, S32 offset); + + LLMap mLabelMap; + LLMap mJumpMap; +}; + +class LLScriptByteCodeChunk +{ +public: + LLScriptByteCodeChunk(BOOL b_need_jumps); + ~LLScriptByteCodeChunk(); + + void addByte(U8 byte); + void addU16(U16 data); + void addBytes(U8 *bytes, S32 size); + void addBytes(char *bytes, S32 size); + void addBytes(S32 size); + void addBytesDontInc(S32 size); + void addInteger(S32 value); + void addFloat(F32 value); + void addLabel(char *name); + void addJump(char *name); + void connectJumps(); + + U8 *mCodeChunk; + S32 mCurrentOffset; + LLScriptJumpTable *mJumpTable; +}; + +class LLScriptScriptCodeChunk +{ +public: + LLScriptScriptCodeChunk(S32 total_size); + ~LLScriptScriptCodeChunk(); + + void build(FILE *efp, FILE *bcfp); + + LLScriptByteCodeChunk *mRegisters; + LLScriptByteCodeChunk *mGlobalVariables; + LLScriptByteCodeChunk *mGlobalFunctions; + LLScriptByteCodeChunk *mStates; + LLScriptByteCodeChunk *mHeap; + S32 mTotalSize; + U8 *mCompleteCode; +}; + +extern LLScriptScriptCodeChunk *gScriptCodeChunk; + +#endif + -- cgit v1.2.3