diff options
| author | krasimir <krasimir@chalmers.se> | 2017-04-12 10:31:01 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2017-04-12 10:31:01 +0000 |
| commit | 456f0a5733a3b688ebd3f5b3db35f60400ca7abe (patch) | |
| tree | 7b6a931a099ffe31402bc59690263bf34374e4c3 /src/runtime/c/teyjus/simulator/siminit.c | |
| parent | a8eaa2f2e560547e63c7976960435e1ae23a22b1 (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.c | 275 |
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 |
