summaryrefslogtreecommitdiff
path: root/src/runtime/c/teyjus/simulator/siminit.c
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2017-04-12 10:31:01 +0000
committerkrasimir <krasimir@chalmers.se>2017-04-12 10:31:01 +0000
commit456f0a5733a3b688ebd3f5b3db35f60400ca7abe (patch)
tree7b6a931a099ffe31402bc59690263bf34374e4c3 /src/runtime/c/teyjus/simulator/siminit.c
parenta8eaa2f2e560547e63c7976960435e1ae23a22b1 (diff)
remove the teyjus and utils folders
Diffstat (limited to 'src/runtime/c/teyjus/simulator/siminit.c')
-rw-r--r--src/runtime/c/teyjus/simulator/siminit.c275
1 files changed, 0 insertions, 275 deletions
diff --git a/src/runtime/c/teyjus/simulator/siminit.c b/src/runtime/c/teyjus/simulator/siminit.c
deleted file mode 100644
index b6de2acea..000000000
--- a/src/runtime/c/teyjus/simulator/siminit.c
+++ /dev/null
@@ -1,275 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//Copyright 2008
-// Andrew Gacek, Steven Holte, Gopalan Nadathur, Xiaochu Qi, Zach Snow
-//////////////////////////////////////////////////////////////////////////////
-// This file is part of Teyjus. //
-// //
-// Teyjus is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// Teyjus is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with Teyjus. If not, see <http://www.gnu.org/licenses/>. //
-//////////////////////////////////////////////////////////////////////////////
-/**************************************************************************/
-/* */
-/* File siminit.c. */
-/**************************************************************************/
-#ifndef SIMINIT_C
-#define SIMINIT_C
-
-#include "siminit.h"
-#include "abstmachine.h"
-#include "dataformats.h"
-#include "io-datastructures.h"
-#include "builtins/builtins.h"
-#include "../tables/instructions.h"
-#include "../system/error.h"
-#include "../system/message.h"
-
-#include <stdio.h>
-/***************************######********************************************
- * ERROR INFORMATION
- *********************************######**************************************/
-static MSG_Msg SIM_errorMessages[SIM_NUM_ERROR_MESSAGES] =
-{
- { SIM_ERROR,
- 0,
- "Simulator: ",
- 0, 0, 0 },
- { SIM_ERROR_TOO_MANY_ABSTRACTIONS,
- SIM_ERROR,
- "Abstraction embedding depth has exceeded maximum of %d.",
- EM_NEWLINE, EM_TOP_LEVEL, 4 },
- { SIM_ERROR_TOO_MANY_ARGUMENTS,
- SIM_ERROR,
- "Application arguments has exceeded maximum of %d.",
- EM_NEWLINE, EM_TOP_LEVEL, 4 },
- { SIM_ERROR_TOO_MANY_UNIV_QUANTS,
- SIM_ERROR,
- "Too many universal quantifiers.",
- EM_NEWLINE, EM_TOP_LEVEL, 3 },
- { SIM_ERROR_HEAP_TOO_BIG,
- SIM_ERROR,
- "Specified heap size (%uK) is larger than maximum of 256Gb.",
- EM_NEWLINE, EM_ABORT, 1 },
- { SIM_ERROR_HEAP_TOO_SMALL,
- SIM_ERROR,
- "Specified heap size (%uK) is smaller than minimum of 10K.",
- EM_NEWLINE, EM_ABORT, 1 },
- { SIM_ERROR_CANNOT_ALLOCATE_HEAP,
- SIM_ERROR_CANNOT_ALLOCATE_HEAP_MESSAGE,
- "",
- SIM_ERROR_CANNOT_ALLOCATE_HEAP_SUGGESTION, EM_ABORT, 1 },
- { SIM_ERROR_CANNOT_ALLOCATE_HEAP_MESSAGE,
- SIM_ERROR,
- "Could not allocate heap of size %uK at 0x%08x using %s.",
- EM_NEWLINE, EM_NO_EXN, 1 },
- { SIM_ERROR_CANNOT_ALLOCATE_HEAP_SUGGESTION,
- SIM_ERROR,
- "Try modifying the configuration and recompiling.",
- EM_NEWLINE, EM_NO_EXN, 1 },
- { SIM_ERROR_TRAIL_OVERFL,
- SIM_ERROR,
- "Trail overflow.",
- EM_NEWLINE, EM_TOP_LEVEL, 1 },
- { SIM_ERROR_HEAP_OVERFL,
- SIM_ERROR,
- "Heap overflow.",
- EM_NEWLINE, EM_TOP_LEVEL, 1 },
- { SIM_ERROR_STACK_OVERFL,
- SIM_ERROR,
- "Stack overflow.",
- EM_NEWLINE, EM_TOP_LEVEL, 1 },
- { SIM_ERROR_PDL_OVERFL,
- SIM_ERROR,
- "PDL overflow.",
- EM_NEWLINE, EM_TOP_LEVEL, 1 }
-};
-
-
-/*************************************************************************/
-/* SETTING UP SPECIAL CODE SEGMENTS */
-/*************************************************************************/
-static const int SINIT_initSize = 31;
-
-static void SINIT_initCode()
-{
- MemPtr nhreg = AM_hreg + SINIT_initSize;
- CSpacePtr myhreg = (CSpacePtr)AM_hreg;
-
- AM_heapError(nhreg);
-
- //builtinCode
- AM_builtinCode = myhreg;
- *((INSTR_OpCode*)myhreg) = builtin; //builtin ...
- myhreg += INSTR_I1X_LEN;
-
- //eqCode
- AM_eqCode = myhreg;
- *((INSTR_OpCode*)myhreg) = pattern_unify_t; //pattern_unify A1, A2
- *((INSTR_RegInd*)(myhreg + INSTR_RRX_R1)) = 1;
- *((INSTR_RegInd*)(myhreg + INSTR_RRX_R2)) = 2;
- myhreg += INSTR_RRX_LEN;
- *((INSTR_OpCode*)myhreg) = finish_unify; //finish_unify
- myhreg += INSTR_X_LEN;
- *((INSTR_OpCode*)myhreg) = proceed; //proceed
- myhreg += INSTR_X_LEN;
-
- //failCode
- AM_failCode = myhreg;
- *((INSTR_OpCode*)myhreg) = fail; //fail
- myhreg += INSTR_X_LEN;
-
- //andCode
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1LX_I1)) = 2;//"call" 2 L
- myhreg += INSTR_I1LX_LEN;
- AM_andCode = myhreg;
- *((INSTR_OpCode*)myhreg) = put_value_p; //put_value Y1, A1
- *((INSTR_EnvInd*)(myhreg + INSTR_ERX_E)) = 1;
- *((INSTR_RegInd*)(myhreg + INSTR_ERX_R)) = 1;
- myhreg += INSTR_ERX_LEN;
- *((INSTR_OpCode*)myhreg) = put_level; //put_level Y2
- *((INSTR_EnvInd*)(myhreg + INSTR_EX_E)) = 2;
- myhreg += INSTR_EX_LEN;
- *((INSTR_OpCode*)myhreg) = deallocate; //deallocate
- myhreg += INSTR_X_LEN;
-
- //solveCode
- AM_solveCode = myhreg;
- *((INSTR_OpCode*)myhreg) = builtin; //builtin BI_SOLVE
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1X_I1)) = BI_SOLVE;
- myhreg += INSTR_I1X_LEN;
-
- //proceed
- AM_proceedCode = myhreg; //proceed
- *((INSTR_OpCode*)myhreg) = proceed;
- myhreg += INSTR_X_LEN;
-
- //orCode
- AM_orCode = myhreg;
- *((INSTR_OpCode*)myhreg) = trust_me; //trust_me 1
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1WPX_I1)) = 1;
- myhreg += INSTR_I1WPX_LEN;
- *((INSTR_OpCode*)myhreg) = builtin; //builtin BI_SOLVE
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1X_I1)) = BI_SOLVE;
- myhreg += INSTR_I1X_LEN;
-
- //allcode
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1LX_I1)) = 0; //"call" 0 L
- myhreg += INSTR_I1LX_LEN;
- AM_allCode = myhreg;
- *((INSTR_OpCode*)myhreg) = decr_universe; //decr_universe
- myhreg += INSTR_X_LEN;
- *((INSTR_OpCode*)myhreg) = deallocate; //deallocate
- myhreg += INSTR_X_LEN;
- *((INSTR_OpCode*)myhreg) = proceed; //proceed
- myhreg += INSTR_X_LEN;
-
- //stopCode
- AM_stopCode = myhreg;
- *((INSTR_OpCode*)myhreg) = stop; //stop
- myhreg += INSTR_X_LEN;
-
- //notCode2
- AM_notCode2 = myhreg;
- *((INSTR_OpCode*)myhreg) = trust_me; //trust_me 0
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1WPX_I1)) = 0;
- myhreg += INSTR_I1WPX_LEN;
- *((INSTR_OpCode*)myhreg) = proceed; //proceed
- myhreg += INSTR_X_LEN;
-
- //notCode1
- AM_notCode1 = myhreg;
- *((INSTR_OpCode*)myhreg) = allocate; //allocate 2
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1X_I1)) = 2;
- myhreg += INSTR_I1X_LEN;
- *((INSTR_OpCode*)myhreg) = get_level; //get_level Y1
- *((INSTR_EnvInd*)(myhreg + INSTR_EX_E)) = 1;
- myhreg += INSTR_EX_LEN;
- *((INSTR_OpCode*)myhreg) = call_builtin; //call_builtin 1 BI_SOLVE
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1I1WPX_I11)) = 1;
- *((INSTR_OneByteInt*)(myhreg + INSTR_I1I1WPX_I12)) = BI_SOLVE;
- myhreg += INSTR_I1I1WPX_LEN;
- *((INSTR_OpCode*)myhreg) = cut; //cut 1
- *((INSTR_EnvInd*)(myhreg + INSTR_EX_E)) = 1;
- myhreg += INSTR_EX_LEN;
- *((INSTR_OpCode*)myhreg) = fail; //fail
- myhreg += INSTR_X_LEN;
-
- //haltCode
- AM_haltCode = myhreg;
- *((INSTR_OpCode*)myhreg) = halt; //halt
- myhreg += INSTR_X_LEN;
-
- AM_hreg = nhreg;
-}
-
-/*****************************************************************************
- * THE PUBLIC ROUTINES *
- *****************************************************************************/
-void SINIT_preInit()
-{
- /* errors get initialized before ANYTHING */
- MSG_addMessages(SIM_NUM_ERROR_MESSAGES, SIM_errorMessages);
-}
-
-void SINIT_simInit()
-{
- AM_hreg = AM_heapBeg; //heap
- AM_hbreg = AM_heapBeg;
- AM_ereg = AM_stackBeg; //stack
- AM_ireg = AM_stackBeg;
- AM_cireg = AM_stackBeg;
- AM_initPDL(); //pdl
- AM_trreg = AM_trailBeg; //trail
- AM_llreg = DF_EMPTY_DIS_SET; //live list
- AM_bndFlag = OFF; //bind flag
- AM_ucreg = 0; //uc reg
-
- //make a dummy first mod point at the beginning of the stack
- AM_mkDummyImptRec(AM_ireg);
-
- /* perform initialization for the term io system */
- IO_initIO();
-
- /* and set up some built-in code */
- SINIT_initCode();
-
- /* set up the base branch register to put the heap back to this point */
- AM_breg = AM_stackBeg + AM_DUMMY_IMPT_REC_SIZE;
- *AM_breg = (Mem)AM_hreg;
-
- AM_fstCP = AM_b0reg = AM_breg;
- AM_tosreg = AM_breg + 1;
-}
-
-void SINIT_reInitSimState(Boolean inDoInitializeImports)
-{
- AM_initPDL(); //pdl
- AM_ereg = AM_stackBeg; //stack
- AM_trreg = AM_trailBeg; //trail
- AM_llreg = DF_EMPTY_DIS_SET; //live list
- AM_ucreg = 0; //uc reg
- AM_bndFlag = OFF; //bind flag
- AM_breg = AM_fstCP;
- AM_hreg = AM_cpH();
- AM_hreg = *((MemPtr *)AM_breg);
-
- /* initialize ireg if necessary */
- if (inDoInitializeImports) {
- AM_ireg = AM_stackBeg;
- AM_tosreg = AM_breg + 1;
- }
-
- IO_initIO();
-}
-
-
-#endif //SIMINIT_H