support newer llvm, by J Santos

This commit is contained in:
Vítor Santos Costa
2015-01-07 10:22:52 +00:00
parent ac9070f120
commit 832b2258c8
70 changed files with 19055 additions and 29444 deletions

12241
C/absmi.c

File diff suppressed because it is too large Load Diff

12248
C/absmi_insts.i Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -13,19 +13,19 @@
extern Environment ExpEnv;
#if YAP_JIT
Int STD_PROTO(Get_N_Cores,(void));
X_API Int STD_PROTO(Init_Analysis_Struc,(void));
X_API Int STD_PROTO(Init_Transform_Struc,(void));
X_API Int STD_PROTO(Init_Codegen_Struc,(void));
X_API Int STD_PROTO(Init_Config_Struc,(void));
Int Get_N_Cores(void);
X_API Int Init_Analysis_Struc(void);
X_API Int Init_Transform_Struc(void);
X_API Int Init_Codegen_Struc(void);
X_API Int Init_Config_Struc(void);
#if YAP_STAT_PREDS
X_API Int STD_PROTO(Init_Stats_Struc, (void));
X_API Int Init_Stats_Struc(void);
#endif
#endif /* YAP_JIT */
#if YAP_DBG_PREDS
X_API Int STD_PROTO(Init_Debug_Struc,(void));
X_API Int Init_Debug_Struc(void);
#endif
X_API Int STD_PROTO(YAP_Init_ExpEnv,(void));
X_API Int YAP_Init_ExpEnv(void);
#if YAP_JIT
Int
@@ -39,11 +39,11 @@ Get_N_Cores() {
size_t len = 4;
uint32_t count;
nm[0] = CTL_HW; nm[1] = HRW_AVAILCPU;
nm[0] = CTL_HW; nm[1] = HW_AVAILCPU;
sysctl(nm, 2, &count, &len, NULL, 0);
if(count < 1) {
nm[1] = HRW_NCPU;
nm[1] = HW_NCPU;
sysctl(nm, 2, &count, &len, NULL, 0);
if(count < 1) { count = 1; }
}
@@ -119,7 +119,7 @@ Init_Config_Struc()
ExpEnv.config_struc.frequency_type = COUNTER;
ExpEnv.config_struc.frequency_bound = 1024.0;
ExpEnv.config_struc.profiling_startp = 0.72;
ExpEnv.config_struc.mainclause_ty = HROT_AND_CALLEE;
ExpEnv.config_struc.mainclause_ty = HOT_AND_CALLEE;
ExpEnv.config_struc.torecompile = 1;
}
else {

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +0,0 @@
#ifndef JIT_HPP
#define JIT_HPP
#ifdef __cplusplus
#include <vector>
#include <string>
#include <cstdio>
#include <iostream>
#include <fstream>
#include <time.h>
#include <dlfcn.h>
#include "config.h"
#include "absmi.h"
using namespace std;
#else
#define LIMIT_COUNT 4096
#endif
#endif

View File

@@ -1,104 +0,0 @@
#ifndef JIT_COMPILER_HPP
#define JIT_COMPILER_HPP
#ifdef __cplusplus
#include "llvm/LLVMContext.h"
#include "llvm/Module.h"
#include "llvm/Constants.h"
#include "llvm/DerivedTypes.h"
#include "llvm/Instructions.h"
#include "llvm/Linker.h"
#include "llvm/PassManager.h"
#include "llvm/CallGraphSCCPass.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Assembly/PrintModulePass.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/MachineCodeInfo.h"
#include "llvm/ExecutionEngine/JIT.h"
#include "llvm/ExecutionEngine/Interpreter.h"
#include "llvm/ExecutionEngine/GenericValue.h"
#include "llvm/ExecutionEngine/JITMemoryManager.h"
#include "llvm/ExecutionEngine/JITEventListener.h"
#include "llvm/Support/DataStream.h"
#include "llvm/Support/IRReader.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/raw_os_ostream.h"
#include "llvm/Support/IRBuilder.h"
#include "llvm/Support/PathV1.h"
#include "llvm/Support/TypeBuilder.h"
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Target/TargetLibraryInfo.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/Analysis/IVUsers.h"
#include "llvm/Analysis/Lint.h"
#include "llvm/Analysis/DebugInfo.h"
#include "llvm/Analysis/Verifier.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/RegionPass.h"
#include "llvm/Analysis/CFGPrinter.h"
#include "llvm/Analysis/DomPrinter.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/RegionPrinter.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/system_error.h"
#include "llvm/Support/Process.h"
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/Transforms/IPO.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Vectorize.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
#include "llvm/Transforms/Utils/Cloning.h"
using namespace llvm;
#include <fcntl.h>
#include <errno.h>
#include "JIT.hpp"
using namespace std;
extern short global;
extern Environment ExpEnv;
extern NativeContext *NativeArea;
class JIT_Compiler {
private:
/* main method of JIT Compiler: compiles by clang, analyzes, optimizs and generates code accordingly the user choices */
void* compile_all(LLVMContext* &Context, yamop* p);
/* aid method to 'compile_all': adds register allocator pass to be used.
WARNING: don't use! For some reasons llvm crashes when I use it */
void set_regalloc_pass(PassManager &PM);
/* aid method to 'compile_all': optimizes module by individual transform passes or transform level */
void optimize_module(llvm::Module* &M);
/* aid method to 'compile_all': analyzes module by individual analysis passes */
void analyze_module(llvm::Module* &M);
public:
/* method invoked by wrapper 'call_JIT_Compiler' */
void* compile(yamop*);
};
#else
struct JIT_Compiler{}; // Doing this, I can call class 'JIT_Compiler' from C code
#endif
#ifdef __cplusplus
extern "C" void* call_JIT_Compiler(JIT_Compiler* jc, yamop* p) { return jc->compile(p); }
extern "C" void shutdown_llvm() { llvm_shutdown(); }
#endif //#ifdef __cplusplus
#endif

View File

@@ -1,183 +0,0 @@
/**
* The code below is adapted from opt tool according to clearance and conditions established in NCSA license as follows:
* Copyright (c) 2003 University of Illinois. All rights reserved.
* Developed by: LLVM Developer Group
* University of Illinois
* http://llvm.org/
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
* files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
* is furnished to do so, subject to the following conditions:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers
* in the documentation and/or other materials provided with the distribution.
* Neither the names of LLVM Developer Group, University of Illinois, nor the names of its contributors may be used to endorse or
* promote products derived from this Software without specific prior written permission.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HROLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
**/
struct CallGraphSCCPassPrinter : public CallGraphSCCPass {
static char ID;
const PassInfo *PassToPrint;
std::string PassName;
CallGraphSCCPassPrinter(const PassInfo *PI) :
CallGraphSCCPass(ID), PassToPrint(PI) {
std::string PassToPrintName = PassToPrint->getPassName();
PassName = "CallGraphSCCPass Printer: " + PassToPrintName;
}
virtual bool runOnSCC(CallGraphSCC &SCC) {
errs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
// Get and print pass...
for (CallGraphSCC::iterator I = SCC.begin(), E = SCC.end(); I != E; ++I) {
Function *F = (*I)->getFunction();
if (F)
getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(errs(),
F->getParent());
}
return false;
}
virtual const char *getPassName() const { return PassName.c_str(); }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequiredID(PassToPrint->getTypeInfo());
AU.setPreservesAll();
}
};
char CallGraphSCCPassPrinter::ID = 0;
struct ModulePassPrinter : public ModulePass {
static char ID;
const PassInfo *PassToPrint;
std::string PassName;
ModulePassPrinter(const PassInfo *PI)
: ModulePass(ID), PassToPrint(PI) {
std::string PassToPrintName = PassToPrint->getPassName();
PassName = "ModulePass Printer: " + PassToPrintName;
}
virtual bool runOnModule(Module &M) {
errs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
// Get and print pass...
getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(errs(), &M);
return false;
}
virtual const char *getPassName() const { return PassName.c_str(); }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequiredID(PassToPrint->getTypeInfo());
AU.setPreservesAll();
}
};
char ModulePassPrinter::ID = 0;
struct FunctionPassPrinter : public FunctionPass {
const PassInfo *PassToPrint;
static char ID;
std::string PassName;
FunctionPassPrinter(const PassInfo *PI)
: FunctionPass(ID), PassToPrint(PI) {
std::string PassToPrintName = PassToPrint->getPassName();
PassName = "FunctionPass Printer: " + PassToPrintName;
}
virtual bool runOnFunction(Function &F) {
errs() << "Printing analysis '" << PassToPrint->getPassName()
<< "' for function '" << F.getName() << "':\n";
// Get and print pass...
getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(errs(),
F.getParent());
return false;
}
virtual const char *getPassName() const { return PassName.c_str(); }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequiredID(PassToPrint->getTypeInfo());
AU.setPreservesAll();
}
};
char FunctionPassPrinter::ID = 0;
struct LoopPassPrinter : public LoopPass {
static char ID;
const PassInfo *PassToPrint;
std::string PassName;
LoopPassPrinter(const PassInfo *PI) :
LoopPass(ID), PassToPrint(PI) {
std::string PassToPrintName = PassToPrint->getPassName();
PassName = "LoopPass Printer: " + PassToPrintName;
}
virtual bool runOnLoop(Loop *L, LPPassManager &LPM) {
errs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
// Get and print pass...
getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(errs(),
L->getHeader()->getParent()->getParent());
return false;
}
virtual const char *getPassName() const { return PassName.c_str(); }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequiredID(PassToPrint->getTypeInfo());
AU.setPreservesAll();
}
};
char LoopPassPrinter::ID = 0;
struct RegionPassPrinter : public RegionPass {
static char ID;
const PassInfo *PassToPrint;
std::string PassName;
RegionPassPrinter(const PassInfo *PI) : RegionPass(ID),
PassToPrint(PI) {
std::string PassToPrintName = PassToPrint->getPassName();
PassName = "RegionPass Printer: " + PassToPrintName;
}
virtual bool runOnRegion(Region *R, RGPassManager &RGM) {
errs() << "Printing analysis '" << PassToPrint->getPassName() << "' for "
<< "region: '" << R->getNameStr() << "' in function '"
<< R->getEntry()->getParent()->getName() << "':\n";
// Get and print pass...
getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(errs(),
R->getEntry()->getParent()->getParent());
return false;
}
virtual const char *getPassName() const { return PassName.c_str(); }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequiredID(PassToPrint->getTypeInfo());
AU.setPreservesAll();
}
};
char RegionPassPrinter::ID = 0;

View File

@@ -358,7 +358,7 @@
#ifdef USE_GMP
GET_BIGINT_INSTINIT,
GET_BIGINT_GBIGINT_NONVAR,
GET_BIGINT_GBIGINT_UNK
GET_BIGINT_GBIGINT_UNK,
#endif
GET_DBTERM_INSTINIT,
GET_DBTERM_GDBTERM_NONVAR,

View File

@@ -1,9 +1,9 @@
#define USER_SWITCH_INSTINIT \
BLOCKADDRESS = (CELL)(*_PREG); \
{ \
yamop *new = Yap_udi_search((*_PREG)->u.lp.p); \
yamop *new = Yap_udi_search((*_PREG)->y_u.lp.p); \
if (!new) { \
(*_PREG) = (*_PREG)->u.lp.l; \
(*_PREG) = (*_PREG)->y_u.lp.l; \
JMPNext(); \
} \
else { \
@@ -34,27 +34,27 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.llll.l4); \
(*_PREG) = (*_PREG)->u.llll.l4; \
copy_jmp_address((*_PREG)->y_u.llll.l4); \
(*_PREG) = (*_PREG)->y_u.llll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (IsPairTerm(d0)) { \
(*_SREG) = RepPair(d0); \
copy_jmp_address((*_PREG)->u.llll.l1); \
(*_PREG) = (*_PREG)->u.llll.l1; \
copy_jmp_address((*_PREG)->y_u.llll.l1); \
(*_PREG) = (*_PREG)->y_u.llll.l1; \
JMPNext(); \
} \
else if (!IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.llll.l2); \
(*_PREG) = (*_PREG)->u.llll.l2; \
copy_jmp_address((*_PREG)->y_u.llll.l2); \
(*_PREG) = (*_PREG)->y_u.llll.l2; \
I_R = d0; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.llll.l3); \
(*_PREG) = (*_PREG)->u.llll.l3; \
copy_jmp_address((*_PREG)->y_u.llll.l3); \
(*_PREG) = (*_PREG)->y_u.llll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} \
@@ -68,7 +68,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
ALWAYS_LOOKAHEAD((*_PREG)->u.ollll.pop); \
ALWAYS_LOOKAHEAD((*_PREG)->y_u.ollll.pop); \
d0 = CACHED_A1(); \
Int nonvar = 0; \
Int pair = 1; \
@@ -77,18 +77,18 @@
do { \
if (!IsVarTerm(d0)) { \
if (d0 == TermNil) { \
(*_PREG) = (*_PREG)->u.ollll.l2; \
(*_PREG) = (*_PREG)->y_u.ollll.l2; \
JMPNext(); \
} \
else { \
if (IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} else { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
I_R = d0; \
JMPNext(); \
} \
@@ -105,14 +105,14 @@
} \
} while (TRUE); \
if (!nonvar && !pair) { \
copy_jmp_address((*_PREG)->u.ollll.l4); \
(*_PREG) = (*_PREG)->u.ollll.l4; \
copy_jmp_address((*_PREG)->y_u.ollll.l4); \
(*_PREG) = (*_PREG)->y_u.ollll.l4; \
JMPNext(); \
} \
} \
if (!nonvar && pair) { \
copy_jmp_address((*_PREG)->u.ollll.l1); \
(*_PREG) = (*_PREG)->u.ollll.l1; \
copy_jmp_address((*_PREG)->y_u.ollll.l1); \
(*_PREG) = (*_PREG)->y_u.ollll.l1; \
(*_SREG) = RepPair(d0); \
ALWAYS_GONext(); \
}
@@ -121,7 +121,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
ALWAYS_LOOKAHEAD((*_PREG)->u.ollll.pop); \
ALWAYS_LOOKAHEAD((*_PREG)->y_u.ollll.pop); \
d0 = CACHED_A1(); \
Int nonvar = 0; \
if (IsVarTerm(d0)) { \
@@ -136,31 +136,31 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.ollll.l4); \
(*_PREG) = (*_PREG)->u.ollll.l4; \
copy_jmp_address((*_PREG)->y_u.ollll.l4); \
(*_PREG) = (*_PREG)->y_u.ollll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (__builtin_expect(IsPairTerm(d0),1)) { \
copy_jmp_address((*_PREG)->u.ollll.l1); \
(*_PREG) = (*_PREG)->u.ollll.l1; \
copy_jmp_address((*_PREG)->y_u.ollll.l1); \
(*_PREG) = (*_PREG)->y_u.ollll.l1; \
(*_SREG) = RepPair(d0); \
ALWAYS_GONext(); \
} \
if (d0 == TermNil) { \
(*_PREG) = (*_PREG)->u.ollll.l2; \
(*_PREG) = (*_PREG)->y_u.ollll.l2; \
JMPNext(); \
} \
else { \
if (IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} else { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
I_R = d0; \
JMPNext(); \
} \
@@ -175,7 +175,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xllll.x); \
d0 = XREG((*_PREG)->y_u.xllll.x); \
Int nonvar = 1; \
if (IsVarTerm(d0)) { \
nonvar = 0; \
@@ -190,27 +190,27 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.xllll.l4); \
(*_PREG) = (*_PREG)->u.xllll.l4; \
copy_jmp_address((*_PREG)->y_u.xllll.l4); \
(*_PREG) = (*_PREG)->y_u.xllll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (IsPairTerm(d0)) { \
copy_jmp_address((*_PREG)->u.xllll.l1); \
(*_PREG) = (*_PREG)->u.xllll.l1; \
copy_jmp_address((*_PREG)->y_u.xllll.l1); \
(*_PREG) = (*_PREG)->y_u.xllll.l1; \
(*_SREG) = RepPair(d0); \
JMPNext(); \
} \
else if (!IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.xllll.l2); \
(*_PREG) = (*_PREG)->u.xllll.l2; \
copy_jmp_address((*_PREG)->y_u.xllll.l2); \
(*_PREG) = (*_PREG)->y_u.xllll.l2; \
I_R = d0; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.xllll.l3); \
(*_PREG) = (*_PREG)->u.xllll.l3; \
copy_jmp_address((*_PREG)->y_u.xllll.l3); \
(*_PREG) = (*_PREG)->y_u.xllll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} \
@@ -223,7 +223,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = (*_SREG)[(*_PREG)->u.sllll.s]; \
d0 = (*_SREG)[(*_PREG)->y_u.sllll.s]; \
Int nonvar = 1; \
if (IsVarTerm(d0)) { \
nonvar = 0; \
@@ -238,27 +238,27 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.sllll.l4); \
(*_PREG) = (*_PREG)->u.sllll.l4; \
copy_jmp_address((*_PREG)->y_u.sllll.l4); \
(*_PREG) = (*_PREG)->y_u.sllll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (IsPairTerm(d0)) { \
copy_jmp_address((*_PREG)->u.sllll.l1); \
(*_PREG) = (*_PREG)->u.sllll.l1; \
copy_jmp_address((*_PREG)->y_u.sllll.l1); \
(*_PREG) = (*_PREG)->y_u.sllll.l1; \
(*_SREG) = RepPair(d0); \
JMPNext(); \
} \
else if (!IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.sllll.l2); \
(*_PREG) = (*_PREG)->u.sllll.l2; \
copy_jmp_address((*_PREG)->y_u.sllll.l2); \
(*_PREG) = (*_PREG)->y_u.sllll.l2; \
I_R = d0; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.sllll.l3); \
(*_PREG) = (*_PREG)->u.sllll.l3; \
copy_jmp_address((*_PREG)->y_u.sllll.l3); \
(*_PREG) = (*_PREG)->y_u.sllll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} \
@@ -286,8 +286,8 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.l.l); \
(*_PREG) = (*_PREG)->u.l.l; \
copy_jmp_address((*_PREG)->y_u.l.l); \
(*_PREG) = (*_PREG)->y_u.l.l; \
JMPNext(); \
} \
} \
@@ -303,7 +303,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xll.x); \
d0 = XREG((*_PREG)->y_u.xll.x); \
Int nonvar = 0; \
if (IsVarTerm(d0)) { \
(pt0) = (CELL *)(d0); \
@@ -322,8 +322,8 @@
} \
} \
if (nonvar) { \
copy_jmp_address((*_PREG)->u.xll.l1); \
(*_PREG) = (*_PREG)->u.xll.l1; \
copy_jmp_address((*_PREG)->y_u.xll.l1); \
(*_PREG) = (*_PREG)->y_u.xll.l1; \
JMPNext(); \
}
@@ -349,20 +349,20 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.clll.l3); \
(*_PREG) = (*_PREG)->u.clll.l3; \
copy_jmp_address((*_PREG)->y_u.clll.l3); \
(*_PREG) = (*_PREG)->y_u.clll.l3; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (d0 == (*_PREG)->u.clll.c) { \
copy_jmp_address((*_PREG)->u.clll.l2); \
(*_PREG) = (*_PREG)->u.clll.l2; \
if (d0 == (*_PREG)->y_u.clll.c) { \
copy_jmp_address((*_PREG)->y_u.clll.l2); \
(*_PREG) = (*_PREG)->y_u.clll.l2; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.clll.l1); \
(*_PREG) = (*_PREG)->u.clll.l1; \
copy_jmp_address((*_PREG)->y_u.clll.l1); \
(*_PREG) = (*_PREG)->y_u.clll.l1; \
JMPNext(); \
} \
}
@@ -370,7 +370,7 @@
#define IF_NOT_THEN_END \
BLOCK = (CELL)IF_NOT_THEN_END;
#define HRASH_SHIFT 6
#define HASH_SHIFT 6
#define SWITCH_ON_FUNC_INSTINIT \
BLOCKADDRESS = (CELL)(*_PREG); \
@@ -379,10 +379,10 @@
d1 = *(*_SREG)++; \
{ \
CELL \
Mask = ((*_PREG)->u.sssl.s - 1) << 1, \
hash = d1 >> (HRASH_SHIFT - 1) & Mask; \
Mask = ((*_PREG)->y_u.sssl.s - 1) << 1, \
hash = d1 >> (HASH_SHIFT - 1) & Mask; \
CELL *base; \
base = (CELL *)(*_PREG)->u.sssl.l; \
base = (CELL *)(*_PREG)->y_u.sssl.l; \
pt0 = base + hash; \
d0 = pt0[0]; \
if (d0 == d1 || d0 == 0) { \
@@ -415,10 +415,10 @@
d1 = I_R; \
{ \
CELL \
Mask = ((*_PREG)->u.sssl.s - 1) << 1, \
hash = d1 >> (HRASH_SHIFT - 1) & Mask; \
Mask = ((*_PREG)->y_u.sssl.s - 1) << 1, \
hash = d1 >> (HASH_SHIFT - 1) & Mask; \
CELL *base; \
base = (CELL *)(*_PREG)->u.sssl.l; \
base = (CELL *)(*_PREG)->y_u.sssl.l; \
pt0 = base + hash; \
d0 = pt0[0]; \
if (d0 == d1 || d0 == 0) { \
@@ -448,7 +448,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
{ \
CELL *pt = (CELL *)((*_PREG)->u.sssl.l); \
CELL *pt = (CELL *)((*_PREG)->y_u.sssl.l); \
d0 = *(*_SREG)++; \
if (d0 == pt[0]) { \
copy_jmp_addressa(pt+1); \
@@ -468,7 +468,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
{ \
CELL *pt = (CELL *)((*_PREG)->u.sssl.l); \
CELL *pt = (CELL *)((*_PREG)->y_u.sssl.l); \
d0 = I_R; \
if (d0 == pt[0]) { \
copy_jmp_addressa(pt+1); \
@@ -488,7 +488,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d1; \
register CELL *pt0; \
pt0 = (CELL *) (*_PREG)->u.sssl.l; \
pt0 = (CELL *) (*_PREG)->y_u.sssl.l; \
d1 = *(*_SREG)++; \
while (pt0[0] != d1 && pt0[0] != (CELL)NULL ) { \
pt0 += 2; \
@@ -504,7 +504,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d1; \
register CELL *pt0; \
pt0 = (CELL *) (*_PREG)->u.sssl.l; \
pt0 = (CELL *) (*_PREG)->y_u.sssl.l; \
d1 = I_R; \
while (pt0[0] != d1 && pt0[0] != 0L ) { \
pt0 += 2; \

View File

@@ -2,9 +2,9 @@
print_instruction((*_PREG), ON_NATIVE); \
BLOCKADDRESS = (CELL)(*_PREG); \
{ \
yamop *new = Yap_udi_search((*_PREG)->u.lp.p); \
yamop *new = Yap_udi_search((*_PREG)->y_u.lp.p); \
if (!new) { \
(*_PREG) = (*_PREG)->u.lp.l; \
(*_PREG) = (*_PREG)->y_u.lp.l; \
JMPNext(); \
} \
else { \
@@ -36,27 +36,27 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.llll.l4); \
(*_PREG) = (*_PREG)->u.llll.l4; \
copy_jmp_address((*_PREG)->y_u.llll.l4); \
(*_PREG) = (*_PREG)->y_u.llll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (IsPairTerm(d0)) { \
(*_SREG) = RepPair(d0); \
copy_jmp_address((*_PREG)->u.llll.l1); \
(*_PREG) = (*_PREG)->u.llll.l1; \
copy_jmp_address((*_PREG)->y_u.llll.l1); \
(*_PREG) = (*_PREG)->y_u.llll.l1; \
JMPNext(); \
} \
else if (!IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.llll.l2); \
(*_PREG) = (*_PREG)->u.llll.l2; \
copy_jmp_address((*_PREG)->y_u.llll.l2); \
(*_PREG) = (*_PREG)->y_u.llll.l2; \
I_R = d0; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.llll.l3); \
(*_PREG) = (*_PREG)->u.llll.l3; \
copy_jmp_address((*_PREG)->y_u.llll.l3); \
(*_PREG) = (*_PREG)->y_u.llll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} \
@@ -71,7 +71,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
ALWAYS_LOOKAHEAD((*_PREG)->u.ollll.pop); \
ALWAYS_LOOKAHEAD((*_PREG)->y_u.ollll.pop); \
d0 = CACHED_A1(); \
Int nonvar = 0; \
Int pair = 1; \
@@ -80,18 +80,18 @@
do { \
if (!IsVarTerm(d0)) { \
if (d0 == TermNil) { \
(*_PREG) = (*_PREG)->u.ollll.l2; \
(*_PREG) = (*_PREG)->y_u.ollll.l2; \
JMPNext(); \
} \
else { \
if (IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} else { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
I_R = d0; \
JMPNext(); \
} \
@@ -108,14 +108,14 @@
} \
} while (TRUE); \
if (!nonvar && !pair) { \
copy_jmp_address((*_PREG)->u.ollll.l4); \
(*_PREG) = (*_PREG)->u.ollll.l4; \
copy_jmp_address((*_PREG)->y_u.ollll.l4); \
(*_PREG) = (*_PREG)->y_u.ollll.l4; \
JMPNext(); \
} \
} \
if (!nonvar && pair) { \
copy_jmp_address((*_PREG)->u.ollll.l1); \
(*_PREG) = (*_PREG)->u.ollll.l1; \
copy_jmp_address((*_PREG)->y_u.ollll.l1); \
(*_PREG) = (*_PREG)->y_u.ollll.l1; \
(*_SREG) = RepPair(d0); \
ALWAYS_GONext(); \
}
@@ -125,7 +125,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
ALWAYS_LOOKAHEAD((*_PREG)->u.ollll.pop); \
ALWAYS_LOOKAHEAD((*_PREG)->y_u.ollll.pop); \
d0 = CACHED_A1(); \
Int nonvar = 0; \
if (IsVarTerm(d0)) { \
@@ -140,31 +140,31 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.ollll.l4); \
(*_PREG) = (*_PREG)->u.ollll.l4; \
copy_jmp_address((*_PREG)->y_u.ollll.l4); \
(*_PREG) = (*_PREG)->y_u.ollll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (__builtin_expect(IsPairTerm(d0),1)) { \
copy_jmp_address((*_PREG)->u.ollll.l1); \
(*_PREG) = (*_PREG)->u.ollll.l1; \
copy_jmp_address((*_PREG)->y_u.ollll.l1); \
(*_PREG) = (*_PREG)->y_u.ollll.l1; \
(*_SREG) = RepPair(d0); \
ALWAYS_GONext(); \
} \
if (d0 == TermNil) { \
(*_PREG) = (*_PREG)->u.ollll.l2; \
(*_PREG) = (*_PREG)->y_u.ollll.l2; \
JMPNext(); \
} \
else { \
if (IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} else { \
copy_jmp_address((*_PREG)->u.ollll.l3); \
(*_PREG) = (*_PREG)->u.ollll.l3; \
copy_jmp_address((*_PREG)->y_u.ollll.l3); \
(*_PREG) = (*_PREG)->y_u.ollll.l3; \
I_R = d0; \
JMPNext(); \
} \
@@ -180,7 +180,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xllll.x); \
d0 = XREG((*_PREG)->y_u.xllll.x); \
Int nonvar = 1; \
if (IsVarTerm(d0)) { \
nonvar = 0; \
@@ -195,27 +195,27 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.xllll.l4); \
(*_PREG) = (*_PREG)->u.xllll.l4; \
copy_jmp_address((*_PREG)->y_u.xllll.l4); \
(*_PREG) = (*_PREG)->y_u.xllll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (IsPairTerm(d0)) { \
copy_jmp_address((*_PREG)->u.xllll.l1); \
(*_PREG) = (*_PREG)->u.xllll.l1; \
copy_jmp_address((*_PREG)->y_u.xllll.l1); \
(*_PREG) = (*_PREG)->y_u.xllll.l1; \
(*_SREG) = RepPair(d0); \
JMPNext(); \
} \
else if (!IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.xllll.l2); \
(*_PREG) = (*_PREG)->u.xllll.l2; \
copy_jmp_address((*_PREG)->y_u.xllll.l2); \
(*_PREG) = (*_PREG)->y_u.xllll.l2; \
I_R = d0; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.xllll.l3); \
(*_PREG) = (*_PREG)->u.xllll.l3; \
copy_jmp_address((*_PREG)->y_u.xllll.l3); \
(*_PREG) = (*_PREG)->y_u.xllll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} \
@@ -229,7 +229,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = (*_SREG)[(*_PREG)->u.sllll.s]; \
d0 = (*_SREG)[(*_PREG)->y_u.sllll.s]; \
Int nonvar = 1; \
if (IsVarTerm(d0)) { \
nonvar = 0; \
@@ -244,27 +244,27 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.sllll.l4); \
(*_PREG) = (*_PREG)->u.sllll.l4; \
copy_jmp_address((*_PREG)->y_u.sllll.l4); \
(*_PREG) = (*_PREG)->y_u.sllll.l4; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (IsPairTerm(d0)) { \
copy_jmp_address((*_PREG)->u.sllll.l1); \
(*_PREG) = (*_PREG)->u.sllll.l1; \
copy_jmp_address((*_PREG)->y_u.sllll.l1); \
(*_PREG) = (*_PREG)->y_u.sllll.l1; \
(*_SREG) = RepPair(d0); \
JMPNext(); \
} \
else if (!IsApplTerm(d0)) { \
copy_jmp_address((*_PREG)->u.sllll.l2); \
(*_PREG) = (*_PREG)->u.sllll.l2; \
copy_jmp_address((*_PREG)->y_u.sllll.l2); \
(*_PREG) = (*_PREG)->y_u.sllll.l2; \
I_R = d0; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.sllll.l3); \
(*_PREG) = (*_PREG)->u.sllll.l3; \
copy_jmp_address((*_PREG)->y_u.sllll.l3); \
(*_PREG) = (*_PREG)->y_u.sllll.l3; \
(*_SREG) = RepAppl(d0); \
JMPNext(); \
} \
@@ -293,8 +293,8 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.l.l); \
(*_PREG) = (*_PREG)->u.l.l; \
copy_jmp_address((*_PREG)->y_u.l.l); \
(*_PREG) = (*_PREG)->y_u.l.l; \
JMPNext(); \
} \
} \
@@ -311,7 +311,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xll.x); \
d0 = XREG((*_PREG)->y_u.xll.x); \
Int nonvar = 0; \
if (IsVarTerm(d0)) { \
(pt0) = (CELL *)(d0); \
@@ -330,8 +330,8 @@
} \
} \
if (nonvar) { \
copy_jmp_address((*_PREG)->u.xll.l1); \
(*_PREG) = (*_PREG)->u.xll.l1; \
copy_jmp_address((*_PREG)->y_u.xll.l1); \
(*_PREG) = (*_PREG)->y_u.xll.l1; \
JMPNext(); \
}
@@ -358,20 +358,20 @@
(d0) = *(CELL *)(d0); \
} \
if (!nonvar) { \
copy_jmp_address((*_PREG)->u.clll.l3); \
(*_PREG) = (*_PREG)->u.clll.l3; \
copy_jmp_address((*_PREG)->y_u.clll.l3); \
(*_PREG) = (*_PREG)->y_u.clll.l3; \
JMPNext(); \
} \
} \
if (nonvar) { \
if (d0 == (*_PREG)->u.clll.c) { \
copy_jmp_address((*_PREG)->u.clll.l2); \
(*_PREG) = (*_PREG)->u.clll.l2; \
if (d0 == (*_PREG)->y_u.clll.c) { \
copy_jmp_address((*_PREG)->y_u.clll.l2); \
(*_PREG) = (*_PREG)->y_u.clll.l2; \
JMPNext(); \
} \
else { \
copy_jmp_address((*_PREG)->u.clll.l1); \
(*_PREG) = (*_PREG)->u.clll.l1; \
copy_jmp_address((*_PREG)->y_u.clll.l1); \
(*_PREG) = (*_PREG)->y_u.clll.l1; \
JMPNext(); \
} \
}
@@ -379,7 +379,7 @@
#define IF_NOT_THEN_END \
BLOCK = (CELL)IF_NOT_THEN_END;
#define HRASH_SHIFT 6
#define HASH_SHIFT 6
#define SWITCH_ON_FUNC_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
@@ -389,10 +389,10 @@
d1 = *(*_SREG)++; \
{ \
CELL \
Mask = ((*_PREG)->u.sssl.s - 1) << 1, \
hash = d1 >> (HRASH_SHIFT - 1) & Mask; \
Mask = ((*_PREG)->y_u.sssl.s - 1) << 1, \
hash = d1 >> (HASH_SHIFT - 1) & Mask; \
CELL *base; \
base = (CELL *)(*_PREG)->u.sssl.l; \
base = (CELL *)(*_PREG)->y_u.sssl.l; \
pt0 = base + hash; \
d0 = pt0[0]; \
if (d0 == d1 || d0 == 0) { \
@@ -426,10 +426,10 @@
d1 = I_R; \
{ \
CELL \
Mask = ((*_PREG)->u.sssl.s - 1) << 1, \
hash = d1 >> (HRASH_SHIFT - 1) & Mask; \
Mask = ((*_PREG)->y_u.sssl.s - 1) << 1, \
hash = d1 >> (HASH_SHIFT - 1) & Mask; \
CELL *base; \
base = (CELL *)(*_PREG)->u.sssl.l; \
base = (CELL *)(*_PREG)->y_u.sssl.l; \
pt0 = base + hash; \
d0 = pt0[0]; \
if (d0 == d1 || d0 == 0) { \
@@ -460,7 +460,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
{ \
CELL *pt = (CELL *)((*_PREG)->u.sssl.l); \
CELL *pt = (CELL *)((*_PREG)->y_u.sssl.l); \
d0 = *(*_SREG)++; \
if (d0 == pt[0]) { \
copy_jmp_addressa(pt+1); \
@@ -481,7 +481,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
{ \
CELL *pt = (CELL *)((*_PREG)->u.sssl.l); \
CELL *pt = (CELL *)((*_PREG)->y_u.sssl.l); \
d0 = I_R; \
if (d0 == pt[0]) { \
copy_jmp_addressa(pt+1); \
@@ -502,7 +502,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d1; \
register CELL *pt0; \
pt0 = (CELL *) (*_PREG)->u.sssl.l; \
pt0 = (CELL *) (*_PREG)->y_u.sssl.l; \
d1 = *(*_SREG)++; \
while (pt0[0] != d1 && pt0[0] != (CELL)NULL ) { \
pt0 += 2; \
@@ -519,7 +519,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d1; \
register CELL *pt0; \
pt0 = (CELL *) (*_PREG)->u.sssl.l; \
pt0 = (CELL *) (*_PREG)->y_u.sssl.l; \
d1 = I_R; \
while (pt0[0] != d1 && pt0[0] != 0L ) { \
pt0 += 2; \

View File

@@ -2,8 +2,8 @@
BLOCKADDRESS = (CELL)(*_PREG); \
check_trail(TR); \
CACHE_Y(YREG); \
store_at_least_one_arg((*_PREG)->u.Otapl.s); \
store_yaam_regs((*_PREG)->u.Otapl.d, 0); \
store_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
store_yaam_regs((*_PREG)->y_u.Otapl.d, 0); \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -21,8 +21,8 @@
#define RETRY_ME_INSTINIT \
CACHE_Y(B); \
restore_yaam_regs((*_PREG)->u.Otapl.d); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s);
restore_yaam_regs((*_PREG)->y_u.Otapl.d); \
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define RETRY_ME_FROZEN \
@@ -47,14 +47,14 @@
#define TRUST_ME_YAPOR_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s); \
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -62,13 +62,13 @@
#define TRUST_ME_YAPOR_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s); \
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN STACKS */
@@ -77,7 +77,7 @@
#define TRUST_ME_YAPOR_IF \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -85,7 +85,7 @@
#define TRUST_ME_IF \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN STACKS */
@@ -98,26 +98,26 @@
GONext();
#define ENTER_PROFILING_INSTINIT \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), p); \
GONext();
#define RETRY_PROFILED_INSTINIT \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), p); \
GONext();
#define PROFILED_RETRY_ME_INSTINIT \
CACHE_Y(B); \
LOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
restore_yaam_regs((*_PREG)->u.Otapl.d); \
restore_args((*_PREG)->u.Otapl.s);
LOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->y_u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
restore_yaam_regs((*_PREG)->y_u.Otapl.d); \
restore_args((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define PROFILED_RETRY_ME_FROZEN \
@@ -142,14 +142,14 @@
#define PROFILED_TRUST_ME_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -157,13 +157,13 @@
#define PROFILED_TRUST_ME_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN_STACKS */
@@ -172,7 +172,7 @@
#define PROFILED_TRUST_ME_IF \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -180,7 +180,7 @@
#define PROFILED_TRUST_ME_IF \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN_STACKS */
@@ -189,9 +189,9 @@
#define PROFILED_TRUST_ME_END \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
LOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->y_u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), Otapl); \
GONext();
@@ -200,26 +200,26 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
else { \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
}
#ifdef THREADS
#define PROFILED_RETRY_LOGICAL_THREADS \
PP = (*_PREG)->u.OtaLl.d->ClPred;
PP = (*_PREG)->y_u.OtaLl.d->ClPred;
#endif
#define PROFILED_RETRY_LOGICAL_POST_THREADS \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode;
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode;
#ifdef FROZEN_STACKS
#define PROFILED_RETRY_LOGICAL_FROZEN \
@@ -245,9 +245,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -302,9 +302,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -360,9 +360,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -411,9 +411,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -466,9 +466,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
\
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
@@ -528,9 +528,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -590,9 +590,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -645,9 +645,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
\
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
@@ -704,9 +704,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -764,9 +764,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -825,9 +825,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -879,9 +879,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -939,9 +939,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
check_trail(TR); \
CACHE_Y(YREG); \
store_at_least_one_arg((*_PREG)->u.Otapl.s); \
store_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
store_yaam_regs(NEXTOP((*_PREG), Otapl), 0); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -967,7 +967,7 @@
B_YREG->cp_a1 = x1; \
B_YREG->cp_a2 = x2; \
} \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -993,7 +993,7 @@
B_YREG->cp_a2 = ARG2; \
B_YREG->cp_a3 = ARG3; \
} \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -1019,7 +1019,7 @@
B_YREG->cp_a3 = ARG3; \
B_YREG->cp_a4 = ARG4; \
} \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -1038,7 +1038,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), Otapl)); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s);
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define RETRY_FROZEN \
@@ -1053,14 +1053,14 @@
BLOCK = (CELL)RETRY_END; \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
JMPNext();
#define RETRY2_INSTINIT \
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), l)); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
ARG1 = B_YREG->cp_a1; \
ARG2 = B_YREG->cp_a2;
@@ -1083,7 +1083,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), l)); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
ARG1 = B_YREG->cp_a1; \
ARG2 = B_YREG->cp_a2; \
ARG3 = B_YREG->cp_a3;
@@ -1107,7 +1107,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), l)); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
ARG1 = B_YREG->cp_a1; \
ARG2 = B_YREG->cp_a2; \
ARG3 = B_YREG->cp_a3; \
@@ -1136,7 +1136,7 @@
#define TRUST_IFOK_INIT \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s);
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define TRUST_IFOK_FROZEN \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG);
@@ -1150,7 +1150,7 @@
#define TRUST_NOIF_INIT \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s);
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define TRUST_NOIF_FROZEN \
@@ -1163,22 +1163,22 @@
} \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
JMPNext();
#define TRY_IN_INSTINIT \
BLOCKADDRESS = (CELL)(*_PREG); \
B->cp_ap = NEXTOP((*_PREG), l); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
JMPNext();
#define TRY_IN_END \
BLOCK = (CELL)TRY_IN_END;
#define SPY_OR_TRYMARK_INSTINIT \
PELOCK(5, ((PredEntry *)((*_PREG)->u.Otapl.p))); \
(*_PREG) = (yamop *)(&(((PredEntry *)((*_PREG)->u.Otapl.p))->OpcodeOfPred)); \
UNLOCKPE(11,(PredEntry *)((*_PREG)->u.Otapl.p)); \
PELOCK(5, ((PredEntry *)((*_PREG)->y_u.Otapl.p))); \
(*_PREG) = (yamop *)(&(((PredEntry *)((*_PREG)->y_u.Otapl.p))->OpcodeOfPred)); \
UNLOCKPE(11,(PredEntry *)((*_PREG)->y_u.Otapl.p)); \
return external_labels[12];
#define TRY_AND_MARK_INSTINIT \
@@ -1193,14 +1193,14 @@
#define TRY_AND_MARK_YAPOR_THREADS_NOYAPOR_IF \
BLOCK = (CELL)TRY_AND_MARK_YAPOR_THREADS_NOYAPOR_IF; \
if ((*_PREG)->u.Otapl.p->PredFlags & LogUpdatePredFlag) { \
PELOCK(6,(*_PREG)->u.Otapl.p); \
PP = (*_PREG)->u.Otapl.p; \
if ((*_PREG)->y_u.Otapl.p->PredFlags & LogUpdatePredFlag) { \
PELOCK(6,(*_PREG)->y_u.Otapl.p); \
PP = (*_PREG)->y_u.Otapl.p; \
} \
if ((*_PREG)->u.Otapl.p->CodeOfPred != (*_PREG)) { \
if ((*_PREG)->y_u.Otapl.p->CodeOfPred != (*_PREG)) { \
PP = NULL; \
(*_PREG) = (*_PREG)->u.Otapl.p->CodeOfPred; \
UNLOCKPE(12,(*_PREG)->u.Otapl.p); \
(*_PREG) = (*_PREG)->y_u.Otapl.p->CodeOfPred; \
UNLOCKPE(12,(*_PREG)->y_u.Otapl.p); \
save_pc(); \
JMPNext(); \
}
@@ -1208,11 +1208,11 @@
#define TRY_AND_MARK_NOYAPOR_NOTHREADS \
CACHE_Y(YREG); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
LOCK(DynamicLock((*_PREG))); \
UNLOCKPE(13,((PredEntry *)((*_PREG)->u.Otapl.p))); \
UNLOCKPE(13,((PredEntry *)((*_PREG)->y_u.Otapl.p))); \
BEGD(d1); \
d1 = (*_PREG)->u.Otapl.s; \
d1 = (*_PREG)->y_u.Otapl.s; \
store_args(d1); \
store_yaam_regs((*_PREG), 0); \
ENDD(d1); \
@@ -1264,9 +1264,9 @@
}
#define PROFILED_RETRY_AND_MARK_INSTINIT \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
#define RETRY_AND_MARK_INSTINIT
@@ -1276,13 +1276,13 @@
#endif
#define RETRY_AND_MARK_POST_YAPOR \
PELOCK(7,(*_PREG)->u.Otapl.p); \
PELOCK(7,(*_PREG)->y_u.Otapl.p); \
CACHE_Y(B); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
LOCK(DynamicLock((*_PREG))); \
UNLOCK((*_PREG)->u.Otapl.p->PELock); \
UNLOCK((*_PREG)->y_u.Otapl.p->PELock); \
restore_yaam_regs((*_PREG)); \
restore_args((*_PREG)->u.Otapl.s);
restore_args((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define RETRY_AND_MARK_FROZEN \

View File

@@ -3,8 +3,8 @@
BLOCKADDRESS = (CELL)(*_PREG); \
check_trail(TR); \
CACHE_Y(YREG); \
store_at_least_one_arg((*_PREG)->u.Otapl.s); \
store_yaam_regs((*_PREG)->u.Otapl.d, 0); \
store_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
store_yaam_regs((*_PREG)->y_u.Otapl.d, 0); \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -23,8 +23,8 @@
#define RETRY_ME_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
CACHE_Y(B); \
restore_yaam_regs((*_PREG)->u.Otapl.d); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s);
restore_yaam_regs((*_PREG)->y_u.Otapl.d); \
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define RETRY_ME_FROZEN \
@@ -50,14 +50,14 @@
#define TRUST_ME_YAPOR_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s); \
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -65,13 +65,13 @@
#define TRUST_ME_YAPOR_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s); \
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN STACKS */
@@ -80,7 +80,7 @@
#define TRUST_ME_YAPOR_IF \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -88,7 +88,7 @@
#define TRUST_ME_IF \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s); \
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN STACKS */
@@ -102,28 +102,28 @@
#define ENTER_PROFILING_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), p); \
GONext();
#define RETRY_PROFILED_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), p); \
GONext();
#define PROFILED_RETRY_ME_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
CACHE_Y(B); \
LOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
restore_yaam_regs((*_PREG)->u.Otapl.d); \
restore_args((*_PREG)->u.Otapl.s);
LOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->y_u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
restore_yaam_regs((*_PREG)->y_u.Otapl.d); \
restore_args((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define PROFILED_RETRY_ME_FROZEN \
@@ -149,14 +149,14 @@
#define PROFILED_TRUST_ME_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -164,13 +164,13 @@
#define PROFILED_TRUST_ME_IF \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN_STACKS */
@@ -179,7 +179,7 @@
#define PROFILED_TRUST_ME_IF \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
}
@@ -187,7 +187,7 @@
#define PROFILED_TRUST_ME_IF \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
}
#endif /* FROZEN_STACKS */
@@ -196,9 +196,9 @@
#define PROFILED_TRUST_ME_END \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
LOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.Otapl.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
(*_PREG)->y_u.Otapl.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.Otapl.p->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), Otapl); \
GONext();
@@ -208,26 +208,26 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
else { \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
}
#ifdef THREADS
#define PROFILED_RETRY_LOGICAL_THREADS \
PP = (*_PREG)->u.OtaLl.d->ClPred;
PP = (*_PREG)->y_u.OtaLl.d->ClPred;
#endif
#define PROFILED_RETRY_LOGICAL_POST_THREADS \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode;
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode;
#ifdef FROZEN_STACKS
#define PROFILED_RETRY_LOGICAL_FROZEN \
@@ -254,9 +254,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -312,9 +312,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -371,9 +371,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -423,9 +423,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -479,9 +479,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
\
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
@@ -542,9 +542,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -605,9 +605,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -661,9 +661,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
\
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
@@ -721,9 +721,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -782,9 +782,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -844,9 +844,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -899,9 +899,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -960,9 +960,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
check_trail(TR); \
CACHE_Y(YREG); \
store_at_least_one_arg((*_PREG)->u.Otapl.s); \
store_at_least_one_arg((*_PREG)->y_u.Otapl.s); \
store_yaam_regs(NEXTOP((*_PREG), Otapl), 0); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -989,7 +989,7 @@
B_YREG->cp_a1 = x1; \
B_YREG->cp_a2 = x2; \
} \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -1016,7 +1016,7 @@
B_YREG->cp_a2 = ARG2; \
B_YREG->cp_a3 = ARG3; \
} \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -1043,7 +1043,7 @@
B_YREG->cp_a3 = ARG3; \
B_YREG->cp_a4 = ARG4; \
} \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
set_cut(S_YREG, B); \
B = B_YREG;
@@ -1063,7 +1063,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), Otapl)); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s);
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define RETRY_FROZEN \
@@ -1078,7 +1078,7 @@
BLOCK = (CELL)RETRY_END; \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
JMPNext();
#define RETRY2_INSTINIT \
@@ -1086,7 +1086,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), l)); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
ARG1 = B_YREG->cp_a1; \
ARG2 = B_YREG->cp_a2;
@@ -1110,7 +1110,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), l)); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
ARG1 = B_YREG->cp_a1; \
ARG2 = B_YREG->cp_a2; \
ARG3 = B_YREG->cp_a3;
@@ -1135,7 +1135,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
restore_yaam_regs(NEXTOP((*_PREG), l)); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
ARG1 = B_YREG->cp_a1; \
ARG2 = B_YREG->cp_a2; \
ARG3 = B_YREG->cp_a3; \
@@ -1165,7 +1165,7 @@
#define TRUST_IFOK_INIT \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_at_least_one_arg((*_PREG)->u.Otapl.s);
restore_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define TRUST_IFOK_FROZEN \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG);
@@ -1179,7 +1179,7 @@
#define TRUST_NOIF_INIT \
{ \
pop_yaam_regs(); \
pop_at_least_one_arg((*_PREG)->u.Otapl.s);
pop_at_least_one_arg((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define TRUST_NOIF_FROZEN \
@@ -1192,14 +1192,14 @@
} \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
JMPNext();
#define TRY_IN_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
BLOCKADDRESS = (CELL)(*_PREG); \
B->cp_ap = NEXTOP((*_PREG), l); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
JMPNext();
#define TRY_IN_END \
@@ -1207,9 +1207,9 @@
#define SPY_OR_TRYMARK_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
PELOCK(5, ((PredEntry *)((*_PREG)->u.Otapl.p))); \
(*_PREG) = (yamop *)(&(((PredEntry *)((*_PREG)->u.Otapl.p))->OpcodeOfPred)); \
UNLOCKPE(11,(PredEntry *)((*_PREG)->u.Otapl.p)); \
PELOCK(5, ((PredEntry *)((*_PREG)->y_u.Otapl.p))); \
(*_PREG) = (yamop *)(&(((PredEntry *)((*_PREG)->y_u.Otapl.p))->OpcodeOfPred)); \
UNLOCKPE(11,(PredEntry *)((*_PREG)->y_u.Otapl.p)); \
return external_labels[12];
#define TRY_AND_MARK_INSTINIT \
@@ -1225,14 +1225,14 @@
#define TRY_AND_MARK_YAPOR_THREADS_NOYAPOR_IF \
BLOCK = (CELL)TRY_AND_MARK_YAPOR_THREADS_NOYAPOR_IF; \
if ((*_PREG)->u.Otapl.p->PredFlags & LogUpdatePredFlag) { \
PELOCK(6,(*_PREG)->u.Otapl.p); \
PP = (*_PREG)->u.Otapl.p; \
if ((*_PREG)->y_u.Otapl.p->PredFlags & LogUpdatePredFlag) { \
PELOCK(6,(*_PREG)->y_u.Otapl.p); \
PP = (*_PREG)->y_u.Otapl.p; \
} \
if ((*_PREG)->u.Otapl.p->CodeOfPred != (*_PREG)) { \
if ((*_PREG)->y_u.Otapl.p->CodeOfPred != (*_PREG)) { \
PP = NULL; \
(*_PREG) = (*_PREG)->u.Otapl.p->CodeOfPred; \
UNLOCKPE(12,(*_PREG)->u.Otapl.p); \
(*_PREG) = (*_PREG)->y_u.Otapl.p->CodeOfPred; \
UNLOCKPE(12,(*_PREG)->y_u.Otapl.p); \
save_pc(); \
JMPNext(); \
}
@@ -1240,11 +1240,11 @@
#define TRY_AND_MARK_NOYAPOR_NOTHREADS \
CACHE_Y(YREG); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
LOCK(DynamicLock((*_PREG))); \
UNLOCKPE(13,((PredEntry *)((*_PREG)->u.Otapl.p))); \
UNLOCKPE(13,((PredEntry *)((*_PREG)->y_u.Otapl.p))); \
BEGD(d1); \
d1 = (*_PREG)->u.Otapl.s; \
d1 = (*_PREG)->y_u.Otapl.s; \
store_args(d1); \
store_yaam_regs((*_PREG), 0); \
ENDD(d1); \
@@ -1298,9 +1298,9 @@
#define PROFILED_RETRY_AND_MARK_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
#define RETRY_AND_MARK_INSTINIT
@@ -1310,13 +1310,13 @@
#endif
#define RETRY_AND_MARK_POST_YAPOR \
PELOCK(7,(*_PREG)->u.Otapl.p); \
PELOCK(7,(*_PREG)->y_u.Otapl.p); \
CACHE_Y(B); \
(*_PREG) = (*_PREG)->u.Otapl.d; \
(*_PREG) = (*_PREG)->y_u.Otapl.d; \
LOCK(DynamicLock((*_PREG))); \
UNLOCK((*_PREG)->u.Otapl.p->PELock); \
UNLOCK((*_PREG)->y_u.Otapl.p->PELock); \
restore_yaam_regs((*_PREG)); \
restore_args((*_PREG)->u.Otapl.s);
restore_args((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define RETRY_AND_MARK_FROZEN \

View File

@@ -1,45 +0,0 @@
#include "Yap.h"
#include "clause.h"
#include "eval.h"
#if HRAVE_ERRNO_H
#include <errno.h>
#else
extern int errno;
#endif
#include <string.h>
#include <ctype.h>
#define UPPER_ENTRY(S) \
tmp = (char*)malloc((strlen(S)+1)*sizeof(char)); \
while (S[i]) { \
if (S[i] != '-' && S[i] != '_' && S[i] != ' ') { \
if ((S[i] >= '0' && S[i] <= '9') || (S[i] == '.')) \
tmp[j] = S[i]; \
else \
tmp[j] = toupper(S[i]); \
j++; \
} \
i++; \
} \
tmp[j] = 0; \
strcpy(S, tmp); \
free(tmp);
#if YAP_JIT
void Yap_InitJitAnalysisPreds( void );
void Yap_InitJitCodegenPreds( void );
void Yap_InitJitConfigPreds( void );
void Yap_InitJitTransformPreds( void );
#if YAP_STAT_PREDS
void Yap_InitJitStatisticPreds( void );
#endif
#endif /* YAP_JIT */
#if YAP_DBG_PREDS
void Yap_InitJitDebugPreds( void );
#endif
Environment ExpEnv;
#if YAP_JIT
extern NativeContext *NativeArea;
extern IntermediatecodeContext *IntermediatecodeArea;
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -36,7 +36,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -48,8 +48,8 @@
}\
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HR = HRBREG; \
HRBREG = B->cp_h; \
HR = HBREG; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -64,7 +64,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -78,7 +78,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -93,7 +93,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -105,8 +105,8 @@
}\
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HR = HRBREG; \
HRBREG = B->cp_h; \
HR = HBREG; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -122,7 +122,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -137,7 +137,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -152,7 +152,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -164,8 +164,8 @@
}\
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HR = HRBREG; \
HRBREG = B->cp_h; \
HR = HBREG; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -177,7 +177,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -194,7 +194,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -209,7 +209,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -221,8 +221,8 @@
} \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HR = HRBREG; \
HRBREG = B->cp_h; \
HR = HBREG; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -233,7 +233,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -247,7 +247,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -262,7 +262,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -274,8 +274,8 @@
}\
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HR = HRBREG; \
HRBREG = B->cp_h; \
HR = HBREG; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -287,7 +287,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -302,7 +302,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -317,7 +317,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -329,8 +329,8 @@
}\
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HR = HRBREG; \
HRBREG = B->cp_h; \
HR = HBREG; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -338,7 +338,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -357,7 +357,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -371,7 +371,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -379,7 +379,7 @@
opresult = Yap_IUnify(d0, d1); \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HRBREG = B->cp_h; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -394,7 +394,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -408,7 +408,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -422,7 +422,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -430,7 +430,7 @@
opresult = Yap_IUnify(d0, d1); \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HRBREG = B->cp_h; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -446,7 +446,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -461,7 +461,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -475,7 +475,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -483,7 +483,7 @@
opresult = Yap_IUnify(d0, d1); \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HRBREG = B->cp_h; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -495,7 +495,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -512,7 +512,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -526,7 +526,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -534,7 +534,7 @@
opresult = Yap_IUnify(d0, d1); \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HRBREG = B->cp_h; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -545,7 +545,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -559,7 +559,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -573,7 +573,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -581,7 +581,7 @@
opresult = Yap_IUnify(d0, d1); \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HRBREG = B->cp_h; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -593,7 +593,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -608,7 +608,7 @@
#define P_DIF_DIF_NVAR1_NVAR2 \
BLOCK = (CELL)P_DIF_DIF_NVAR1_NVAR2; \
if (d0 == d1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -622,7 +622,7 @@
pt0 = TR; \
BEGCHO(pt1); \
pt1 = B; \
HRBREG = HR; \
HBREG = HR; \
B = (choiceptr) HR; \
B->cp_h = HR; \
SET_BB(B); \
@@ -630,7 +630,7 @@
opresult = Yap_IUnify(d0, d1); \
B = pt1; \
SET_BB(PROTECT_FROZEN_B(pt1)); \
HRBREG = B->cp_h; \
HBREG = B->cp_h; \
while (TR != pt0) { \
d1 = TrailTerm(--TR); \
if (IsVarTerm(d1)) { \
@@ -638,7 +638,7 @@
} \
} \
if (opresult) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -653,9 +653,9 @@
#endif /* COROUTINING */
#define P_DIF_DIF_UNK1 \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext();
#define P_DIF_DIF_NVAR1_UNK2 \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext();

View File

@@ -25,14 +25,14 @@
else { \
if (IsPairTerm(d0)) { \
if (!IsPairTerm(d1)) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
always_save_pc(); \
d2 = iequ_complex(RepPair(d0)-1, RepPair(d0)+1,RepPair(d1)-1); \
if (d2 == FALSE) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -46,7 +46,7 @@
Functor f0 = FunctorOfTerm(d0); \
Functor f1; \
if (!IsApplTerm(d1)) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -59,13 +59,13 @@
GONext(); \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
break; \
case (CELL)FunctorLongInt: \
if (f1 != FunctorLongInt) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else if (LongIntOfTerm(d0) == LongIntOfTerm(d1)) { \
@@ -73,13 +73,13 @@
GONext(); \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
break; \
case (CELL)FunctorBigInt: \
if (f1 != FunctorBigInt) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else if (Yap_gmp_tcmp_big_big(d0,d1) == 0) { \
@@ -87,13 +87,13 @@
GONext(); \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
break; \
case (CELL)FunctorDouble: \
if (f1 != FunctorDouble) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else if (FloatOfTerm(d0) == FloatOfTerm(d1)) { \
@@ -102,20 +102,20 @@
} \
break; \
default: \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
} \
else { \
if (f0 != f1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
always_save_pc(); \
d2 = iequ_complex(RepAppl(d0), RepAppl(d0)+ArityOfFunctor(f0), RepAppl(d1)); \
if (d2 == FALSE) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -128,7 +128,7 @@
} \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
}
@@ -143,14 +143,14 @@
else { \
if (IsPairTerm(d0)) { \
if (!IsPairTerm(d1)) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
always_save_pc(); \
d2 = iequ_complex(RepPair(d0)-1, RepPair(d0)+1,RepPair(d1)-1); \
if (d2 == FALSE) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -164,7 +164,7 @@
Functor f0 = FunctorOfTerm(d0); \
Functor f1; \
if (!IsApplTerm(d1)) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -177,13 +177,13 @@
GONext(); \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
break; \
case (CELL)FunctorLongInt: \
if (f1 != FunctorLongInt) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else if (LongIntOfTerm(d0) == LongIntOfTerm(d1)) { \
@@ -191,13 +191,13 @@
GONext(); \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
break; \
case (CELL)FunctorDouble: \
if (f1 != FunctorDouble) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else if (FloatOfTerm(d0) == FloatOfTerm(d1)) { \
@@ -206,20 +206,20 @@
} \
break; \
default: \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
} \
else { \
if (f0 != f1) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
always_save_pc(); \
d2 = iequ_complex(RepAppl(d0), RepAppl(d0)+ArityOfFunctor(f0), RepAppl(d1)); \
if (d2 == FALSE) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \
@@ -232,27 +232,27 @@
} \
} \
else { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
}
#endif /* USE_GMP */
#define P_EQ_P_EQ_NVAR1_UNK2 \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext();
#define P_EQ_P_EQ_UNK1 \
d1 = ARG2;
#define P_EQ_P_EQ_VAR1_NVAR2 \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext();
#define P_EQ_P_EQ_VAR1_UNK2_END \
BLOCK = (CELL)P_EQ_P_EQ_VAR1_UNK2_END; \
if (pt1 != pt0) { \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
GONext(); \
} \
else { \

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_fail \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) return external_labels[10];
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) return external_labels[10];
#else
#define check_stack_on_fail \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[10];
@@ -50,10 +50,6 @@
} \
else { FAIL(); }
#define _native_me_instinit \
(*_PREG) = NEXTOP((*_PREG), aFlp); \
GONEXT();
#ifdef COROUTINING
#define _op_fail_instinit \
if (PP) { \

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_cut \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) return external_labels[1];
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) return external_labels[1];
#else
#define check_stack_on_cut \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[1];
@@ -8,7 +8,7 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_cutt \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) return external_labels[3];
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) return external_labels[3];
#else
#define check_stack_on_cutt \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[3];
@@ -16,7 +16,7 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_commitx \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) return external_labels[11];
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) return external_labels[11];
#else
#define check_stack_on_commitx \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[11];
@@ -30,7 +30,7 @@
ENDCACHE_Y_AS_ENV(); \
} \
do_cut: \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
@@ -38,7 +38,7 @@
GONEXT();
#else /* COROUTINING */
#define _cut_instinit \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
@@ -54,7 +54,7 @@
ENDCACHE_Y_AS_ENV(); \
} \
do_cut_t: \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
setregs(); \
@@ -62,7 +62,7 @@
GONEXT();
#else /* COROUTINING */
#define _cut_t_instinit \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
setregs(); \
@@ -80,7 +80,7 @@
#endif
#define CUT_E_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)(*_SREG)[E_CB]); \
@@ -90,7 +90,7 @@
#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
#define _save_b_x_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.x.x; \
d0 = (*_PREG)->y_u.x.x; \
XREG(d0) = MkIntegerTerm((Int)B); \
(*_PREG) = NEXTOP((*_PREG), x); \
ENDD(d0); \
@@ -98,7 +98,7 @@
#else /* defined(YAPOR_SBA) && defined(FROZEN_STACKS) */
#define _save_b_x_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.x.x; \
d0 = (*_PREG)->y_u.x.x; \
XREG(d0) = MkIntegerTerm(LCL0-(CELL *) (B)); \
(*_PREG) = NEXTOP((*_PREG), x); \
ENDD(d0); \
@@ -107,12 +107,12 @@
#if defined(YAPOR_SBA)
#define _save_b_y_instinit \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,MkIntegerTerm((Int)B)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,MkIntegerTerm((Int)B)); \
(*_PREG) = NEXTOP((*_PREG), y); \
GONEXT();
#else /* defined(YAPOR_SBA) */
#define _save_b_y_instinit \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,MkIntegerTerm(LCL0-(CELL *)(B))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,MkIntegerTerm(LCL0-(CELL *)(B))); \
(*_PREG) = NEXTOP((*_PREG), y); \
GONEXT();
#endif /* defined(YAPOR_SBA) */
@@ -125,10 +125,10 @@
ENDCACHE_Y_AS_ENV(); \
do_commit_b_x: \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xps.x); \
d0 = XREG((*_PREG)->y_u.xps.x); \
deref_head(d0, commit_b_x_unk); \
commit_b_x_nvar: \
SET_ASP(YREG, (*_PREG)->u.xps.s); \
SET_ASP(YREG, (*_PREG)->y_u.xps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), xps),Osbpp),l); \
{ \
choiceptr pt0; \
@@ -151,10 +151,10 @@
ENDCACHE_Y_AS_ENV(); \
do_commit_b_x: \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xps.x); \
d0 = XREG((*_PREG)->y_u.xps.x); \
deref_head(d0, commit_b_x_unk); \
commit_b_x_nvar: \
SET_ASP(YREG, (*_PREG)->u.xps.s); \
SET_ASP(YREG, (*_PREG)->y_u.xps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), xps),Osbpp),l); \
{ \
choiceptr pt0; \
@@ -175,10 +175,10 @@
#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
#define _commit_b_x_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xps.x); \
d0 = XREG((*_PREG)->y_u.xps.x); \
deref_head(d0, commit_b_x_unk); \
commit_b_x_nvar: \
SET_ASP(YREG, (*_PREG)->u.xps.s); \
SET_ASP(YREG, (*_PREG)->y_u.xps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), xps),Osbpp),l); \
{ \
choiceptr pt0; \
@@ -197,10 +197,10 @@
#else /* defined(YAPOR_SBA) && defined(FROZEN_STACKS) */
#define _commit_b_x_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xps.x); \
d0 = XREG((*_PREG)->y_u.xps.x); \
deref_head(d0, commit_b_x_unk); \
commit_b_x_nvar: \
SET_ASP(YREG, (*_PREG)->u.xps.s); \
SET_ASP(YREG, (*_PREG)->y_u.xps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), xps),Osbpp),l); \
{ \
choiceptr pt0; \
@@ -224,10 +224,10 @@
register CELL *pt1;
#define COMMIT_B_Y_DO_COMMIT_B_Y \
d0 = YREG[(*_PREG)->u.yps.y];
d0 = YREG[(*_PREG)->y_u.yps.y];
#define COMMIT_B_Y_COMMIT_B_Y_NVAR \
SET_ASP(YREG, (*_PREG)->u.yps.s); \
SET_ASP(YREG, (*_PREG)->y_u.yps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), yps),Osbpp),l); \
choiceptr pt0;

View File

@@ -1,15 +1,15 @@
#define _get_x_var_instinit \
register CELL d0; \
d0 = XREG((*_PREG)->u.xx.xr); \
XREG((*_PREG)->u.xx.xl) = d0; \
d0 = XREG((*_PREG)->y_u.xx.xr); \
XREG((*_PREG)->y_u.xx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONEXT();
#define _get_y_var_instinit \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
d0 = XREG((*_PREG)->u.yx.x); \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
d0 = XREG((*_PREG)->y_u.yx.x); \
(*_PREG) = NEXTOP((*_PREG), yx); \
INITIALIZE_PERMVAR(pt0,d0); \
GONEXT();
@@ -18,10 +18,10 @@
register CELL d0, d1; \
register CELL *pt0, *pt1; \
CACHE_Y(YREG); \
pt0 = S_YREG + (*_PREG)->u.yyxx.y1; \
d0 = XREG((*_PREG)->u.yyxx.x1); \
pt1 = S_YREG + (*_PREG)->u.yyx.y2; \
d1 = XREG((*_PREG)->u.yyxx.x2); \
pt0 = S_YREG + (*_PREG)->y_u.yyxx.y1; \
d0 = XREG((*_PREG)->y_u.yyxx.x1); \
pt1 = S_YREG + (*_PREG)->y_u.yyx.y2; \
d1 = XREG((*_PREG)->y_u.yyxx.x2); \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
INITIALIZE_PERMVAR(pt0,d0); \
INITIALIZE_PERMVAR(pt1,d1); \
@@ -30,12 +30,12 @@
#define _get_x_val_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xx.xl); \
d0 = XREG((*_PREG)->y_u.xx.xl); \
deref_head(d0, gvalx_unk); \
\
gvalx_nonvar: \
BEGD(d1); \
d1 = XREG((*_PREG)->u.xx.xr); \
d1 = XREG((*_PREG)->y_u.xx.xr); \
deref_head(d1, gvalx_nonvar_unk); \
\
gvalx_nonvar_nonvar: \
@@ -53,7 +53,7 @@
BEGP(pt0); \
deref_body(d0, pt0, gvalx_unk, gvalx_nonvar); \
BEGD(d1); \
d1 = XREG((*_PREG)->u.xx.xr); \
d1 = XREG((*_PREG)->y_u.xx.xr); \
deref_head(d1, gvalx_var_unk); \
\
gvalx_var_nonvar: \
@@ -75,12 +75,12 @@
BEGD(d0); \
BEGD(d1); \
BEGP(pt0); \
pt0 = YREG + (*_PREG)->u.yx.y; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
d0 = *pt0; \
\
deref_head(d0, gvaly_unk); \
gvaly_nonvar: \
d1 = XREG((*_PREG)->u.yx.x); \
d1 = XREG((*_PREG)->y_u.yx.x); \
deref_head(d1, gvaly_nonvar_unk); \
\
gvaly_nonvar_nonvar: \
@@ -95,7 +95,7 @@
ENDP(pt1); \
\
derefa_body(d0, pt0, gvaly_unk, gvaly_nonvar); \
d1 = XREG((*_PREG)->u.yx.x); \
d1 = XREG((*_PREG)->y_u.yx.x); \
deref_head(d1, gvaly_var_unk); \
gvaly_var_nonvar: \
(*_PREG) = NEXTOP((*_PREG), yx); \
@@ -115,8 +115,8 @@
#define _get_atom_instinit \
BEGD(d0); \
BEGD(d1); \
d0 = XREG((*_PREG)->u.xc.x); \
d1 = (*_PREG)->u.xc.c; \
d0 = XREG((*_PREG)->y_u.xc.x); \
d1 = (*_PREG)->y_u.xc.c; \
\
BEGP(pt0); \
deref_head(d0, gatom_unk); \
@@ -145,7 +145,7 @@
BEGP(pt0); \
deref_head(d0, gatom_2unk); \
gatom_2nonvar: \
if (d0 == (*_PREG)->u.cc.c1) { \
if (d0 == (*_PREG)->y_u.cc.c1) { \
goto gatom_2b; \
} \
else { \
@@ -153,11 +153,11 @@
} \
\
deref_body(d0, pt0, gatom_2unk, gatom_2nonvar); \
Bind(pt0, (*_PREG)->u.cc.c1); \
Bind(pt0, (*_PREG)->y_u.cc.c1); \
ENDP(pt0); \
gatom_2b: \
d0 = ARG2; \
d1 = (*_PREG)->u.cc.c2; \
d1 = (*_PREG)->y_u.cc.c2; \
\
BEGP(pt0); \
deref_head(d0, gatom_2bunk); \
@@ -186,7 +186,7 @@
BEGP(pt0); \
deref_head(d0, gatom_3unk); \
gatom_3nonvar: \
if (d0 == (*_PREG)->u.ccc.c1) { \
if (d0 == (*_PREG)->y_u.ccc.c1) { \
goto gatom_3b; \
} \
else { \
@@ -194,7 +194,7 @@
} \
\
deref_body(d0, pt0, gatom_3unk, gatom_3nonvar); \
Bind(pt0, (*_PREG)->u.ccc.c1); \
Bind(pt0, (*_PREG)->y_u.ccc.c1); \
ENDP(pt0); \
gatom_3b: \
d0 = ARG2; \
@@ -202,7 +202,7 @@
BEGP(pt0); \
deref_head(d0, gatom_3bunk); \
gatom_3bnonvar: \
if (d0 == (*_PREG)->u.ccc.c2) { \
if (d0 == (*_PREG)->y_u.ccc.c2) { \
goto gatom_3c; \
} \
else { \
@@ -210,11 +210,11 @@
} \
\
deref_body(d0, pt0, gatom_3bunk, gatom_3bnonvar); \
Bind(pt0, (*_PREG)->u.ccc.c2); \
Bind(pt0, (*_PREG)->y_u.ccc.c2); \
ENDP(pt0); \
gatom_3c: \
d0 = ARG3; \
d1 = (*_PREG)->u.ccc.c3; \
d1 = (*_PREG)->y_u.ccc.c3; \
\
BEGP(pt0); \
deref_head(d0, gatom_3cunk); \
@@ -241,23 +241,23 @@
d0 = ARG1;
#define GET_4ATOMS_GATOM_4UNK \
Bind(pt0, (*_PREG)->u.cccc.c1);
Bind(pt0, (*_PREG)->y_u.cccc.c1);
#define GET_4ATOMS_GATOM_4B \
d0 = ARG2;
#define GET_4ATOMS_GATOM_4BUNK \
Bind(pt0, (*_PREG)->u.cccc.c2);
Bind(pt0, (*_PREG)->y_u.cccc.c2);
#define GET_4ATOMS_GATOM_4C \
d0 = ARG3;
#define GET_4ATOMS_GATOM_4CUNK \
Bind(pt0, (*_PREG)->u.cccc.c3);
Bind(pt0, (*_PREG)->y_u.cccc.c3);
#define GET_4ATOMS_GATOM_4D \
d0 = ARG4; \
d1 = (*_PREG)->u.cccc.c4;
d1 = (*_PREG)->y_u.cccc.c4;
#define GET_4ATOMS_EQUALS \
(*_PREG) = NEXTOP((*_PREG), cccc); \
@@ -274,29 +274,29 @@
d0 = ARG1;
#define GET_5ATOMS_GATOM_5UNK \
Bind(pt0, (*_PREG)->u.ccccc.c1);
Bind(pt0, (*_PREG)->y_u.ccccc.c1);
#define GET_5ATOMS_GATOM_5B \
d0 = ARG2;
#define GET_5ATOMS_GATOM_5BUNK \
Bind(pt0, (*_PREG)->u.ccccc.c2);
Bind(pt0, (*_PREG)->y_u.ccccc.c2);
#define GET_5ATOMS_GATOM_5C \
d0 = ARG3;
#define GET_5ATOMS_GATOM_5CUNK \
Bind(pt0, (*_PREG)->u.ccccc.c3);
Bind(pt0, (*_PREG)->y_u.ccccc.c3);
#define GET_5ATOMS_GATOM_5D \
d0 = ARG4;
#define GET_5ATOMS_GATOM_5DUNK \
Bind(pt0, (*_PREG)->u.ccccc.c4);
Bind(pt0, (*_PREG)->y_u.ccccc.c4);
#define GET_5ATOMS_GATOM_5E \
d0 = ARG5; \
d1 = (*_PREG)->u.ccccc.c5;
d1 = (*_PREG)->y_u.ccccc.c5;
#define GET_5ATOMS_EQUALS \
(*_PREG) = NEXTOP((*_PREG), ccccc); \
@@ -313,35 +313,35 @@
d0 = ARG1;
#define GET_6ATOMS_GATOM_6UNK \
Bind(pt0, (*_PREG)->u.cccccc.c1);
Bind(pt0, (*_PREG)->y_u.cccccc.c1);
#define GET_6ATOMS_GATOM_6B \
d0 = ARG2;
#define GET_6ATOMS_GATOM_6BUNK \
Bind(pt0, (*_PREG)->u.cccccc.c2);
Bind(pt0, (*_PREG)->y_u.cccccc.c2);
#define GET_6ATOMS_GATOM_6C \
d0 = ARG3;
#define GET_6ATOMS_GATOM_6CUNK \
Bind(pt0, (*_PREG)->u.cccccc.c3);
Bind(pt0, (*_PREG)->y_u.cccccc.c3);
#define GET_6ATOMS_GATOM_6D \
d0 = ARG4;
#define GET_6ATOMS_GATOM_6DUNK \
Bind(pt0, (*_PREG)->u.cccccc.c4);
Bind(pt0, (*_PREG)->y_u.cccccc.c4);
#define GET_6ATOMS_GATOM_6E \
d0 = ARG5;
#define GET_6ATOMS_GATOM_6EUNK \
Bind(pt0, (*_PREG)->u.cccccc.c5);
Bind(pt0, (*_PREG)->y_u.cccccc.c5);
#define GET_6ATOMS_GATOM_6F \
d0 = ARG6; \
d1 = (*_PREG)->u.cccccc.c6;
d1 = (*_PREG)->y_u.cccccc.c6;
#define GET_6ATOMS_EQUALS \
(*_PREG) = NEXTOP((*_PREG), cccccc); \
@@ -354,7 +354,7 @@
#define _get_list_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
deref_head(d0, glist_unk); \
\
glist_nonvar: \
@@ -384,7 +384,7 @@
#define _get_struct_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xfa.x); \
d0 = XREG((*_PREG)->y_u.xfa.x); \
deref_head(d0, gstruct_unk); \
\
gstruct_nonvar: \
@@ -393,7 +393,7 @@
} \
CACHE_S(); \
S_SREG = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
if (*S_SREG != d0) { \
FAIL(); \
} \
@@ -409,9 +409,9 @@
Bind(pt0, d1); \
pt0 = HR; \
ENDD(d1); \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.xfa.a; \
HR = pt0 + (*_PREG)->y_u.xfa.a; \
(*_PREG) = NEXTOP((*_PREG), xfa); \
(*_SREG) = pt0; \
GONEXTW(); \
@@ -421,7 +421,7 @@
#if SIZEOF_DOUBLE == 2*SIZEOF_INT_P
#define _get_float_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xd.x); \
d0 = XREG((*_PREG)->y_u.xd.x); \
deref_head(d0, gfloat_unk); \
\
gfloat_nonvar: \
@@ -434,7 +434,7 @@
FAIL(); \
} \
BEGP(pt1); \
pt1 = (*_PREG)->u.xd.d; \
pt1 = (*_PREG)->y_u.xd.d; \
(*_PREG) = NEXTOP((*_PREG), xd); \
if ( \
pt1[1] != pt0[1] \
@@ -449,7 +449,7 @@
BEGP(pt0); \
deref_body(d0, pt0, gfloat_unk, gfloat_nonvar); \
BEGD(d1); \
d1 = AbsAppl((*_PREG)->u.xd.d); \
d1 = AbsAppl((*_PREG)->y_u.xd.d); \
(*_PREG) = NEXTOP((*_PREG), xd); \
Bind(pt0, d1); \
GONEXT(); \
@@ -459,7 +459,7 @@
#else /* SIZEOF_DOUBLE == 2*SIZEOF_INT_P */
#define _get_float_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xd.x); \
d0 = XREG((*_PREG)->y_u.xd.x); \
deref_head(d0, gfloat_unk); \
\
gfloat_nonvar: \
@@ -472,7 +472,7 @@
FAIL(); \
} \
BEGP(pt1); \
pt1 = (*_PREG)->u.xd.d; \
pt1 = (*_PREG)->y_u.xd.d; \
(*_PREG) = NEXTOP((*_PREG), xd); \
if ( \
pt1[1] != pt0[1] \
@@ -486,7 +486,7 @@
BEGP(pt0); \
deref_body(d0, pt0, gfloat_unk, gfloat_nonvar); \
BEGD(d1); \
d1 = AbsAppl((*_PREG)->u.xd.d); \
d1 = AbsAppl((*_PREG)->y_u.xd.d); \
(*_PREG) = NEXTOP((*_PREG), xd); \
Bind(pt0, d1); \
GONEXT(); \
@@ -498,7 +498,7 @@
#define GET_LONGINT_INSTINIT \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xi.x);
d0 = XREG((*_PREG)->y_u.xi.x);
#define GET_LONGINT_GLONGINT_NONVAR_INIT \
START_PREFETCH(xi); \
@@ -511,7 +511,7 @@
#define GET_LONGINT_GLONGINT_UNK \
START_PREFETCH(xi); \
d1 = AbsAppl((*_PREG)->u.xi.i); \
d1 = AbsAppl((*_PREG)->y_u.xi.i); \
(*_PREG) = NEXTOP((*_PREG), xi); \
Bind(pt0, d1); \
GONext(); \
@@ -521,7 +521,7 @@
#define GET_BIGINT_INSTINIT \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xN.x);
d0 = XREG((*_PREG)->y_u.xN.x);
#define GET_BIGINT_GBIGINT_NONVAR_INIT \
START_PREFETCH(xN); \
@@ -534,7 +534,7 @@
#define GET_BIGINT_GBIGINT_UNK \
START_PREFETCH(xN); \
d1 = (*_PREG)->u.xN.b; \
d1 = (*_PREG)->y_u.xN.b; \
(*_PREG) = NEXTOP((*_PREG), xN); \
Bind(pt0, d1); \
GONext(); \
@@ -544,17 +544,17 @@
#define GET_DBTERM_INSTINIT \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xD.x);
d0 = XREG((*_PREG)->y_u.xD.x);
#define GET_DBTERM_GDBTERM_NONVAR \
BLOCK = (CELL)GET_DBTERM_GDBTERM_NONVAR; \
d1 = (*_PREG)->u.xD.D; \
d1 = (*_PREG)->y_u.xD.D; \
(*_PREG) = NEXTOP((*_PREG), xD); \
YAAM_UNIFYBOUND;
#define GET_DBTERM_GDBTERM_UNK \
START_PREFETCH(xD); \
d1 = (*_PREG)->u.xD.D; \
d1 = (*_PREG)->y_u.xD.D; \
(*_PREG) = NEXTOP((*_PREG), xD); \
Bind(pt0, d1); \
GONext(); \
@@ -562,7 +562,7 @@
#define _glist_valx_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xx.xl); \
d0 = XREG((*_PREG)->y_u.xx.xl); \
deref_head(d0, glist_valx_write); \
glist_valx_read: \
BEGP(pt0); \
@@ -576,7 +576,7 @@
\
glist_valx_nonvar: \
BEGD(d1); \
d1 = XREG((*_PREG)->u.xx.xr); \
d1 = XREG((*_PREG)->y_u.xx.xr); \
deref_head(d1, glist_valx_nonvar_unk); \
\
glist_valx_nonvar_nonvar: \
@@ -592,7 +592,7 @@
ENDD(d1); \
\
derefa_body(d0, pt0, glist_valx_unk, glist_valx_nonvar); \
d0 = XREG((*_PREG)->u.xx.xr); \
d0 = XREG((*_PREG)->y_u.xx.xr); \
deref_head(d0, glist_valx_var_unk); \
\
glist_valx_var_nonvar: \
@@ -613,7 +613,7 @@
CACHE_S(); \
S_SREG = HR; \
BEGD(d1); \
d1 = XREG((*_PREG)->u.xx.xr); \
d1 = XREG((*_PREG)->y_u.xx.xr); \
d0 = AbsPair(S_SREG); \
S_SREG[0] = d1; \
ENDD(d1); \
@@ -629,7 +629,7 @@
#define GLIST_VALY_INSTINIT \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GLIST_VALY_GLIST_VALY_READ \
if (!IsPairTerm(d0)) { \
@@ -641,7 +641,7 @@
d0 = *pt0;
#define GLIST_VALY_GLIST_VALY_NONVAR \
pt1 = YREG + (*_PREG)->u.yx.y; \
pt1 = YREG + (*_PREG)->y_u.yx.y; \
d1 = *pt1; \
(*_PREG) = NEXTOP((*_PREG), yx);
@@ -655,7 +655,7 @@
GONext();
#define GLIST_VALY_GLIST_VALY_UNK \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GLIST_VALY_GLIST_VALY_VAR_NONVAR \
@@ -674,7 +674,7 @@
pt1 = HR; \
d0 = AbsPair(pt1); \
Bind(pt0, d0); \
d0 = YREG[(*_PREG)->u.yx.y]; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
pt1[0] = d0; \
HR = pt1 + 2; \
(*_SREG) = pt1 + 1; \
@@ -684,7 +684,7 @@
#define _gl_void_varx_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.xx.xl); \
d0 = XREG((*_PREG)->y_u.xx.xl); \
deref_head(d0, glist_void_varx_write); \
glist_void_varx_read: \
if (!IsPairTerm(d0)) { \
@@ -693,7 +693,7 @@
BEGP(pt0); \
pt0 = RepPair(d0); \
d0 = pt0[1]; \
XREG((*_PREG)->u.xx.xr) = d0; \
XREG((*_PREG)->y_u.xx.xr) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONEXT(); \
ENDP(pt0); \
@@ -702,7 +702,7 @@
deref_body(d0, pt0, glist_void_varx_write, glist_void_varx_read); \
BEGP(pt1); \
pt1 = HR; \
XREG((*_PREG)->u.xx.xr) = \
XREG((*_PREG)->y_u.xx.xr) = \
Unsigned(pt1 + 1); \
RESET_VARIABLE(pt1); \
RESET_VARIABLE(pt1+1); \
@@ -721,7 +721,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GL_VOID_VARY_GLIST_VOID_VARY_READ \
BLOCK = (CELL)GL_VOID_VARY_GLIST_VOID_VARY_READ; \
@@ -732,14 +732,14 @@
else { \
pt0 = RepPair(d0); \
d0 = pt0[1]; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.yx.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.yx.y,d0); \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
}
#define GL_VOID_VARY_GLIST_VOID_VARY_WRITE \
pt1 = HR; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.yx.y,Unsigned(pt1 + 1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.yx.y,Unsigned(pt1 + 1)); \
(*_PREG) = NEXTOP((*_PREG), yx); \
RESET_VARIABLE(pt1); \
RESET_VARIABLE(pt1+1); \
@@ -752,7 +752,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GL_VOID_VALX_GLIST_VOID_VALX_READ \
BLOCK = (CELL)GL_VOID_VALX_GLIST_VOID_VALX_READ; \
@@ -766,7 +766,7 @@
}
#define GL_VOID_VALX_GLIST_VOID_VALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GL_VOID_VALX_GLIST_VOID_VALX_NONVAR_NONVAR \
BLOCK = (CELL)GL_VOID_VALX_GLIST_VOID_VALX_NONVAR_NONVAR; \
@@ -779,7 +779,7 @@
GONext();
#define GL_VOID_VALX_GLIST_VOID_VALX_UNK \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GL_VOID_VALX_GLIST_VOID_VALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -796,7 +796,7 @@
d0 = AbsPair(pt1); \
Bind(pt0, d0); \
pt1 = HR; \
d0 = XREG((*_PREG)->u.xx.xr); \
d0 = XREG((*_PREG)->y_u.xx.xr); \
RESET_VARIABLE(pt1); \
pt1[1] = d0; \
HR = pt1 + 2; \
@@ -807,7 +807,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GL_VOID_VALY_GLIST_VOID_VALY_READ \
BLOCK = (CELL)GL_VOID_VALY_GLIST_VOID_VALY_READ; \
@@ -821,7 +821,7 @@
}
#define GL_VOID_VALY_GLIST_VOID_VALY_NONVAR \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GL_VOID_VALY_GLIST_VOID_VALY_NONVAR_NONVAR \
@@ -835,7 +835,7 @@
GONext();
#define GL_VOID_VALY_GLIST_VOID_VALY_UNK \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GL_VOID_VALY_GLIST_VOID_VALY_VAR_NONVAR \
@@ -854,7 +854,7 @@
d0 = AbsPair(S_SREG); \
Bind(pt0, d0); \
S_SREG = HR; \
d1 = YREG[(*_PREG)->u.yx.y]; \
d1 = YREG[(*_PREG)->y_u.yx.y]; \
RESET_VARIABLE(S_SREG); \
S_SREG[1] = d1; \
(*_PREG) = NEXTOP((*_PREG), yx); \

View File

@@ -1,6 +1,6 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define check_stack_on_either \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) return external_labels[4];
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) return external_labels[4];
#else
#define check_stack_on_either \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[4];
@@ -13,7 +13,7 @@
GONext();
#define LOCK_LU_PARALLEL \
PP = (*_PREG)->u.p.p; \
PP = (*_PREG)->y_u.p.p; \
PELOCK(3, PP);
#endif
@@ -37,7 +37,7 @@
#if MULTIPLE_STACKS
#define ALLOC_FOR_LOGICAL_PRED_MULTIPLE_STACKS \
LogUpdClause *cl = (*_PREG)->u.L.ClBase;
LogUpdClause *cl = (*_PREG)->y_u.L.ClBase;
#if PARALLEL_YAP
#define ALLOC_FOR_LOGICAL_PRED_MULTIPLE_STACKS_PARALLEL \
PredEntry *ap = cl->ClPred;
@@ -49,7 +49,7 @@
PP = NULL;
#else
#define ALLOC_FOR_LOGICAL_PRED_NOMULTIPLE_STACKS_INIT \
LogUpdClause *cl = (LogUpdClause *)(*_PREG)->u.L.ClBase;
LogUpdClause *cl = (LogUpdClause *)(*_PREG)->y_u.L.ClBase;
#define ALLOC_FOR_LOGICAL_PRED_NOMULTIPLE_STACKS_IFOK \
cl->ClFlags |= InUseMask; \
@@ -539,8 +539,8 @@
JMPNext();
#define ENSURE_SPACE_INSTINIT \
Int sz = (*_PREG)->u.Osbpa.i; \
UInt arity = (*_PREG)->u.Osbpa.p->ArityOfPE;
Int sz = (*_PREG)->y_u.Osbpa.i; \
UInt arity = (*_PREG)->y_u.Osbpa.p->ArityOfPE;
#define ENSURE_SPACE_FIRSTIFOK_INIT \
YENV[E_CP] = (CELL) (*_CPREG); \
@@ -552,7 +552,7 @@
#endif
#define ENSURE_SPACE_FIRSTIFOK_END \
SET_ASP(YREG, (*_PREG)->u.Osbpa.s); \
SET_ASP(YREG, (*_PREG)->y_u.Osbpa.s); \
(*_PREG) = NEXTOP((*_PREG),Osbpa); \
saveregs();
@@ -571,7 +571,7 @@
JMPNext();
#define _jump_instinit \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
BACK();
#define MOVE_BACK_INSTINIT \
@@ -596,7 +596,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -604,7 +604,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -622,7 +622,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -630,7 +630,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -649,14 +649,14 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -674,7 +674,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -682,7 +682,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -697,7 +697,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -705,7 +705,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -721,14 +721,14 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -747,7 +747,7 @@
low_level_trace(try_or, (PredEntry *)(*_PREG), NULL); \
} \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -755,7 +755,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -769,7 +769,7 @@
low_level_trace(try_or, (PredEntry *)(*_PREG), NULL); \
} \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -777,7 +777,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -792,14 +792,14 @@
low_level_trace(try_or, (PredEntry *)(*_PREG), NULL); \
} \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -813,7 +813,7 @@
#ifdef YAPOR_SBA
#define _either_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -821,7 +821,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -832,7 +832,7 @@
#else /* YAPOR_SBA */
#define _either_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -840,7 +840,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -852,14 +852,14 @@
#else /* FROZEN_STACKS */
#define _either_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SCH_set_load(pt1); \
SET_BB(pt1); \
@@ -884,7 +884,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -892,7 +892,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -909,7 +909,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -917,7 +917,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -935,14 +935,14 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -959,7 +959,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -967,7 +967,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -981,7 +981,7 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -989,7 +989,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1004,14 +1004,14 @@
ENDCACHE_Y_AS_ENV(); \
either_notest: \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1029,7 +1029,7 @@
low_level_trace(try_or, (PredEntry *)(*_PREG), NULL); \
} \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -1037,7 +1037,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1050,7 +1050,7 @@
low_level_trace(try_or, (PredEntry *)(*_PREG), NULL); \
} \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -1058,7 +1058,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1072,14 +1072,14 @@
low_level_trace(try_or, (PredEntry *)(*_PREG), NULL); \
} \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1092,7 +1092,7 @@
#ifdef YAPOR_SBA
#define _either_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -1100,7 +1100,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1110,7 +1110,7 @@
#else /* YAPOR_SBA */
#define _either_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
choiceptr top_b = PROTECT_FROZEN_B(B); \
@@ -1118,7 +1118,7 @@
pt1 = top_b; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1129,14 +1129,14 @@
#else /* FROZEN_STACKS */
#define _either_instinit \
BEGD(d0); \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
BEGCHO(pt1); \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0); \
if (pt1 > B) \
pt1 = B; \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1); \
SET_BB(pt1); \
ENDCHO(pt1); \
@@ -1149,7 +1149,7 @@
#endif /* YAPOR */
#define OR_ELSE_INSTINIT \
HR = HRBREG = PROTECT_FROZEN_H(B); \
HR = HBREG = PROTECT_FROZEN_H(B); \
ENV = B->cp_env; \
B->cp_cp = (*_PREG);
@@ -1163,11 +1163,11 @@
#ifdef YAPOR
#define OR_ELSE_YAPOR \
SCH_new_alternative((*_PREG), (*_PREG)->u.Osblp.l);
SCH_new_alternative((*_PREG), (*_PREG)->y_u.Osblp.l);
#endif
#define OR_ELSE_END \
B->cp_ap = (*_PREG)->u.Osblp.l; \
B->cp_ap = (*_PREG)->y_u.Osblp.l; \
(*_PREG) = NEXTOP((*_PREG), Osblp); \
YREG = (CELL *) B->cp_a1; \
GONext();
@@ -1178,7 +1178,7 @@
#ifdef YAPOR
#define OR_LAST_IFOK_INIT \
H = HRBREG = PROTECT_FROZEN_H(pt0); \
HR = HBREG = PROTECT_FROZEN_H(pt0); \
YREG = (CELL *) pt0->cp_a1; \
ENV = pt0->cp_env;
@@ -1193,7 +1193,7 @@
#define OR_LAST_NOIF_INIT \
B = pt0->cp_b; \
H = PROTECT_FROZEN_H(pt0); \
HR = PROTECT_FROZEN_H(pt0); \
YREG = (CELL *) pt0->cp_a1; \
ENV = pt0->cp_env;
@@ -1346,7 +1346,7 @@
JMPNext();
#define EXPAND_CLAUSES_INSTINIT \
PredEntry *pe = (*_PREG)->u.sssllp.p; \
PredEntry *pe = (*_PREG)->y_u.sssllp.p; \
yamop *pt0; \
SET_ASP(YREG, E_CB*sizeof(CELL));
@@ -1400,7 +1400,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1412,14 +1412,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1428,7 +1428,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1463,7 +1463,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1475,14 +1475,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1491,7 +1491,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1525,7 +1525,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1537,14 +1537,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1553,7 +1553,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1588,7 +1588,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1600,14 +1600,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1616,7 +1616,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1697,7 +1697,7 @@
HR[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
#define SPY_PRED_D0ISNOZERO_INIT \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR[d0 + 2] = AbsAppl(HR); \
HR++; \
pt1 = XREGS + 1;
@@ -1707,10 +1707,10 @@
d1 = *pt0;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_DOSPY_NONVAR \
*H++ = d1;
*HR++ = d1;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_SAFEVAR \
*H++ = (CELL)pt0;
*HR++ = (CELL)pt0;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_UNSAFEVAR \
d1 = Unsigned(HR); \
@@ -1719,7 +1719,7 @@
Bind_Local(pt0, d1);
#define SPY_PRED_POST_IFS \
H[0] = Yap_Module_Name(pe); \
HR[0] = Yap_Module_Name(pe); \
ARG1 = (Term) AbsPair(HR); \
HR += 2; \
PredEntry *pt0;

View File

@@ -1,7 +1,7 @@
#define POP_N_INIT \
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
SP = (CELL *) (((char *) SP) + d0); \
d0 = SP[0]; \
if (d0) { \

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
#define _put_x_var_instinit \
register CELL *pt0; \
pt0 = HR; \
XREG((*_PREG)->u.xx.xl) = Unsigned(pt0); \
XREG((*_PREG)->y_u.xx.xl) = Unsigned(pt0); \
HR = pt0 + 1; \
XREG((*_PREG)->u.xx.xr) = Unsigned(pt0); \
XREG((*_PREG)->y_u.xx.xr) = Unsigned(pt0); \
(*_PREG) = NEXTOP((*_PREG), xx); \
RESET_VARIABLE(pt0); \
GONEXT();
@@ -11,8 +11,8 @@
#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
#define _put_y_var_instinit \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
XREG((*_PREG)->u.yx.x) = (CELL) pt0; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
XREG((*_PREG)->y_u.yx.x) = (CELL) pt0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
if (Unsigned((Int)(pt0)-(Int)(H_FZ)) > \
Unsigned((Int)(B_FZ)-(Int)(H_FZ))) { \
@@ -23,8 +23,8 @@
#else /* defined(YAPOR_SBA) && defined(FROZEN_STACKS) */
#define _put_y_var_instinit \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
XREG((*_PREG)->u.yx.x) = (CELL) pt0; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
XREG((*_PREG)->y_u.yx.x) = (CELL) pt0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
INITIALIZE_PERMVAR(pt0, (CELL)pt0); \
GONEXT();
@@ -32,35 +32,35 @@
#define _put_x_val_instinit \
register CELL d0; \
d0 = XREG((*_PREG)->u.xx.xl); \
XREG((*_PREG)->u.xx.xr) = d0; \
d0 = XREG((*_PREG)->y_u.xx.xl); \
XREG((*_PREG)->y_u.xx.xr) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONEXT();
#define _put_xx_val_instinit \
register CELL d0, d1; \
d0 = XREG((*_PREG)->u.xxxx.xl1); \
d1 = XREG((*_PREG)->u.xxxx.xl2); \
XREG((*_PREG)->u.xxxx.xr1) = d0; \
XREG((*_PREG)->u.xxxx.xr2) = d1; \
d0 = XREG((*_PREG)->y_u.xxxx.xl1); \
d1 = XREG((*_PREG)->y_u.xxxx.xl2); \
XREG((*_PREG)->y_u.xxxx.xr1) = d0; \
XREG((*_PREG)->y_u.xxxx.xr2) = d1; \
(*_PREG) = NEXTOP((*_PREG), xxxx); \
GONEXT();
#ifdef YAPOR_SBA
#define _put_y_val_instinit \
register CELL d0; \
d0 = YREG[(*_PREG)->u.yx.y]; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
if (d0 == 0) { \
XREG((*_PREG)->u.yx.x) = (CELL)(YREG+(*_PREG)->u.yx.y); \
XREG((*_PREG)->y_u.yx.x) = (CELL)(YREG+(*_PREG)->y_u.yx.y); \
} else \
XREG((*_PREG)->u.yx.x) = d0; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONEXT();
#else /* YAPOR_SBA */
#define _put_y_val_instinit \
register CELL d0; \
d0 = YREG[(*_PREG)->u.yx.y]; \
XREG((*_PREG)->u.yx.x) = d0; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONEXT();
#endif /* YAPOR_SBA */
@@ -68,51 +68,51 @@
#ifdef YAPOR_SBA
#define _put_y_vals_instinit \
register CELL d0, d1; \
d0 = YREG[(*_PREG)->u.yyxx.y1]; \
d0 = YREG[(*_PREG)->y_u.yyxx.y1]; \
if (d0 == 0) \
XREG((*_PREG)->u.yyxx.x1) = (CELL)(YREG+(*_PREG)->u.yyxx.y1); \
XREG((*_PREG)->y_u.yyxx.x1) = (CELL)(YREG+(*_PREG)->y_u.yyxx.y1); \
else \
XREG((*_PREG)->u.yyxx.x1) = d0; \
XREG((*_PREG)->y_u.yyxx.x1) = d0; \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
d1 = YREG[PREVOP((*_PREG),yyxx)->u.yyxx.y2]; \
d1 = YREG[PREVOP((*_PREG),yyxx)->y_u.yyxx.y2]; \
if (d1 == 0) \
XREG(PREVOP((*_PREG)->u.yyxx,yyxx).x2) = (CELL)(YREG+(*_PREG)->u.yyxx.y2); \
XREG(PREVOP((*_PREG)->y_u.yyxx,yyxx).x2) = (CELL)(YREG+(*_PREG)->y_u.yyxx.y2); \
else \
XREG(PREVOP((*_PREG),yyxx)->u.yyxx.x2) = d1; \
XREG(PREVOP((*_PREG),yyxx)->y_u.yyxx.x2) = d1; \
GONEXT();
#else /* YAPOR_SBA */
#define _put_y_vals_instinit \
register CELL d0, d1; \
d0 = YREG[(*_PREG)->u.yyxx.y1]; \
XREG((*_PREG)->u.yyxx.x1) = d0; \
d0 = YREG[(*_PREG)->y_u.yyxx.y1]; \
XREG((*_PREG)->y_u.yyxx.x1) = d0; \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
d1 = YREG[PREVOP((*_PREG),yyxx)->u.yyxx.y2]; \
XREG(PREVOP((*_PREG),yyxx)->u.yyxx.x2) = d1; \
d1 = YREG[PREVOP((*_PREG),yyxx)->y_u.yyxx.y2]; \
XREG(PREVOP((*_PREG),yyxx)->y_u.yyxx.x2) = d1; \
GONEXT();
#endif /* YAPOR_SBA */
#define _put_unsafe_instinit \
BEGD(d0); \
BEGP(pt0); \
pt0 = YREG+(*_PREG)->u.yx.y; \
pt0 = YREG+(*_PREG)->y_u.yx.y; \
d0 = *pt0; \
deref_head(d0, punsafe_unk); \
punsafe_nonvar: \
XREG((*_PREG)->u.yx.x) = d0; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONEXT(); \
\
derefa_body(d0, pt0, punsafe_unk, punsafe_nonvar); \
if (pt0 <= HR || pt0 >= YREG) { \
XREG((*_PREG)->u.yx.x) = Unsigned(pt0); \
XREG((*_PREG)->y_u.yx.x) = Unsigned(pt0); \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONEXT(); \
} \
else { \
Bind_Local(pt0, Unsigned(HR)); \
XREG((*_PREG)->u.yx.x) = (CELL) HR; \
XREG((*_PREG)->y_u.yx.x) = (CELL) HR; \
RESET_VARIABLE(HR); \
H++; \
HR++; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONEXT(); \
} \
@@ -121,36 +121,36 @@
#define _put_atom_instinit \
register CELL d0; \
d0 = (*_PREG)->u.xc.c; \
XREG((*_PREG)->u.xc.x) = d0; \
d0 = (*_PREG)->y_u.xc.c; \
XREG((*_PREG)->y_u.xc.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xc); \
GONEXT();
#define PUT_DBTERM_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.xD.D; \
XREG((*_PREG)->u.xD.x) = d0; \
d0 = (*_PREG)->y_u.xD.D; \
XREG((*_PREG)->y_u.xD.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xD); \
GONext();
#define PUT_BIGINT_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.xN.b; \
XREG((*_PREG)->u.xN.x) = d0; \
d0 = (*_PREG)->y_u.xN.b; \
XREG((*_PREG)->y_u.xN.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xN); \
GONext();
#define _put_float_instinit \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.xd.d); \
XREG((*_PREG)->u.xd.x) = d0; \
d0 = AbsAppl((*_PREG)->y_u.xd.d); \
XREG((*_PREG)->y_u.xd.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xd); \
GONEXT();
#define PUT_LONGINT_INSTINIT \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.xi.i); \
XREG((*_PREG)->u.xi.x) = d0; \
d0 = AbsAppl((*_PREG)->y_u.xi.i); \
XREG((*_PREG)->y_u.xi.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xi); \
GONext();
@@ -161,7 +161,7 @@
S_SREG = HR; \
HR += 2; \
d0 = AbsPair(S_SREG); \
XREG((*_PREG)->u.x.x) = d0; \
XREG((*_PREG)->y_u.x.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), x); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -170,11 +170,11 @@
#define _put_struct_instinit \
register CELL d0; \
d0 = AbsAppl(HR); \
XREG((*_PREG)->u.xfa.x) = d0; \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
*H++ = d0; \
XREG((*_PREG)->y_u.xfa.x) = d0; \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
*HR++ = d0; \
(*_SREG) = HR; \
HR += (*_PREG)->u.xfa.a; \
HR += (*_PREG)->y_u.xfa.a; \
(*_PREG) = NEXTOP((*_PREG), xfa); \
GONEXT();

View File

@@ -8,7 +8,7 @@
d0 = (CELL)S_SREG; \
} \
WRITEBACK_S(S_SREG+1); \
XREG((*_PREG)->u.ox.x) = d0; \
XREG((*_PREG)->y_u.ox.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXT(); \
ENDD(d0); \
@@ -20,7 +20,7 @@
BEGD(d0); \
d0 = *S_SREG; \
WRITEBACK_S(S_SREG+1); \
XREG((*_PREG)->u.ox.x) = d0; \
XREG((*_PREG)->y_u.ox.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXT(); \
ENDD(d0); \
@@ -31,7 +31,7 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
RESET_VARIABLE(S_SREG); \
*pt0 = (CELL) S_SREG; \
@@ -44,7 +44,7 @@
BEGP(pt0); \
BEGD(d0); \
d0 = SREG[0]; \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
if (d0 == 0) { \
d0 = (CELL)SREG; \
@@ -58,7 +58,7 @@
BEGP(pt0); \
BEGD(d0); \
d0 = (*_SREG)[0]; \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
*pt0 = d0; \
GONEXT(); \
@@ -70,7 +70,7 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
RESET_VARIABLE(S_SREG); \
*pt0 = (CELL)S_SREG; \
@@ -82,7 +82,7 @@
CACHE_S(); \
READ_IN_S(); \
BEGP(pt0); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
BEGD(d0); \
d0 = S_SREG[0]; \
BEGD(d1); \
@@ -94,7 +94,7 @@
d1 = (CELL)(S_SREG+1); \
} \
WRITEBACK_S(S_SREG+2); \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
*pt0 = d1; \
ENDD(d0); \
@@ -107,13 +107,13 @@
CACHE_S(); \
READ_IN_S(); \
BEGP(pt0); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
BEGD(d0); \
d0 = S_SREG[0]; \
BEGD(d1); \
d1 = S_SREG[1]; \
WRITEBACK_S(S_SREG+2); \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
*pt0 = d1; \
ENDD(d0); \
@@ -127,9 +127,9 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
RESET_VARIABLE(S_SREG); \
XREG((*_PREG)->u.oxx.xl) = (CELL) S_SREG; \
XREG((*_PREG)->y_u.oxx.xl) = (CELL) S_SREG; \
S_SREG++; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
RESET_VARIABLE(S_SREG); \
@@ -144,13 +144,13 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1]; \
if (d0 == 0) \
XREG((*_PREG)->u.oxx.xl) = (CELL)S_SREG; \
XREG((*_PREG)->y_u.oxx.xl) = (CELL)S_SREG; \
else \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
if (d1 == 0) \
*pt0 = (CELL)(S_SREG+1); \
@@ -164,11 +164,11 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1]; \
{ \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
} \
(*_PREG) = NEXTOP((*_PREG), oxx); \
{ \
@@ -182,8 +182,8 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
XREG((*_PREG)->u.oxx.xl) = (CELL) S_SREG; \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
XREG((*_PREG)->y_u.oxx.xl) = (CELL) S_SREG; \
RESET_VARIABLE(S_SREG); \
S_SREG++; \
*pt0 = (CELL) S_SREG; \
@@ -197,7 +197,7 @@
register CELL d0; \
d0 = *(*_SREG)++; \
if (d0 == 0) { \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL)((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL)((*_SREG)-1)); \
} else \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONEXT();
@@ -205,7 +205,7 @@
#define _unify_y_var_instinit \
register CELL d0; \
d0 = *(*_SREG)++; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,d0); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONEXT();
#endif /* YAPOR_SBA */
@@ -213,7 +213,7 @@
#define _unify_y_var_write_instinit \
CACHE_S(); \
READ_IN_S(); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL) S_SREG); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL) S_SREG); \
(*_PREG) = NEXTOP((*_PREG), oy); \
RESET_VARIABLE(S_SREG); \
WRITEBACK_S(S_SREG+1); \
@@ -225,7 +225,7 @@
register CELL d0; \
d0 = (*_SREG)[0]; \
if (d0 == 0) { \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL)(*_SREG)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL)(*_SREG)); \
} else \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONEXT();
@@ -233,7 +233,7 @@
#define _unify_l_y_var_instinit \
register CELL d0; \
d0 = (*_SREG)[0]; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,d0); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONEXT();
#endif /* YAPOR_SBA */
@@ -241,7 +241,7 @@
#define _unify_l_y_var_write_instinit \
CACHE_S(); \
READ_IN_S(); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL) S_SREG); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL) S_SREG); \
(*_PREG) = NEXTOP((*_PREG), oy); \
RESET_VARIABLE(S_SREG); \
ENDCACHE_S(); \
@@ -256,7 +256,7 @@
deref_head(d0, uvalx_unk); \
\
uvalx_nonvar: \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, uvalx_nonvar_unk); \
\
uvalx_nonvar_nonvar: \
@@ -273,7 +273,7 @@
ENDP(pt1); \
\
derefa_body(d0, pt0, uvalx_unk, uvalx_nonvar); \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, uvalx_var_unk); \
\
uvalx_var_nonvar: \
@@ -294,7 +294,7 @@
ENDD(d0);
#define _unify_x_val_write_instinit \
*(*_SREG)++ = XREG((*_PREG)->u.ox.x); \
*(*_SREG)++ = XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXTW();
@@ -307,7 +307,7 @@
deref_head(d0, ulvalx_unk); \
\
ulvalx_nonvar: \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, ulvalx_nonvar_unk); \
\
ulvalx_nonvar_nonvar: \
@@ -322,7 +322,7 @@
ENDP(pt1); \
\
derefa_body(d0, pt0, ulvalx_unk, ulvalx_nonvar); \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, ulvalx_var_unk); \
\
ulvalx_var_nonvar: \
@@ -341,7 +341,7 @@
ENDD(d0);
#define _unify_l_x_val_write_instinit \
(*_SREG)[0] = XREG((*_PREG)->u.ox.x); \
(*_SREG)[0] = XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXT();
@@ -352,7 +352,7 @@
d0 = *pt0;
#define UNIFY_Y_VAL_UVALY_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_VAL_UVALY_NONVAR_NONVAR \
@@ -368,7 +368,7 @@
GONext();
#define UNIFY_Y_VAL_UVALY_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_VAL_UVALY_VAR_NONVAR \
@@ -386,9 +386,9 @@
#ifdef YAPOR_SBA
#define UNIFY_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
if (d0 == 0) \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->u.oy.y); \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->y_u.oy.y); \
else \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
@@ -396,7 +396,7 @@
#else /* YAPOR_SBA */
#define UNIFY_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();
@@ -409,7 +409,7 @@
d0 = *pt0;
#define UNIFY_L_Y_VAL_ULVALY_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_VAL_ULVALY_NONVAR_NONVAR \
@@ -423,7 +423,7 @@
GONext();
#define UNIFY_L_Y_VAL_ULVALY_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_VAL_ULVALY_VAR_NONVAR \
@@ -439,9 +439,9 @@
#ifdef YAPOR_SBA
#define UNIFY_L_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
if (d0 == 0) \
(*_SREG)[0] = (CELL)(YREG+(*_PREG)->u.oy.y); \
(*_SREG)[0] = (CELL)(YREG+(*_PREG)->y_u.oy.y); \
else \
(*_SREG)[0] = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
@@ -449,7 +449,7 @@
#else /* YAPOR_SBA */
#define UNIFY_L_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
(*_SREG)[0] = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -464,7 +464,7 @@
deref_head(d0, uvalx_loc_unk); \
\
uvalx_loc_nonvar: \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, uvalx_loc_nonvar_unk); \
\
uvalx_loc_nonvar_nonvar: \
@@ -481,7 +481,7 @@
ENDP(pt1); \
\
derefa_body(d0, pt0, uvalx_loc_unk, uvalx_loc_nonvar); \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, uvalx_loc_var_unk); \
\
uvalx_loc_var_nonvar: \
@@ -503,7 +503,7 @@
#define _unify_x_loc_write_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.ox.x); \
d0 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d0, unify_x_loc_unk); \
unify_x_loc_nonvar: \
*(*_SREG)++ = d0; \
@@ -538,7 +538,7 @@
deref_head(d0, ulvalx_loc_unk); \
\
ulvalx_loc_nonvar: \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, ulvalx_loc_nonvar_unk); \
\
ulvalx_loc_nonvar_nonvar: \
@@ -551,7 +551,7 @@
GONEXT(); \
\
derefa_body(d0, pt0, ulvalx_loc_unk, ulvalx_loc_nonvar); \
d1 = XREG((*_PREG)->u.ox.x); \
d1 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d1, ulvalx_loc_var_unk); \
\
ulvalx_loc_var_nonvar: \
@@ -571,7 +571,7 @@
#define _unify_l_x_loc_write_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.ox.x); \
d0 = XREG((*_PREG)->y_u.ox.x); \
deref_head(d0, ulnify_x_loc_unk); \
ulnify_x_loc_nonvar: \
(*_SREG)[0] = d0; \
@@ -600,7 +600,7 @@
d0 = *pt0;
#define UNIFY_Y_LOC_UVALY_LOC_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_LOC_UVALY_LOC_NONVAR_NONVAR \
@@ -616,7 +616,7 @@
GONext();
#define UNIFY_Y_LOC_UVALY_LOC_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_LOC_UVALY_LOC_VAR_NONVAR \
@@ -634,7 +634,7 @@
#define UNIFY_Y_LOC_WRITE_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.oy.y; \
pt0 = YREG+(*_PREG)->y_u.oy.y; \
d0 = *pt0;
#define UNIFY_Y_LOC_WRITE_UNIFY_Y_LOC_NONVAR \
@@ -665,7 +665,7 @@
d0 = *pt0;
#define UNIFY_L_Y_LOC_ULVALY_LOC_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_LOC_ULVALY_LOC_NONVAR_NONVAR \
@@ -679,7 +679,7 @@
GONext();
#define UNIFY_L_Y_LOC_ULVALY_LOC_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_LOC_ULVALY_LOC_VAR_NONVAR \
@@ -695,7 +695,7 @@
#define UNIFY_L_Y_LOC_WRITE_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.oy.y; \
pt0 = YREG+(*_PREG)->y_u.oy.y; \
d0 = *pt0;
#define UNIFY_L_Y_LOC_WRITE_ULUNIFY_Y_LOC_NONVAR \
@@ -742,14 +742,14 @@
GONext();
#define _unify_n_voids_instinit \
(*_SREG) += (*_PREG)->u.os.s; \
(*_SREG) += (*_PREG)->y_u.os.s; \
(*_PREG) = NEXTOP((*_PREG), os); \
GONEXT();
#define _unify_n_voids_write_instinit \
register CELL d0; \
CACHE_S(); \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
READ_IN_S(); \
(*_PREG) = NEXTOP((*_PREG), os); \
for (; d0 > 0; d0--) { \
@@ -766,7 +766,7 @@
#define _unify_l_n_voids_write_instinit \
register CELL d0; \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
(*_PREG) = NEXTOP((*_PREG), os); \
CACHE_S(); \
READ_IN_S(); \
@@ -784,14 +784,14 @@
d0 = *pt0; \
deref_head(d0, uatom_unk); \
uatom_nonvar: \
if (d0 != (*_PREG)->u.oc.c) { \
if (d0 != (*_PREG)->y_u.oc.c) { \
FAIL(); \
} \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONEXT(); \
\
derefa_body(d0, pt0, uatom_unk, uatom_nonvar); \
d0 = (*_PREG)->u.oc.c; \
d0 = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
Bind_Global(pt0, d0); \
GONEXT(); \
@@ -799,7 +799,7 @@
ENDD(d0);
#define _unify_atom_write_instinit \
* (*_SREG)++ = (*_PREG)->u.oc.c; \
* (*_SREG)++ = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONEXTW();
@@ -810,14 +810,14 @@
d0 = *(*_SREG); \
deref_head(d0, ulatom_unk); \
ulatom_nonvar: \
if (d0 != (*_PREG)->u.oc.c) { \
if (d0 != (*_PREG)->y_u.oc.c) { \
FAIL(); \
} \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONEXT(); \
\
derefa_body(d0, pt0, ulatom_unk, ulatom_nonvar); \
d0 = (*_PREG)->u.oc.c; \
d0 = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
Bind_Global(pt0, d0); \
GONEXT(); \
@@ -825,15 +825,15 @@
ENDD(d0);
#define _unify_l_atom_write_instinit \
(*_SREG)[0] = (*_PREG)->u.oc.c; \
(*_SREG)[0] = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONEXT();
#define UNIFY_N_ATOMS_INSTINIT \
register Int i = (*_PREG)->u.osc.s; \
register Int i = (*_PREG)->y_u.osc.s; \
register CELL d0, d1; \
register CELL *pt0; \
d1 = (*_PREG)->u.osc.c; \
d1 = (*_PREG)->y_u.osc.c; \
for (; i > 0; i--) { \
pt0 = (*_SREG)++; \
d0 = *pt0; \
@@ -865,8 +865,8 @@
#define UNIFY_N_ATOMS_WRITE_INSTINIT \
register CELL d0, d1; \
d0 = (*_PREG)->u.osc.s; \
d1 = (*_PREG)->u.osc.c; \
d0 = (*_PREG)->y_u.osc.s; \
d1 = (*_PREG)->y_u.osc.c; \
CACHE_S(); \
READ_IN_S(); \
(*_PREG) = NEXTOP((*_PREG), osc); \
@@ -888,20 +888,20 @@
d0 = *pt0;
#define UNIFY_FLOAT_UFLOAT_NONVAR_D0ISFUNCTOR \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od);
#define UNIFY_FLOAT_UFLOAT_NONVAR_END \
GONext();
#define UNIFY_FLOAT_UFLOAT_UNK \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(pt0, d1); \
GONext();
#define UNIFY_FLOAT_WRITE_INSTINIT \
* (*_SREG)++ = AbsAppl((*_PREG)->u.od.d); \
* (*_SREG)++ = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
GONextW();
@@ -925,7 +925,7 @@
} \
ENDD(d0); \
BEGP(pt1); \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od); \
if ( \
pt1[1] != pt0[1] \
@@ -939,7 +939,7 @@
\
derefa_body(d0, S_SREG, ulfloat_unk, ulfloat_nonvar); \
BEGD(d1); \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(S_SREG, d1); \
GONEXT(); \
@@ -966,7 +966,7 @@
} \
ENDD(d0); \
BEGP(pt1); \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od); \
if ( \
pt1[1] != pt0[1] \
@@ -979,7 +979,7 @@
\
derefa_body(d0, S_SREG, ulfloat_unk, ulfloat_nonvar); \
BEGD(d1); \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(S_SREG, d1); \
GONEXT(); \
@@ -989,7 +989,7 @@
#endif /* SIZEOF_DOUBLE == 2*SIZEOF_INT_P */
#define _unify_l_float_write_instinit \
(*_SREG)[0] = AbsAppl((*_PREG)->u.od.d); \
(*_SREG)[0] = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
GONEXT();
@@ -1004,20 +1004,20 @@
d0 = *pt0;
#define UNIFY_LONGINT_D0ISFUNC \
pt1 = (*_PREG)->u.oi.i; \
pt1 = (*_PREG)->y_u.oi.i; \
(*_PREG) = NEXTOP((*_PREG), oi);
#define UNIFY_LONGINT_EQUALS \
GONext();
#define UNIFY_LONGINT_ULONGINT_UNK \
d1 = AbsAppl((*_PREG)->u.oi.i); \
d1 = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
Bind_Global(pt0, d1); \
GONext();
#define UNIFY_LONGINT_WRITE_INSTINIT \
* (*_SREG)++ = AbsAppl((*_PREG)->u.oi.i); \
* (*_SREG)++ = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
GONextW();
@@ -1033,20 +1033,20 @@
d0 = *pt0;
#define UNIFY_L_LONGINT_D0ISFUNC \
pt1 = (*_PREG)->u.oi.i; \
pt1 = (*_PREG)->y_u.oi.i; \
(*_PREG) = NEXTOP((*_PREG), oi);
#define UNIFY_L_LONGINT_EQUALS \
GONext();
#define UNIFY_L_LONGINT_ULLONGINT_UNK \
d1 = AbsAppl((*_PREG)->u.oi.i); \
d1 = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
Bind_Global(S_SREG, d1); \
GONext();
#define UNIFY_L_LONGINT_WRITE_INSTINIT \
(*_SREG)[0] = AbsAppl((*_PREG)->u.oi.i); \
(*_SREG)[0] = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
GONext();
@@ -1066,7 +1066,7 @@
GONext();
#define UNIFY_BIGINT_UBIGINT_UNK \
d1 = (*_PREG)->u.oN.b; \
d1 = (*_PREG)->y_u.oN.b; \
(*_PREG) = NEXTOP((*_PREG), oN); \
Bind_Global(pt0, d1); \
GONext();
@@ -1089,7 +1089,7 @@
GONext();
#define UNIFY_L_BIGINT_ULBIGINT_UNK \
d1 = (*_PREG)->u.oN.b; \
d1 = (*_PREG)->y_u.oN.b; \
(*_PREG) = NEXTOP((*_PREG), oN); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -1104,12 +1104,12 @@
#define UNIFY_DBTERM_UDBTERM_NONVAR \
BLOCK = (CELL)UNIFY_DBTERM_UDBTERM_NONVAR; \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
YAAM_UNIFYBOUND;
#define UNIFY_DBTERM_UDBTERM_UNK \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
Bind_Global(pt0, d1); \
GONext();
@@ -1123,12 +1123,12 @@
#define UNIFY_L_DBTERM_ULDBTERM_NONVAR \
BLOCK = (CELL)UNIFY_L_DBTERM_ULDBTERM_NONVAR; \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
YAAM_UNIFYBOUND;
#define UNIFY_L_DBTERM_ULDBTERM_UNK \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -1241,7 +1241,7 @@
CACHE_S(); \
READ_IN_S(); \
S_SREG = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
if (*S_SREG != d0) { \
FAIL(); \
} \
@@ -1256,9 +1256,9 @@
Bind_Global(pt0, d1); \
pt0 = HR; \
ENDD(d1); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.ofa.a; \
HR = pt0 + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
(*_SREG) = pt0; \
GONEXTW(); \
@@ -1274,9 +1274,9 @@
d0 = AbsAppl(HR); \
S_SREG[0] = d0; \
S_SREG = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*S_SREG++ = d0; \
HR = S_SREG + (*_PREG)->u.ofa.a; \
HR = S_SREG + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -1294,7 +1294,7 @@
FAIL(); \
} \
(*_SREG) = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
if (*(*_SREG)++ != d0) { \
FAIL(); \
} \
@@ -1307,9 +1307,9 @@
Bind_Global(pt0, d1); \
pt0 = HR; \
ENDD(d1); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.ofa.a; \
HR = pt0 + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
(*_SREG) = pt0; \
GONEXTW(); \
@@ -1323,51 +1323,51 @@
READ_IN_S(); \
S_SREG[0] = d0; \
S_SREG = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*S_SREG++ = d0; \
HR = S_SREG + (*_PREG)->u.ofa.a; \
HR = S_SREG + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
GONEXTW();
#define _save_pair_x_instinit \
XREG((*_PREG)->u.ox.x) = AbsPair((*_SREG)); \
XREG((*_PREG)->y_u.ox.x) = AbsPair((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXT();
#define _save_pair_x_write_instinit \
XREG((*_PREG)->u.ox.x) = AbsPair((*_SREG)); \
XREG((*_PREG)->y_u.ox.x) = AbsPair((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXTW();
#define SAVE_PAIR_Y_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsPair((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsPair((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#define SAVE_PAIR_Y_WRITE_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsPair((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsPair((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();
#define _save_appl_x_instinit \
XREG((*_PREG)->u.ox.x) = AbsAppl((*_SREG) - 1); \
XREG((*_PREG)->y_u.ox.x) = AbsAppl((*_SREG) - 1); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXT();
#define _save_appl_x_write_instinit \
XREG((*_PREG)->u.ox.x) = AbsAppl((*_SREG) - 1); \
XREG((*_PREG)->y_u.ox.x) = AbsAppl((*_SREG) - 1); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONEXTW();
#define SAVE_APPL_Y_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsAppl((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsAppl((*_SREG)-1)); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#define SAVE_APPL_Y_WRITE_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsAppl((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsAppl((*_SREG)-1)); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();

View File

@@ -1,5 +1,5 @@
#define WRITE_X_VAR_INSTINIT \
XREG((*_PREG)->u.x.x) = Unsigned((*_SREG)); \
XREG((*_PREG)->y_u.x.x) = Unsigned((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), x); \
RESET_VARIABLE((*_SREG)); \
(*_SREG)++; \
@@ -13,7 +13,7 @@
#define WRITE_N_VOIDS_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.s.s; \
d0 = (*_PREG)->y_u.s.s; \
(*_PREG) = NEXTOP((*_PREG), s); \
for (; d0 > 0; d0--) { \
RESET_VARIABLE((*_SREG)); \
@@ -22,7 +22,7 @@
GONext();
#define _write_y_var_instinit \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,Unsigned((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,Unsigned((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), y); \
RESET_VARIABLE((*_SREG)); \
(*_SREG)++; \
@@ -30,7 +30,7 @@
#define _write_x_val_instinit \
register CELL d0; \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), x); \
GONEXT();
@@ -39,7 +39,7 @@
#ifdef FROZEN_STACKS
#define _write_x_loc_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
(*_PREG) = NEXTOP((*_PREG), x); \
deref_head(d0, w_x_unk); \
w_x_bound: \
@@ -63,7 +63,7 @@
#else /* FROZEN_STACKS */
#define _write_x_loc_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
(*_PREG) = NEXTOP((*_PREG), x); \
deref_head(d0, w_x_unk); \
w_x_bound: \
@@ -90,7 +90,7 @@
#ifdef FROZEN_STACKS
#define _write_x_loc_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
(*_PREG) = NEXTOP((*_PREG), x); \
deref_head(d0, w_x_unk); \
w_x_bound: \
@@ -114,7 +114,7 @@
#else /* FROZEN_STACKS */
#define _write_x_loc_instinit \
BEGD(d0); \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
(*_PREG) = NEXTOP((*_PREG), x); \
deref_head(d0, w_x_unk); \
w_x_bound: \
@@ -142,9 +142,9 @@
#ifdef YAPOR_SBA
#define _write_y_val_instinit \
register CELL d0; \
d0 = YREG[(*_PREG)->u.y.y]; \
d0 = YREG[(*_PREG)->y_u.y.y]; \
if (d0 == 0) \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->u.y.y); \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->y_u.y.y); \
else \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), y); \
@@ -152,7 +152,7 @@
#else /* YAPOR_SBA */
#define _write_y_val_instinit \
register CELL d0; \
d0 = YREG[(*_PREG)->u.y.y]; \
d0 = YREG[(*_PREG)->y_u.y.y]; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), y); \
GONEXT();
@@ -163,7 +163,7 @@
#define _write_y_loc_instinit \
BEGD(d0); \
BEGP(pt0); \
pt0 = YREG+(*_PREG)->u.y.y; \
pt0 = YREG+(*_PREG)->y_u.y.y; \
d0 = *pt0; \
deref_head(d0, w_y_unk); \
w_y_bound: \
@@ -191,7 +191,7 @@
#define _write_y_loc_instinit \
BEGD(d0); \
BEGP(pt0); \
pt0 = YREG+(*_PREG)->u.y.y; \
pt0 = YREG+(*_PREG)->y_u.y.y; \
d0 = *pt0; \
deref_head(d0, w_y_unk); \
w_y_bound: \
@@ -222,7 +222,7 @@
#define _write_y_loc_instinit \
BEGD(d0); \
BEGP(pt0); \
pt0 = YREG+(*_PREG)->u.y.y; \
pt0 = YREG+(*_PREG)->y_u.y.y; \
d0 = *pt0; \
deref_head(d0, w_y_unk); \
w_y_bound: \
@@ -249,7 +249,7 @@
#define _write_y_loc_instinit \
BEGD(d0); \
BEGP(pt0); \
pt0 = YREG+(*_PREG)->u.y.y; \
pt0 = YREG+(*_PREG)->y_u.y.y; \
d0 = *pt0; \
deref_head(d0, w_y_unk); \
w_y_bound: \
@@ -278,43 +278,43 @@
#define _write_atom_instinit \
register CELL d0; \
d0 = (*_PREG)->u.c.c; \
d0 = (*_PREG)->y_u.c.c; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), c); \
GONEXT();
#define WRITE_BIGINT_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.N.b; \
d0 = (*_PREG)->y_u.N.b; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), N); \
GONext();
#define _write_dbterm_instinit \
register CELL d0; \
d0 = (*_PREG)->u.D.D; \
d0 = (*_PREG)->y_u.D.D; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), D); \
GONEXT();
#define _write_float_instinit \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.d.d); \
d0 = AbsAppl((*_PREG)->y_u.d.d); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), d); \
GONEXT();
#define WRITE_LONGIT_INSTINIT \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.i.i); \
d0 = AbsAppl((*_PREG)->y_u.i.i); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), i); \
GONext();
#define WRITE_N_ATOMS_INSTINIT \
register CELL d0, d1; \
d0 = (*_PREG)->u.sc.s; \
d1 = (*_PREG)->u.sc.c; \
d0 = (*_PREG)->y_u.sc.s; \
d1 = (*_PREG)->y_u.sc.c; \
for (; d0 > 0; d0--) { \
*(*_SREG)++ = d1; \
} \
@@ -352,9 +352,9 @@
SP[-1] = Unsigned((*_SREG)); \
SP[-2] = 1; \
SP -= 2; \
d0 = (CELL) ((*_PREG)->u.fa.f); \
*H++ = d0; \
d0 = (*_PREG)->u.fa.a; \
d0 = (CELL) ((*_PREG)->y_u.fa.f); \
*HR++ = d0; \
d0 = (*_PREG)->y_u.fa.a; \
(*_PREG) = NEXTOP((*_PREG), fa); \
(*_SREG) = HR; \
HR += d0; \
@@ -364,10 +364,10 @@
register CELL d0; \
d0 = AbsAppl(HR); \
*(*_SREG) = d0; \
d0 = (CELL) ((*_PREG)->u.fa.f); \
*H++ = d0; \
d0 = (CELL) ((*_PREG)->y_u.fa.f); \
*HR++ = d0; \
(*_SREG) = HR; \
d0 = (*_PREG)->u.fa.a; \
d0 = (*_PREG)->y_u.fa.a; \
(*_PREG) = NEXTOP((*_PREG), fa); \
HR += d0; \
GONEXT();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -89,53 +89,53 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define NoStackDeallocate_Exception \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[8]; \
}
#define NoStackCall_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[6]; \
} \
ENDCACHE_Y_AS_ENV();
#define NoStackDExecute_Exception \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[7]; \
}
#define NoStackExecute_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[5]; \
} \
ENDCACHE_Y_AS_ENV();
#define NoStackFail_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[10]; \
} \
ENDCACHE_Y_AS_ENV();
#define NoStackEither_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[4]; \
} \
ENDCACHE_Y_AS_ENV();
#define NoStackCommitY_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[2]; \
} \
ENDCACHE_Y_AS_ENV();
#define NoStackCommitX_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
return external_labels[11]; \
} \
ENDCACHE_Y_AS_ENV();

View File

@@ -91,7 +91,7 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define NoStackDeallocate_Exception \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -101,7 +101,7 @@
#define NoStackCall_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -111,7 +111,7 @@
ENDCACHE_Y_AS_ENV();
#define NoStackDExecute_Exception \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -121,7 +121,7 @@
#define NoStackExecute_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -132,7 +132,7 @@
#define NoStackFail_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -143,7 +143,7 @@
#define NoStackEither_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -154,7 +154,7 @@
#define NoStackCommitY_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \
@@ -165,7 +165,7 @@
#define NoStackCommitX_Exception \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { \
if ((char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != 0 && (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap != (char*)0x1) { \
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); \
fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.native_treat_heap); \

View File

@@ -3,7 +3,7 @@
register CELL d0; \
PredEntry *pt0; \
register CELL *ENV_YREG = (YREG); \
pt0 = (*_PREG)->u.pp.p;
pt0 = (*_PREG)->y_u.pp.p;
#ifdef LOW_LEVEL_TRACER
#define EXECUTE_LOW_LEVEL_TRACER \
@@ -51,14 +51,14 @@
#ifdef LOW_LEVEL_TRACER
#define DEXECUTE_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.pp.p,XREGS+1);
#endif
#define DEXECUTE_POST_LOW_LEVEL_TRACER \
CACHE_Y_AS_ENV(YREG); \
PredEntry *pt0; \
CACHE_A1(); \
pt0 = (*_PREG)->u.pp.p;
pt0 = (*_PREG)->y_u.pp.p;
#ifdef DEPTH_LIMIT
#define DEXECUTE_DEPTH_MINOR \
@@ -166,18 +166,18 @@
#ifdef LOW_LEVEL_TRACER
#define CALL_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.Osbpp.p,XREGS+1);
#endif
#define CALL_POST_LOW_LEVEL_TRACER \
register CELL *ENV_YREG = (YREG); \
PredEntry *pt; \
pt = (*_PREG)->u.Osbpp.p; \
pt = (*_PREG)->y_u.Osbpp.p; \
CACHE_A1();
#define CALL_POST_NO_CHECKING \
ENV = ENV_YREG; \
ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->y_u.Osbpp.s); \
(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
(*_PREG) = pt->CodeOfPred; \
save_pc(); \

View File

@@ -1,7 +1,7 @@
#define COUNT_CALL_INSTINIT \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
LOCAL_ReductionsCounter--;
#define COUNT_CALL_MIDDLE \
@@ -26,9 +26,9 @@
GONext();
#define COUNT_RETRY_INSTINIT \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
LOCAL_RetriesCounter--;
#define COUNT_RETRY_MIDDLE \
@@ -56,8 +56,8 @@
#define COUNT_RETRY_ME_INSTINIT \
CACHE_Y(B); \
restore_yaam_regs((*_PREG)->u.Otapl.d); \
restore_args((*_PREG)->u.Otapl.s);
restore_yaam_regs((*_PREG)->y_u.Otapl.d); \
restore_args((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define COUNT_RETRY_ME_MIDDLE \
@@ -65,9 +65,9 @@
set_cut(S_YREG, B->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0 && LOCAL_RetriesCounterOn) { \
saveregs(); \
@@ -87,9 +87,9 @@
set_cut(S_YREG, B_YREG->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0 && LOCAL_RetriesCounterOn) { \
saveregs(); \
@@ -118,14 +118,14 @@
#define COUNT_TRUST_ME_MIDDLE \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
} \
@@ -149,13 +149,13 @@
#define COUNT_TRUST_ME_MIDDLE \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
} \
SET_BB(B_YREG); \
@@ -180,7 +180,7 @@
#define COUNT_TRUST_ME_MIDDLE \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
} \
@@ -204,7 +204,7 @@
#define COUNT_TRUST_ME_MIDDLE \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
} \
SET_BB(B_YREG); \
@@ -227,9 +227,9 @@
#endif /* YAPOR */
#define COUNT_TRUST_ME_END \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), Otapl); \
GONext();
@@ -241,13 +241,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -262,11 +262,11 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->y_u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
SET_BB(B_YREG); \
@@ -280,13 +280,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -301,11 +301,11 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->y_u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
set_cut(S_YREG, B_YREG->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
@@ -320,13 +320,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -341,10 +341,10 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
SET_BB(B_YREG); \
@@ -358,13 +358,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -379,10 +379,10 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
set_cut(S_YREG, B_YREG->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
@@ -401,9 +401,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -472,9 +472,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -544,9 +544,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -609,9 +609,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -678,9 +678,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -752,9 +752,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -827,9 +827,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -895,9 +895,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -966,9 +966,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -1039,9 +1039,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -1113,9 +1113,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -1180,9 +1180,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \

View File

@@ -1,8 +1,8 @@
#define COUNT_CALL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfEntries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
LOCAL_ReductionsCounter--;
#define COUNT_CALL_MIDDLE \
@@ -28,9 +28,9 @@
#define COUNT_RETRY_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
LOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
(*_PREG)->u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.p.p->StatisticsForPred.lock); \
LOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
(*_PREG)->y_u.p.p->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.p.p->StatisticsForPred.lock); \
LOCAL_RetriesCounter--;
#define COUNT_RETRY_MIDDLE \
@@ -59,8 +59,8 @@
#define COUNT_RETRY_ME_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
CACHE_Y(B); \
restore_yaam_regs((*_PREG)->u.Otapl.d); \
restore_args((*_PREG)->u.Otapl.s);
restore_yaam_regs((*_PREG)->y_u.Otapl.d); \
restore_args((*_PREG)->y_u.Otapl.s);
#ifdef FROZEN_STACKS
#define COUNT_RETRY_ME_MIDDLE \
@@ -68,9 +68,9 @@
set_cut(S_YREG, B->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0 && LOCAL_RetriesCounterOn) { \
saveregs(); \
@@ -90,9 +90,9 @@
set_cut(S_YREG, B_YREG->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0 && LOCAL_RetriesCounterOn) { \
saveregs(); \
@@ -122,14 +122,14 @@
#define COUNT_TRUST_ME_MIDDLE \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
} \
@@ -153,13 +153,13 @@
#define COUNT_TRUST_ME_MIDDLE \
if (SCH_top_shared_cp(B)) { \
SCH_last_alternative((*_PREG), B_YREG); \
restore_args((*_PREG)->u.Otapl.s); \
restore_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B->cp_b); \
} \
else \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
} \
SET_BB(B_YREG); \
@@ -184,7 +184,7 @@
#define COUNT_TRUST_ME_MIDDLE \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B); \
} \
@@ -208,7 +208,7 @@
#define COUNT_TRUST_ME_MIDDLE \
{ \
pop_yaam_regs(); \
pop_args((*_PREG)->u.Otapl.s); \
pop_args((*_PREG)->y_u.Otapl.s); \
set_cut(S_YREG, B); \
} \
SET_BB(B_YREG); \
@@ -231,9 +231,9 @@
#endif /* YAPOR */
#define COUNT_TRUST_ME_END \
LOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->u.Otapl.p))->StatisticsForPred.lock); \
LOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; \
UNLOCK(((PredEntry *)((*_PREG)->y_u.Otapl.p))->StatisticsForPred.lock); \
(*_PREG) = NEXTOP((*_PREG), Otapl); \
GONext();
@@ -246,13 +246,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -267,11 +267,11 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->y_u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
SET_BB(B_YREG); \
@@ -286,13 +286,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -307,11 +307,11 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
PP = (*_PREG)->y_u.OtaLl.d->ClPred; \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
set_cut(S_YREG, B_YREG->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
@@ -327,13 +327,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -348,10 +348,10 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); \
set_cut(S_YREG, B->cp_b); \
SET_BB(B_YREG); \
@@ -366,13 +366,13 @@
{ \
UInt timestamp; \
CACHE_Y(B); \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->u.OtaLl.n; \
timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[(*_PREG)->y_u.OtaLl.s]); \
if (!VALID_TIMESTAMP(timestamp, (*_PREG)->y_u.OtaLl.d)) { \
(*_PREG)=(*_PREG)->y_u.OtaLl.n; \
JMPNext(); \
} \
restore_yaam_regs((*_PREG)->u.OtaLl.n); \
restore_args((*_PREG)->u.OtaLl.s); \
restore_yaam_regs((*_PREG)->y_u.OtaLl.n); \
restore_args((*_PREG)->y_u.OtaLl.s); \
LOCAL_RetriesCounter--; \
if (LOCAL_RetriesCounter == 0) { \
saveregs(); \
@@ -387,10 +387,10 @@
setregs(); \
JMPNext(); \
} \
LOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->u.OtaLl.d->ClCode; \
LOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; \
UNLOCK((*_PREG)->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); \
(*_PREG) = (*_PREG)->y_u.OtaLl.d->ClCode; \
set_cut(S_YREG, B_YREG->cp_b); \
SET_BB(B_YREG); \
ENDCACHE_Y(); \
@@ -410,9 +410,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -482,9 +482,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -555,9 +555,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -621,9 +621,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -691,9 +691,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -766,9 +766,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -842,9 +842,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -911,9 +911,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -983,9 +983,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -1057,9 +1057,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -1132,9 +1132,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \
@@ -1200,9 +1200,9 @@
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y(B); \
{ \
LogUpdIndex *cl = (*_PREG)->u.OtILl.block; \
LogUpdIndex *cl = (*_PREG)->y_u.OtILl.block; \
PredEntry *ap = cl->ClPred; \
LogUpdClause *lcl = (*_PREG)->u.OtILl.d; \
LogUpdClause *lcl = (*_PREG)->y_u.OtILl.d; \
UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); \
if (!VALID_TIMESTAMP(timestamp, lcl)) { \
(*_PREG) = FAILCODE; \

View File

@@ -4,7 +4,7 @@
register CELL d0; \
PredEntry *pt0; \
register CELL *ENV_YREG = (YREG); \
pt0 = (*_PREG)->u.pp.p;
pt0 = (*_PREG)->y_u.pp.p;
#ifdef LOW_LEVEL_TRACER
#define EXECUTE_LOW_LEVEL_TRACER \
@@ -53,14 +53,14 @@
#ifdef LOW_LEVEL_TRACER
#define DEXECUTE_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.pp.p,XREGS+1);
#endif
#define DEXECUTE_POST_LOW_LEVEL_TRACER \
CACHE_Y_AS_ENV(YREG); \
PredEntry *pt0; \
CACHE_A1(); \
pt0 = (*_PREG)->u.pp.p;
pt0 = (*_PREG)->y_u.pp.p;
#ifdef DEPTH_LIMIT
#define DEXECUTE_DEPTH_MINOR \
@@ -169,18 +169,18 @@
#ifdef LOW_LEVEL_TRACER
#define CALL_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.Osbpp.p,XREGS+1);
#endif
#define CALL_POST_LOW_LEVEL_TRACER \
register CELL *ENV_YREG = (YREG); \
PredEntry *pt; \
pt = (*_PREG)->u.Osbpp.p; \
pt = (*_PREG)->y_u.Osbpp.p; \
CACHE_A1();
#define CALL_POST_NO_CHECKING \
ENV = ENV_YREG; \
ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->y_u.Osbpp.s); \
(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
(*_PREG) = pt->CodeOfPred; \
save_pc(); \

View File

@@ -4,14 +4,14 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define CALL_CPRED_TEST_STACK \
if (!((*_PREG)->u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
if (!((*_PREG)->y_u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { return external_labels[6]; } \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { return external_labels[6]; } \
ENDCACHE_Y_AS_ENV(); \
}
#else
#define CALL_CPRED_TEST_STACK \
if (!((*_PREG)->u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
if (!((*_PREG)->y_u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) { return external_labels[6]; } \
ENDCACHE_Y_AS_ENV(); \
@@ -27,27 +27,27 @@
if (YREG > (CELL *) top_b || YREG < HR) \
ASP = (CELL *)top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#else /* YAPOR_SBA */
#define CALL_CPRED_TOPB \
if (YREG > (CELL *) top_b) \
ASP = (CELL *)top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#endif /* YAPOR_SBA */
#else
#define CALL_CPRED_NOFROZEN \
SET_ASP(YREG, (*_PREG)->u.Osbpp.s);
SET_ASP(YREG, (*_PREG)->y_u.Osbpp.s);
#endif
#ifdef LOW_LEVEL_TRACER
#define CALL_CPRED_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.Osbpp.p,XREGS+1);
#endif
#define CALL_CPRED_POST_LOW_LEVEL_TRACER \
CPredicate f = (*_PREG)->u.Osbpp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.Osbpp.p->cs.f_code; \
(*_PREG) = NEXTOP((*_PREG), Osbpp); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -105,7 +105,7 @@
#endif
#define EXECUTE_CPRED_POST_FROZEN \
pt0 = (*_PREG)->u.pp.p;
pt0 = (*_PREG)->y_u.pp.p;
#ifdef LOW_LEVEL_TRACER
#define EXECUTE_CPRED_LOW_LEVEL_TRACER \
@@ -146,7 +146,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -172,7 +172,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -199,7 +199,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -224,7 +224,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -251,7 +251,7 @@
#define CALL_USERCPRED_INSTINIT \
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { return external_labels[6]; } \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { return external_labels[6]; } \
ENDCACHE_Y_AS_ENV();
#else
#define CALL_USERCPRED_INSTINIT \
@@ -263,7 +263,7 @@
#ifdef LOW_LEVEL_TRACER
#define CALL_USERCPRED_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.Osbpp.p,XREGS+1);
#endif
#ifdef FROZEN_STACKS
@@ -273,18 +273,18 @@
if (YREG > (CELL *) top_b || YREG < HR) \
ASP = (CELL *) top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#else /* YAPOR_SBA */
#define CALL_USERCPRED_FROZEN \
choiceptr top_b = PROTECT_FROZEN_B(B); \
if (YREG > (CELL *) top_b) \
ASP = (CELL *) top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define CALL_USERCPRED_FROZEN \
SET_ASP(YREG, (*_PREG)->u.Osbpp.s);
SET_ASP(YREG, (*_PREG)->y_u.Osbpp.s);
#endif /* FROZEN_STACKS */
#define CALL_USERCPRED_POST_FROZEN \
@@ -292,7 +292,7 @@
Yap_StartSlots( PASS_REGS1 ); \
LOCAL_PrologMode = UserCCallMode; \
{ \
PredEntry *p = (*_PREG)->u.Osbpp.p; \
PredEntry *p = (*_PREG)->y_u.Osbpp.p; \
(*_PREG) = NEXTOP((*_PREG), Osbpp); \
savedP = (*_PREG); \
saveregs(); \

View File

@@ -5,14 +5,14 @@
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
#define CALL_CPRED_TEST_STACK \
if (!((*_PREG)->u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
if (!((*_PREG)->y_u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { return external_labels[6]; } \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { return external_labels[6]; } \
ENDCACHE_Y_AS_ENV(); \
}
#else
#define CALL_CPRED_TEST_STACK \
if (!((*_PREG)->u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
if (!((*_PREG)->y_u.Osbpp.p->PredFlags & (SafePredFlag|HiddenPredFlag))) { \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) { return external_labels[6]; } \
ENDCACHE_Y_AS_ENV(); \
@@ -28,27 +28,27 @@
if (YREG > (CELL *) top_b || YREG < HR) \
ASP = (CELL *)top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#else /* YAPOR_SBA */
#define CALL_CPRED_TOPB \
if (YREG > (CELL *) top_b) \
ASP = (CELL *)top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#endif /* YAPOR_SBA */
#else
#define CALL_CPRED_NOFROZEN \
SET_ASP(YREG, (*_PREG)->u.Osbpp.s);
SET_ASP(YREG, (*_PREG)->y_u.Osbpp.s);
#endif
#ifdef LOW_LEVEL_TRACER
#define CALL_CPRED_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.Osbpp.p,XREGS+1);
#endif
#define CALL_CPRED_POST_LOW_LEVEL_TRACER \
CPredicate f = (*_PREG)->u.Osbpp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.Osbpp.p->cs.f_code; \
(*_PREG) = NEXTOP((*_PREG), Osbpp); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -107,7 +107,7 @@
#endif
#define EXECUTE_CPRED_POST_FROZEN \
pt0 = (*_PREG)->u.pp.p;
pt0 = (*_PREG)->y_u.pp.p;
#ifdef LOW_LEVEL_TRACER
#define EXECUTE_CPRED_LOW_LEVEL_TRACER \
@@ -148,7 +148,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -174,7 +174,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -201,7 +201,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -226,7 +226,7 @@
#define EXECUTE_CPRED_END \
BLOCK = (CELL)EXECUTE_CPRED_END; \
if (!FAILED) { \
CPredicate f = (*_PREG)->u.pp.p->cs.f_code; \
CPredicate f = (*_PREG)->y_u.pp.p->cs.f_code; \
yamop *oldPREG = (*_PREG); \
saveregs(); \
d0 = (f)(PASS_REGS1); \
@@ -254,7 +254,7 @@
print_instruction((*_PREG), ON_NATIVE); \
BLOCKADDRESS = (CELL)(*_PREG); \
CACHE_Y_AS_ENV(YREG); \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0) ) { return external_labels[6]; } \
if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,HR))) < CreepFlag), 0) ) { return external_labels[6]; } \
ENDCACHE_Y_AS_ENV();
#else
#define CALL_USERCPRED_INSTINIT \
@@ -267,7 +267,7 @@
#ifdef LOW_LEVEL_TRACER
#define CALL_USERCPRED_LOW_LEVEL_TRACER \
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
low_level_trace(enter_pred,(*_PREG)->y_u.Osbpp.p,XREGS+1);
#endif
#ifdef FROZEN_STACKS
@@ -277,18 +277,18 @@
if (YREG > (CELL *) top_b || YREG < HR) \
ASP = (CELL *) top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#else /* YAPOR_SBA */
#define CALL_USERCPRED_FROZEN \
choiceptr top_b = PROTECT_FROZEN_B(B); \
if (YREG > (CELL *) top_b) \
ASP = (CELL *) top_b; \
else \
ASP = (CELL *)(((char *)YREG) + (*_PREG)->u.Osbpp.s);
ASP = (CELL *)(((char *)YREG) + (*_PREG)->y_u.Osbpp.s);
#endif /* YAPOR_SBA */
#else /* FROZEN_STACKS */
#define CALL_USERCPRED_FROZEN \
SET_ASP(YREG, (*_PREG)->u.Osbpp.s);
SET_ASP(YREG, (*_PREG)->y_u.Osbpp.s);
#endif /* FROZEN_STACKS */
#define CALL_USERCPRED_POST_FROZEN \
@@ -296,7 +296,7 @@
Yap_StartSlots( PASS_REGS1 ); \
LOCAL_PrologMode = UserCCallMode; \
{ \
PredEntry *p = (*_PREG)->u.Osbpp.p; \
PredEntry *p = (*_PREG)->y_u.Osbpp.p; \
(*_PREG) = NEXTOP((*_PREG), Osbpp); \
savedP = (*_PREG); \
saveregs(); \

View File

@@ -8,7 +8,7 @@
#endif
#define CUT_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
@@ -25,7 +25,7 @@
#endif
#define CUT_T_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
setregs(); \
@@ -42,7 +42,7 @@
#endif
#define CUT_E_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)(*_SREG)[E_CB]); \
@@ -51,7 +51,7 @@
#define SAVE_B_X_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.x.x;
d0 = (*_PREG)->y_u.x.x;
#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
#define SAVE_B_X_YSBA_FROZEN \
@@ -69,10 +69,10 @@
#if defined(YAPOR_SBA)
#define SAVE_B_Y_YSBA \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,MkIntegerTerm((Int)B));
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,MkIntegerTerm((Int)B));
#else
#define SAVE_B_Y_NOYSBA \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,MkIntegerTerm(LCL0-(CELL *)(B)));
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,MkIntegerTerm(LCL0-(CELL *)(B)));
#endif
#define SAVE_B_Y_END \
@@ -84,10 +84,10 @@
register CELL *pt1;
#define COMMIT_B_X_DO_COMMIT_B_X \
d0 = XREG((*_PREG)->u.xps.x);
d0 = XREG((*_PREG)->y_u.xps.x);
#define COMMIT_B_X_COMMIT_B_X_NVAR \
SET_ASP(YREG, (*_PREG)->u.xps.s); \
SET_ASP(YREG, (*_PREG)->y_u.xps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), xps),Osbpp),l); \
choiceptr pt0;
@@ -112,10 +112,10 @@
register CELL *pt1;
#define COMMIT_B_Y_DO_COMMIT_B_Y \
d0 = YREG[(*_PREG)->u.yps.y];
d0 = YREG[(*_PREG)->y_u.yps.y];
#define COMMIT_B_Y_COMMIT_B_Y_NVAR \
SET_ASP(YREG, (*_PREG)->u.yps.s); \
SET_ASP(YREG, (*_PREG)->y_u.yps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), yps),Osbpp),l); \
choiceptr pt0;

View File

@@ -9,7 +9,7 @@
#endif
#define CUT_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
@@ -27,7 +27,7 @@
#endif
#define CUT_T_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
saveregs(); \
prune((choiceptr)YREG[E_CB]); \
setregs(); \
@@ -45,7 +45,7 @@
#endif
#define CUT_E_NOCOROUTINING \
SET_ASP(YREG, (*_PREG)->u.s.s); \
SET_ASP(YREG, (*_PREG)->y_u.s.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), s),Osbpp),l); \
saveregs(); \
prune((choiceptr)(*_SREG)[E_CB]); \
@@ -55,7 +55,7 @@
#define SAVE_B_X_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.x.x;
d0 = (*_PREG)->y_u.x.x;
#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
#define SAVE_B_X_YSBA_FROZEN \
@@ -73,10 +73,10 @@
#if defined(YAPOR_SBA)
#define SAVE_B_Y_YSBA \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,MkIntegerTerm((Int)B));
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,MkIntegerTerm((Int)B));
#else
#define SAVE_B_Y_NOYSBA \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,MkIntegerTerm(LCL0-(CELL *)(B)));
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,MkIntegerTerm(LCL0-(CELL *)(B)));
#endif
#define SAVE_B_Y_END \
@@ -89,10 +89,10 @@
register CELL *pt1;
#define COMMIT_B_X_DO_COMMIT_B_X \
d0 = XREG((*_PREG)->u.xps.x);
d0 = XREG((*_PREG)->y_u.xps.x);
#define COMMIT_B_X_COMMIT_B_X_NVAR \
SET_ASP(YREG, (*_PREG)->u.xps.s); \
SET_ASP(YREG, (*_PREG)->y_u.xps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), xps),Osbpp),l); \
choiceptr pt0;
@@ -118,10 +118,10 @@
register CELL *pt1;
#define COMMIT_B_Y_DO_COMMIT_B_Y \
d0 = YREG[(*_PREG)->u.yps.y];
d0 = YREG[(*_PREG)->y_u.yps.y];
#define COMMIT_B_Y_COMMIT_B_Y_NVAR \
SET_ASP(YREG, (*_PREG)->u.yps.s); \
SET_ASP(YREG, (*_PREG)->y_u.yps.s); \
(*_PREG) = NEXTOP(NEXTOP(NEXTOP((*_PREG), yps),Osbpp),l); \
choiceptr pt0;

View File

@@ -392,14 +392,14 @@
} \
case _jump: \
{ \
ipc = ipc->u.l.l; \
ipc = ipc->y_u.l.l; \
go_on = TRUE; \
break; \
} \
case _retry_c: \
case _retry_userc: \
{ \
low_level_trace(retry_pred, ipc->u.OtapFs.p, B->cp_args); \
low_level_trace(retry_pred, ipc->y_u.OtapFs.p, B->cp_args); \
break; \
} \
case _retry_profiled: \
@@ -420,7 +420,7 @@
case _retry: \
case _trust: \
{ \
low_level_trace(retry_pred, ipc->u.Otapl.p, B->cp_args); \
low_level_trace(retry_pred, ipc->y_u.Otapl.p, B->cp_args); \
break; \
} \
case _try_logical: \
@@ -431,7 +431,7 @@
case _profiled_trust_logical: \
case _count_trust_logical: \
{ \
low_level_trace(retry_pred, ipc->u.OtILl.d->ClPred, B->cp_args); \
low_level_trace(retry_pred, ipc->y_u.OtILl.d->ClPred, B->cp_args); \
break; \
} \
case _Nstop: \
@@ -543,7 +543,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -574,7 +574,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -599,7 +599,7 @@
insert_into_global_sg_fr_list(sg_fr); \
continue; \
} \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -623,7 +623,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -647,7 +647,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -665,7 +665,7 @@
{ \
register CELL flags; \
CELL *pt1 = RepPair(d1); \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -697,7 +697,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -727,7 +727,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -751,7 +751,7 @@
insert_into_global_sg_fr_list(sg_fr); \
continue; \
} \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -774,7 +774,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -797,7 +797,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -814,7 +814,7 @@
{ \
register CELL flags; \
CELL *pt1 = RepPair(d1); \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \

View File

@@ -413,14 +413,14 @@
} \
case _jump: \
{ \
ipc = ipc->u.l.l; \
ipc = ipc->y_u.l.l; \
go_on = TRUE; \
break; \
} \
case _retry_c: \
case _retry_userc: \
{ \
low_level_trace(retry_pred, ipc->u.OtapFs.p, B->cp_args); \
low_level_trace(retry_pred, ipc->y_u.OtapFs.p, B->cp_args); \
break; \
} \
case _retry_profiled: \
@@ -441,7 +441,7 @@
case _retry: \
case _trust: \
{ \
low_level_trace(retry_pred, ipc->u.Otapl.p, B->cp_args); \
low_level_trace(retry_pred, ipc->y_u.Otapl.p, B->cp_args); \
break; \
} \
case _try_logical: \
@@ -452,7 +452,7 @@
case _profiled_trust_logical: \
case _count_trust_logical: \
{ \
low_level_trace(retry_pred, ipc->u.OtILl.d->ClPred, B->cp_args); \
low_level_trace(retry_pred, ipc->y_u.OtILl.d->ClPred, B->cp_args); \
break; \
} \
case _Nstop: \
@@ -564,7 +564,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -595,7 +595,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -620,7 +620,7 @@
insert_into_global_sg_fr_list(sg_fr); \
continue; \
} \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -644,7 +644,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -668,7 +668,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -686,7 +686,7 @@
{ \
register CELL flags; \
CELL *pt1 = RepPair(d1); \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -718,7 +718,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -748,7 +748,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -772,7 +772,7 @@
insert_into_global_sg_fr_list(sg_fr); \
continue; \
} \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -795,7 +795,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -818,7 +818,7 @@
pt0 = (tr_fr_ptr) pt1; \
continue; \
} else \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \
@@ -835,7 +835,7 @@
{ \
register CELL flags; \
CELL *pt1 = RepPair(d1); \
if (IN_BETWEEN(H0,pt1,H)) { \
if (IN_BETWEEN(H0,pt1,HR)) { \
if (IsAttVar(pt1)) { \
continue; \
} else if (*pt1 == (CELL)FunctorBigInt) { \

View File

@@ -1,15 +1,15 @@
#define GET_X_VAR_INSTINIT \
register CELL d0; \
d0 = XREG((*_PREG)->u.xx.xr); \
XREG((*_PREG)->u.xx.xl) = d0; \
d0 = XREG((*_PREG)->y_u.xx.xr); \
XREG((*_PREG)->y_u.xx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONext();
#define GET_Y_VAR_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
d0 = XREG((*_PREG)->u.yx.x); \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
d0 = XREG((*_PREG)->y_u.yx.x); \
(*_PREG) = NEXTOP((*_PREG), yx); \
INITIALIZE_PERMVAR(pt0,d0); \
GONext();
@@ -18,10 +18,10 @@
register CELL d0, d1; \
register CELL *pt0, *pt1; \
CACHE_Y(YREG); \
pt0 = S_YREG + (*_PREG)->u.yyxx.y1; \
d0 = XREG((*_PREG)->u.yyxx.x1); \
pt1 = S_YREG + (*_PREG)->u.yyx.y2; \
d1 = XREG((*_PREG)->u.yyxx.x2); \
pt0 = S_YREG + (*_PREG)->y_u.yyxx.y1; \
d0 = XREG((*_PREG)->y_u.yyxx.x1); \
pt1 = S_YREG + (*_PREG)->y_u.yyx.y2; \
d1 = XREG((*_PREG)->y_u.yyxx.x2); \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
INITIALIZE_PERMVAR(pt0,d0); \
INITIALIZE_PERMVAR(pt1,d1); \
@@ -32,10 +32,10 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GET_X_VAL_GVALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GET_X_VAL_GVALX_NONVAR_NONVAR \
BLOCK = (CELL)GET_X_VAL_GVALX_NONVAR_NONVAR; \
@@ -48,7 +48,7 @@
GONext();
#define GET_X_VAL_GVALX_UNK \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GET_X_VAL_GVALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -63,11 +63,11 @@
#define GET_Y_VAL_INSTINIT \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
pt0 = YREG + (*_PREG)->u.yx.y; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
d0 = *pt0;
#define GET_Y_VAL_GVALY_NONVAR \
d1 = XREG((*_PREG)->u.yx.x);
d1 = XREG((*_PREG)->y_u.yx.x);
#define GET_Y_VAL_GVALY_NONVAR_NONVAR \
BLOCK = (CELL)GET_Y_VAL_GVALY_NONVAR_NONVAR; \
@@ -80,7 +80,7 @@
GONext();
#define GET_Y_VAL_GVALY_UNK \
d1 = XREG((*_PREG)->u.yx.x);
d1 = XREG((*_PREG)->y_u.yx.x);
#define GET_Y_VAL_GVALY_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), yx); \
@@ -96,8 +96,8 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xc.x); \
d1 = (*_PREG)->u.xc.c;
d0 = XREG((*_PREG)->y_u.xc.x); \
d1 = (*_PREG)->y_u.xc.c;
#define GET_ATOM_GATOM_NONVAR \
BLOCK = (CELL)GET_ATOM_GATOM_NONVAR; \
@@ -121,11 +121,11 @@
d0 = ARG1;
#define GET_2ATOMS_GATOM_2UNK \
Bind(pt0, (*_PREG)->u.cc.c1);
Bind(pt0, (*_PREG)->y_u.cc.c1);
#define GET_2ATOMS_GATOM_2B \
d0 = ARG2; \
d1 = (*_PREG)->u.cc.c2;
d1 = (*_PREG)->y_u.cc.c2;
#define GET_2ATOMS_GATOM_2BNONVAR \
BLOCK = (CELL)GET_2ATOMS_GATOM_2BNONVAR; \
@@ -149,17 +149,17 @@
d0 = ARG1;
#define GET_3ATOMS_GATOM_3UNK \
Bind(pt0, (*_PREG)->u.ccc.c1);
Bind(pt0, (*_PREG)->y_u.ccc.c1);
#define GET_3ATOMS_GATOM_3B \
d0 = ARG2;
#define GET_3ATOMS_GATOM_3BUNK \
Bind(pt0, (*_PREG)->u.ccc.c2);
Bind(pt0, (*_PREG)->y_u.ccc.c2);
#define GET_3ATOMS_GATOM_3C \
d0 = ARG3; \
d1 = (*_PREG)->u.ccc.c3;
d1 = (*_PREG)->y_u.ccc.c3;
#define GET_3ATOMS_GATOM_3CNONVAR \
BLOCK = (CELL)GET_3ATOMS_GATOM_3CNONVAR; \
@@ -183,23 +183,23 @@
d0 = ARG1;
#define GET_4ATOMS_GATOM_4UNK \
Bind(pt0, (*_PREG)->u.cccc.c1);
Bind(pt0, (*_PREG)->y_u.cccc.c1);
#define GET_4ATOMS_GATOM_4B \
d0 = ARG2;
#define GET_4ATOMS_GATOM_4BUNK \
Bind(pt0, (*_PREG)->u.cccc.c2);
Bind(pt0, (*_PREG)->y_u.cccc.c2);
#define GET_4ATOMS_GATOM_4C \
d0 = ARG3;
#define GET_4ATOMS_GATOM_4CUNK \
Bind(pt0, (*_PREG)->u.cccc.c3);
Bind(pt0, (*_PREG)->y_u.cccc.c3);
#define GET_4ATOMS_GATOM_4D \
d0 = ARG4; \
d1 = (*_PREG)->u.cccc.c4;
d1 = (*_PREG)->y_u.cccc.c4;
#define GET_4ATOMS_GATOM_4DNONVAR \
BLOCK = (CELL)GET_4ATOMS_GATOM_4DNONVAR; \
@@ -223,29 +223,29 @@
d0 = ARG1;
#define GET_5ATOMS_GATOM_5UNK \
Bind(pt0, (*_PREG)->u.ccccc.c1);
Bind(pt0, (*_PREG)->y_u.ccccc.c1);
#define GET_5ATOMS_GATOM_5B \
d0 = ARG2;
#define GET_5ATOMS_GATOM_5BUNK \
Bind(pt0, (*_PREG)->u.ccccc.c2);
Bind(pt0, (*_PREG)->y_u.ccccc.c2);
#define GET_5ATOMS_GATOM_5C \
d0 = ARG3;
#define GET_5ATOMS_GATOM_5CUNK \
Bind(pt0, (*_PREG)->u.ccccc.c3);
Bind(pt0, (*_PREG)->y_u.ccccc.c3);
#define GET_5ATOMS_GATOM_5D \
d0 = ARG4;
#define GET_5ATOMS_GATOM_5DUNK \
Bind(pt0, (*_PREG)->u.ccccc.c4);
Bind(pt0, (*_PREG)->y_u.ccccc.c4);
#define GET_5ATOMS_GATOM_5E \
d0 = ARG5; \
d1 = (*_PREG)->u.ccccc.c5;
d1 = (*_PREG)->y_u.ccccc.c5;
#define GET_5ATOMS_GATOM_5ENONVAR \
BLOCK = (CELL)GET_5ATOMS_GATOM_5ENONVAR; \
@@ -269,35 +269,35 @@
d0 = ARG1;
#define GET_6ATOMS_GATOM_6UNK \
Bind(pt0, (*_PREG)->u.cccccc.c1);
Bind(pt0, (*_PREG)->y_u.cccccc.c1);
#define GET_6ATOMS_GATOM_6B \
d0 = ARG2;
#define GET_6ATOMS_GATOM_6BUNK \
Bind(pt0, (*_PREG)->u.cccccc.c2);
Bind(pt0, (*_PREG)->y_u.cccccc.c2);
#define GET_6ATOMS_GATOM_6C \
d0 = ARG3;
#define GET_6ATOMS_GATOM_6CUNK \
Bind(pt0, (*_PREG)->u.cccccc.c3);
Bind(pt0, (*_PREG)->y_u.cccccc.c3);
#define GET_6ATOMS_GATOM_6D \
d0 = ARG4;
#define GET_6ATOMS_GATOM_6DUNK \
Bind(pt0, (*_PREG)->u.cccccc.c4);
Bind(pt0, (*_PREG)->y_u.cccccc.c4);
#define GET_6ATOMS_GATOM_6E \
d0 = ARG5;
#define GET_6ATOMS_GATOM_6EUNK \
Bind(pt0, (*_PREG)->u.cccccc.c5);
Bind(pt0, (*_PREG)->y_u.cccccc.c5);
#define GET_6ATOMS_GATOM_6F \
d0 = ARG6; \
d1 = (*_PREG)->u.cccccc.c6;
d1 = (*_PREG)->y_u.cccccc.c6;
#define GET_6ATOMS_GATOM_6FNONVAR \
BLOCK = (CELL)GET_6ATOMS_GATOM_6FNONVAR; \
@@ -319,7 +319,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.x.x);
d0 = XREG((*_PREG)->y_u.x.x);
#define GET_LIST_GLIST_NONVAR \
BLOCK = (CELL)GET_LIST_GLIST_NONVAR; \
@@ -351,7 +351,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xfa.x);
d0 = XREG((*_PREG)->y_u.xfa.x);
#define GET_STRUCT_GSTRUCT_NONVAR \
BLOCK = (CELL)GET_STRUCT_GSTRUCT_NONVAR; \
@@ -362,7 +362,7 @@
else { \
register CELL * S_SREG; \
S_SREG = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
if (*S_SREG != d0) { \
YAAM_FAIL; \
} \
@@ -378,9 +378,9 @@
d1 = AbsAppl(HR); \
Bind(pt0, d1); \
pt0 = HR; \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.xfa.a; \
HR = pt0 + (*_PREG)->y_u.xfa.a; \
(*_PREG) = NEXTOP((*_PREG), xfa); \
(*_SREG) = pt0; \
GONextW(); \
@@ -390,7 +390,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xd.x);
d0 = XREG((*_PREG)->y_u.xd.x);
#if SIZEOF_DOUBLE == 2*SIZEOF_INT_P
#define GET_FLOAT_GFLOAT_NONVAR \
@@ -405,7 +405,7 @@
YAAM_FAIL; \
} \
else { \
pt1 = (*_PREG)->u.xd.d; \
pt1 = (*_PREG)->y_u.xd.d; \
(*_PREG) = NEXTOP((*_PREG), xd); \
if ( \
pt1[1] != pt0[1] \
@@ -431,7 +431,7 @@
YAAM_FAIL; \
} \
else { \
pt1 = (*_PREG)->u.xd.d; \
pt1 = (*_PREG)->y_u.xd.d; \
(*_PREG) = NEXTOP((*_PREG), xd); \
if ( \
pt1[1] != pt0[1] \
@@ -447,7 +447,7 @@
#define GET_FLOAT_GFLOAT_UNK \
START_PREFETCH(xc); \
d1 = AbsAppl((*_PREG)->u.xd.d); \
d1 = AbsAppl((*_PREG)->y_u.xd.d); \
(*_PREG) = NEXTOP((*_PREG), xd); \
Bind(pt0, d1); \
GONext(); \
@@ -456,7 +456,7 @@
#define GET_LONGINT_INSTINIT \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xi.x);
d0 = XREG((*_PREG)->y_u.xi.x);
#define GET_LONGINT_GLONGINT_NONVAR \
BLOCK = (CELL)GET_LONGINT_GLONGINT_NONVAR; \
@@ -469,7 +469,7 @@
if (*pt0 != (CELL)FunctorLongInt) { \
YAAM_FAIL; \
} \
if ((*_PREG)->u.xi.i[1] != (CELL)pt0[1]) { \
if ((*_PREG)->y_u.xi.i[1] != (CELL)pt0[1]) { \
YAAM_FAIL; \
} \
} \
@@ -480,7 +480,7 @@
#define GET_LONGINT_GLONGINT_UNK \
START_PREFETCH(xi); \
d1 = AbsAppl((*_PREG)->u.xi.i); \
d1 = AbsAppl((*_PREG)->y_u.xi.i); \
(*_PREG) = NEXTOP((*_PREG), xi); \
Bind(pt0, d1); \
GONext(); \
@@ -490,7 +490,7 @@
#define GET_BIGINT_INSTINIT \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xN.x);
d0 = XREG((*_PREG)->y_u.xN.x);
#define GET_BIGINT_GBIGINT_NONVAR \
BLOCK = (CELL)GET_BIGINT_GBIGINT_NONVAR; \
@@ -503,7 +503,7 @@
if (*pt0 != (CELL)FunctorBigInt) { \
YAAM_FAIL; \
} \
if (Yap_gmp_tcmp_big_big(d0,(*_PREG)->u.xN.b)) { \
if (Yap_gmp_tcmp_big_big(d0,(*_PREG)->y_u.xN.b)) { \
YAAM_FAIL; \
} \
} \
@@ -514,7 +514,7 @@
#define GET_BIGINT_GBIGINT_UNK \
START_PREFETCH(xN); \
d1 = (*_PREG)->u.xN.b; \
d1 = (*_PREG)->y_u.xN.b; \
(*_PREG) = NEXTOP((*_PREG), xN); \
Bind(pt0, d1); \
GONext(); \
@@ -524,17 +524,17 @@
#define GET_DBTERM_INSTINIT \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xD.x);
d0 = XREG((*_PREG)->y_u.xD.x);
#define GET_DBTERM_GDBTERM_NONVAR \
BLOCK = (CELL)GET_DBTERM_GDBTERM_NONVAR; \
d1 = (*_PREG)->u.xD.D; \
d1 = (*_PREG)->y_u.xD.D; \
(*_PREG) = NEXTOP((*_PREG), xD); \
YAAM_UNIFYBOUND;
#define GET_DBTERM_GDBTERM_UNK \
START_PREFETCH(xD); \
d1 = (*_PREG)->u.xD.D; \
d1 = (*_PREG)->y_u.xD.D; \
(*_PREG) = NEXTOP((*_PREG), xD); \
Bind(pt0, d1); \
GONext(); \
@@ -544,7 +544,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl); \
d0 = XREG((*_PREG)->y_u.xx.xl); \
if (!IsVarTerm(d0)) { \
printf("Oops!\n"); \
exit(1); \
@@ -563,7 +563,7 @@
}
#define GLIST_VALX_GLIST_VALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GLIST_VALX_GLIST_VALX_NONVAR_NONVAR \
BLOCK = (CELL)GLIST_VALX_GLIST_VALX_NONVAR_NONVAR; \
@@ -576,7 +576,7 @@
GONext();
#define GLIST_VALX_GLIST_VALX_UNK \
d0 = XREG((*_PREG)->u.xx.xr);
d0 = XREG((*_PREG)->y_u.xx.xr);
#define GLIST_VALX_GLIST_VALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -591,7 +591,7 @@
#define GLIST_VALX_GLIST_VALX_WRITE \
CACHE_S(); \
S_SREG = HR; \
d1 = XREG((*_PREG)->u.xx.xr); \
d1 = XREG((*_PREG)->y_u.xx.xr); \
d0 = AbsPair(S_SREG); \
S_SREG[0] = d1; \
ALWAYS_START_PREFETCH_W(xx); \
@@ -606,7 +606,7 @@
#define GLIST_VALY_INSTINIT \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GLIST_VALY_GLIST_VALY_READ \
if (!IsPairTerm(d0)) { \
@@ -618,7 +618,7 @@
d0 = *pt0;
#define GLIST_VALY_GLIST_VALY_NONVAR \
pt1 = YREG + (*_PREG)->u.yx.y; \
pt1 = YREG + (*_PREG)->y_u.yx.y; \
d1 = *pt1; \
(*_PREG) = NEXTOP((*_PREG), yx);
@@ -632,7 +632,7 @@
GONext();
#define GLIST_VALY_GLIST_VALY_UNK \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GLIST_VALY_GLIST_VALY_VAR_NONVAR \
@@ -651,7 +651,7 @@
pt1 = HR; \
d0 = AbsPair(pt1); \
Bind(pt0, d0); \
d0 = YREG[(*_PREG)->u.yx.y]; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
pt1[0] = d0; \
HR = pt1 + 2; \
(*_SREG) = pt1 + 1; \
@@ -663,7 +663,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GL_VOID_VARX_GLIST_VOID_VARX_READ \
BLOCK = (CELL)GL_VOID_VARX_GLIST_VOID_VARX_READ; \
@@ -674,14 +674,14 @@
else { \
pt0 = RepPair(d0); \
d0 = pt0[1]; \
XREG((*_PREG)->u.xx.xr) = d0; \
XREG((*_PREG)->y_u.xx.xr) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
ALWAYS_GONext(); \
}
#define GL_VOID_VARX_GLIST_VOID_VAR_WRITE \
pt1 = HR; \
XREG((*_PREG)->u.xx.xr) = \
XREG((*_PREG)->y_u.xx.xr) = \
Unsigned(pt1 + 1); \
RESET_VARIABLE(pt1); \
RESET_VARIABLE(pt1+1); \
@@ -695,7 +695,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GL_VOID_VARY_GLIST_VOID_VARY_READ \
BLOCK = (CELL)GL_VOID_VARY_GLIST_VOID_VARY_READ; \
@@ -706,14 +706,14 @@
else { \
pt0 = RepPair(d0); \
d0 = pt0[1]; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.yx.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.yx.y,d0); \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
}
#define GL_VOID_VARY_GLIST_VOID_VARY_WRITE \
pt1 = HR; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.yx.y,Unsigned(pt1 + 1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.yx.y,Unsigned(pt1 + 1)); \
(*_PREG) = NEXTOP((*_PREG), yx); \
RESET_VARIABLE(pt1); \
RESET_VARIABLE(pt1+1); \
@@ -726,7 +726,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GL_VOID_VALX_GLIST_VOID_VALX_READ \
BLOCK = (CELL)GL_VOID_VALX_GLIST_VOID_VALX_READ; \
@@ -740,7 +740,7 @@
}
#define GL_VOID_VALX_GLIST_VOID_VALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GL_VOID_VALX_GLIST_VOID_VALX_NONVAR_NONVAR \
BLOCK = (CELL)GL_VOID_VALX_GLIST_VOID_VALX_NONVAR_NONVAR; \
@@ -753,7 +753,7 @@
GONext();
#define GL_VOID_VALX_GLIST_VOID_VALX_UNK \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GL_VOID_VALX_GLIST_VOID_VALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -770,7 +770,7 @@
d0 = AbsPair(pt1); \
Bind(pt0, d0); \
pt1 = HR; \
d0 = XREG((*_PREG)->u.xx.xr); \
d0 = XREG((*_PREG)->y_u.xx.xr); \
RESET_VARIABLE(pt1); \
pt1[1] = d0; \
HR = pt1 + 2; \
@@ -781,7 +781,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GL_VOID_VALY_GLIST_VOID_VALY_READ \
BLOCK = (CELL)GL_VOID_VALY_GLIST_VOID_VALY_READ; \
@@ -795,7 +795,7 @@
}
#define GL_VOID_VALY_GLIST_VOID_VALY_NONVAR \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GL_VOID_VALY_GLIST_VOID_VALY_NONVAR_NONVAR \
@@ -809,7 +809,7 @@
GONext();
#define GL_VOID_VALY_GLIST_VOID_VALY_UNK \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GL_VOID_VALY_GLIST_VOID_VALY_VAR_NONVAR \
@@ -828,7 +828,7 @@
d0 = AbsPair(S_SREG); \
Bind(pt0, d0); \
S_SREG = HR; \
d1 = YREG[(*_PREG)->u.yx.y]; \
d1 = YREG[(*_PREG)->y_u.yx.y]; \
RESET_VARIABLE(S_SREG); \
S_SREG[1] = d1; \
(*_PREG) = NEXTOP((*_PREG), yx); \

View File

@@ -1,8 +1,8 @@
#define GET_X_VAR_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = XREG((*_PREG)->u.xx.xr); \
XREG((*_PREG)->u.xx.xl) = d0; \
d0 = XREG((*_PREG)->y_u.xx.xr); \
XREG((*_PREG)->y_u.xx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONext();
@@ -10,8 +10,8 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
d0 = XREG((*_PREG)->u.yx.x); \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
d0 = XREG((*_PREG)->y_u.yx.x); \
(*_PREG) = NEXTOP((*_PREG), yx); \
INITIALIZE_PERMVAR(pt0,d0); \
GONext();
@@ -21,10 +21,10 @@
register CELL d0, d1; \
register CELL *pt0, *pt1; \
CACHE_Y(YREG); \
pt0 = S_YREG + (*_PREG)->u.yyxx.y1; \
d0 = XREG((*_PREG)->u.yyxx.x1); \
pt1 = S_YREG + (*_PREG)->u.yyx.y2; \
d1 = XREG((*_PREG)->u.yyxx.x2); \
pt0 = S_YREG + (*_PREG)->y_u.yyxx.y1; \
d0 = XREG((*_PREG)->y_u.yyxx.x1); \
pt1 = S_YREG + (*_PREG)->y_u.yyx.y2; \
d1 = XREG((*_PREG)->y_u.yyxx.x2); \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
INITIALIZE_PERMVAR(pt0,d0); \
INITIALIZE_PERMVAR(pt1,d1); \
@@ -36,10 +36,10 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GET_X_VAL_GVALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GET_X_VAL_GVALX_NONVAR_NONVAR \
BLOCK = (CELL)GET_X_VAL_GVALX_NONVAR_NONVAR; \
@@ -52,7 +52,7 @@
GONext();
#define GET_X_VAL_GVALX_UNK \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GET_X_VAL_GVALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -68,11 +68,11 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
pt0 = YREG + (*_PREG)->u.yx.y; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
d0 = *pt0;
#define GET_Y_VAL_GVALY_NONVAR \
d1 = XREG((*_PREG)->u.yx.x);
d1 = XREG((*_PREG)->y_u.yx.x);
#define GET_Y_VAL_GVALY_NONVAR_NONVAR \
BLOCK = (CELL)GET_Y_VAL_GVALY_NONVAR_NONVAR; \
@@ -85,7 +85,7 @@
GONext();
#define GET_Y_VAL_GVALY_UNK \
d1 = XREG((*_PREG)->u.yx.x);
d1 = XREG((*_PREG)->y_u.yx.x);
#define GET_Y_VAL_GVALY_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), yx); \
@@ -102,8 +102,8 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xc.x); \
d1 = (*_PREG)->u.xc.c;
d0 = XREG((*_PREG)->y_u.xc.x); \
d1 = (*_PREG)->y_u.xc.c;
#define GET_ATOM_GATOM_NONVAR \
BLOCK = (CELL)GET_ATOM_GATOM_NONVAR; \
@@ -128,11 +128,11 @@
d0 = ARG1;
#define GET_2ATOMS_GATOM_2UNK \
Bind(pt0, (*_PREG)->u.cc.c1);
Bind(pt0, (*_PREG)->y_u.cc.c1);
#define GET_2ATOMS_GATOM_2B \
d0 = ARG2; \
d1 = (*_PREG)->u.cc.c2;
d1 = (*_PREG)->y_u.cc.c2;
#define GET_2ATOMS_GATOM_2BNONVAR \
BLOCK = (CELL)GET_2ATOMS_GATOM_2BNONVAR; \
@@ -157,17 +157,17 @@
d0 = ARG1;
#define GET_3ATOMS_GATOM_3UNK \
Bind(pt0, (*_PREG)->u.ccc.c1);
Bind(pt0, (*_PREG)->y_u.ccc.c1);
#define GET_3ATOMS_GATOM_3B \
d0 = ARG2;
#define GET_3ATOMS_GATOM_3BUNK \
Bind(pt0, (*_PREG)->u.ccc.c2);
Bind(pt0, (*_PREG)->y_u.ccc.c2);
#define GET_3ATOMS_GATOM_3C \
d0 = ARG3; \
d1 = (*_PREG)->u.ccc.c3;
d1 = (*_PREG)->y_u.ccc.c3;
#define GET_3ATOMS_GATOM_3CNONVAR \
BLOCK = (CELL)GET_3ATOMS_GATOM_3CNONVAR; \
@@ -192,23 +192,23 @@
d0 = ARG1;
#define GET_4ATOMS_GATOM_4UNK \
Bind(pt0, (*_PREG)->u.cccc.c1);
Bind(pt0, (*_PREG)->y_u.cccc.c1);
#define GET_4ATOMS_GATOM_4B \
d0 = ARG2;
#define GET_4ATOMS_GATOM_4BUNK \
Bind(pt0, (*_PREG)->u.cccc.c2);
Bind(pt0, (*_PREG)->y_u.cccc.c2);
#define GET_4ATOMS_GATOM_4C \
d0 = ARG3;
#define GET_4ATOMS_GATOM_4CUNK \
Bind(pt0, (*_PREG)->u.cccc.c3);
Bind(pt0, (*_PREG)->y_u.cccc.c3);
#define GET_4ATOMS_GATOM_4D \
d0 = ARG4; \
d1 = (*_PREG)->u.cccc.c4;
d1 = (*_PREG)->y_u.cccc.c4;
#define GET_4ATOMS_GATOM_4DNONVAR \
BLOCK = (CELL)GET_4ATOMS_GATOM_4DNONVAR; \
@@ -233,29 +233,29 @@
d0 = ARG1;
#define GET_5ATOMS_GATOM_5UNK \
Bind(pt0, (*_PREG)->u.ccccc.c1);
Bind(pt0, (*_PREG)->y_u.ccccc.c1);
#define GET_5ATOMS_GATOM_5B \
d0 = ARG2;
#define GET_5ATOMS_GATOM_5BUNK \
Bind(pt0, (*_PREG)->u.ccccc.c2);
Bind(pt0, (*_PREG)->y_u.ccccc.c2);
#define GET_5ATOMS_GATOM_5C \
d0 = ARG3;
#define GET_5ATOMS_GATOM_5CUNK \
Bind(pt0, (*_PREG)->u.ccccc.c3);
Bind(pt0, (*_PREG)->y_u.ccccc.c3);
#define GET_5ATOMS_GATOM_5D \
d0 = ARG4;
#define GET_5ATOMS_GATOM_5DUNK \
Bind(pt0, (*_PREG)->u.ccccc.c4);
Bind(pt0, (*_PREG)->y_u.ccccc.c4);
#define GET_5ATOMS_GATOM_5E \
d0 = ARG5; \
d1 = (*_PREG)->u.ccccc.c5;
d1 = (*_PREG)->y_u.ccccc.c5;
#define GET_5ATOMS_GATOM_5ENONVAR \
BLOCK = (CELL)GET_5ATOMS_GATOM_5ENONVAR; \
@@ -280,35 +280,35 @@
d0 = ARG1;
#define GET_6ATOMS_GATOM_6UNK \
Bind(pt0, (*_PREG)->u.cccccc.c1);
Bind(pt0, (*_PREG)->y_u.cccccc.c1);
#define GET_6ATOMS_GATOM_6B \
d0 = ARG2;
#define GET_6ATOMS_GATOM_6BUNK \
Bind(pt0, (*_PREG)->u.cccccc.c2);
Bind(pt0, (*_PREG)->y_u.cccccc.c2);
#define GET_6ATOMS_GATOM_6C \
d0 = ARG3;
#define GET_6ATOMS_GATOM_6CUNK \
Bind(pt0, (*_PREG)->u.cccccc.c3);
Bind(pt0, (*_PREG)->y_u.cccccc.c3);
#define GET_6ATOMS_GATOM_6D \
d0 = ARG4;
#define GET_6ATOMS_GATOM_6DUNK \
Bind(pt0, (*_PREG)->u.cccccc.c4);
Bind(pt0, (*_PREG)->y_u.cccccc.c4);
#define GET_6ATOMS_GATOM_6E \
d0 = ARG5;
#define GET_6ATOMS_GATOM_6EUNK \
Bind(pt0, (*_PREG)->u.cccccc.c5);
Bind(pt0, (*_PREG)->y_u.cccccc.c5);
#define GET_6ATOMS_GATOM_6F \
d0 = ARG6; \
d1 = (*_PREG)->u.cccccc.c6;
d1 = (*_PREG)->y_u.cccccc.c6;
#define GET_6ATOMS_GATOM_6FNONVAR \
BLOCK = (CELL)GET_6ATOMS_GATOM_6FNONVAR; \
@@ -331,7 +331,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.x.x);
d0 = XREG((*_PREG)->y_u.x.x);
#define GET_LIST_GLIST_NONVAR \
BLOCK = (CELL)GET_LIST_GLIST_NONVAR; \
@@ -364,7 +364,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xfa.x);
d0 = XREG((*_PREG)->y_u.xfa.x);
#define GET_STRUCT_GSTRUCT_NONVAR \
BLOCK = (CELL)GET_STRUCT_GSTRUCT_NONVAR; \
@@ -375,7 +375,7 @@
else { \
register CELL * S_SREG; \
S_SREG = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
if (*S_SREG != d0) { \
YAAM_FAIL; \
} \
@@ -391,9 +391,9 @@
d1 = AbsAppl(HR); \
Bind(pt0, d1); \
pt0 = HR; \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.xfa.a; \
HR = pt0 + (*_PREG)->y_u.xfa.a; \
(*_PREG) = NEXTOP((*_PREG), xfa); \
(*_SREG) = pt0; \
GONextW(); \
@@ -404,7 +404,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xd.x);
d0 = XREG((*_PREG)->y_u.xd.x);
#if SIZEOF_DOUBLE == 2*SIZEOF_INT_P
#define GET_FLOAT_GFLOAT_NONVAR \
@@ -419,7 +419,7 @@
YAAM_FAIL; \
} \
else { \
pt1 = (*_PREG)->u.xd.d; \
pt1 = (*_PREG)->y_u.xd.d; \
(*_PREG) = NEXTOP((*_PREG), xd); \
if ( \
pt1[1] != pt0[1] \
@@ -445,7 +445,7 @@
YAAM_FAIL; \
} \
else { \
pt1 = (*_PREG)->u.xd.d; \
pt1 = (*_PREG)->y_u.xd.d; \
(*_PREG) = NEXTOP((*_PREG), xd); \
if ( \
pt1[1] != pt0[1] \
@@ -461,7 +461,7 @@
#define GET_FLOAT_GFLOAT_UNK \
START_PREFETCH(xc); \
d1 = AbsAppl((*_PREG)->u.xd.d); \
d1 = AbsAppl((*_PREG)->y_u.xd.d); \
(*_PREG) = NEXTOP((*_PREG), xd); \
Bind(pt0, d1); \
GONext(); \
@@ -471,7 +471,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xi.x);
d0 = XREG((*_PREG)->y_u.xi.x);
#define GET_LONGINT_GLONGINT_NONVAR \
BLOCK = (CELL)GET_LONGINT_GLONGINT_NONVAR; \
@@ -484,7 +484,7 @@
if (*pt0 != (CELL)FunctorLongInt) { \
YAAM_FAIL; \
} \
if ((*_PREG)->u.xi.i[1] != (CELL)pt0[1]) { \
if ((*_PREG)->y_u.xi.i[1] != (CELL)pt0[1]) { \
YAAM_FAIL; \
} \
} \
@@ -495,7 +495,7 @@
#define GET_LONGINT_GLONGINT_UNK \
START_PREFETCH(xi); \
d1 = AbsAppl((*_PREG)->u.xi.i); \
d1 = AbsAppl((*_PREG)->y_u.xi.i); \
(*_PREG) = NEXTOP((*_PREG), xi); \
Bind(pt0, d1); \
GONext(); \
@@ -506,7 +506,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xN.x);
d0 = XREG((*_PREG)->y_u.xN.x);
#define GET_BIGINT_GBIGINT_NONVAR \
BLOCK = (CELL)GET_BIGINT_GBIGINT_NONVAR; \
@@ -519,7 +519,7 @@
if (*pt0 != (CELL)FunctorBigInt) { \
YAAM_FAIL; \
} \
if (Yap_gmp_tcmp_big_big(d0,(*_PREG)->u.xN.b)) { \
if (Yap_gmp_tcmp_big_big(d0,(*_PREG)->y_u.xN.b)) { \
YAAM_FAIL; \
} \
} \
@@ -530,7 +530,7 @@
#define GET_BIGINT_GBIGINT_UNK \
START_PREFETCH(xN); \
d1 = (*_PREG)->u.xN.b; \
d1 = (*_PREG)->y_u.xN.b; \
(*_PREG) = NEXTOP((*_PREG), xN); \
Bind(pt0, d1); \
GONext(); \
@@ -541,17 +541,17 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.xD.x);
d0 = XREG((*_PREG)->y_u.xD.x);
#define GET_DBTERM_GDBTERM_NONVAR \
BLOCK = (CELL)GET_DBTERM_GDBTERM_NONVAR; \
d1 = (*_PREG)->u.xD.D; \
d1 = (*_PREG)->y_u.xD.D; \
(*_PREG) = NEXTOP((*_PREG), xD); \
YAAM_UNIFYBOUND;
#define GET_DBTERM_GDBTERM_UNK \
START_PREFETCH(xD); \
d1 = (*_PREG)->u.xD.D; \
d1 = (*_PREG)->y_u.xD.D; \
(*_PREG) = NEXTOP((*_PREG), xD); \
Bind(pt0, d1); \
GONext(); \
@@ -562,7 +562,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl); \
d0 = XREG((*_PREG)->y_u.xx.xl); \
if (!IsVarTerm(d0)) { \
printf("Oops!\n"); \
exit(1); \
@@ -581,7 +581,7 @@
}
#define GLIST_VALX_GLIST_VALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GLIST_VALX_GLIST_VALX_NONVAR_NONVAR \
BLOCK = (CELL)GLIST_VALX_GLIST_VALX_NONVAR_NONVAR; \
@@ -594,7 +594,7 @@
GONext();
#define GLIST_VALX_GLIST_VALX_UNK \
d0 = XREG((*_PREG)->u.xx.xr);
d0 = XREG((*_PREG)->y_u.xx.xr);
#define GLIST_VALX_GLIST_VALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -609,7 +609,7 @@
#define GLIST_VALX_GLIST_VALX_WRITE \
CACHE_S(); \
S_SREG = HR; \
d1 = XREG((*_PREG)->u.xx.xr); \
d1 = XREG((*_PREG)->y_u.xx.xr); \
d0 = AbsPair(S_SREG); \
S_SREG[0] = d1; \
ALWAYS_START_PREFETCH_W(xx); \
@@ -625,7 +625,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GLIST_VALY_GLIST_VALY_READ \
if (!IsPairTerm(d0)) { \
@@ -637,7 +637,7 @@
d0 = *pt0;
#define GLIST_VALY_GLIST_VALY_NONVAR \
pt1 = YREG + (*_PREG)->u.yx.y; \
pt1 = YREG + (*_PREG)->y_u.yx.y; \
d1 = *pt1; \
(*_PREG) = NEXTOP((*_PREG), yx);
@@ -651,7 +651,7 @@
GONext();
#define GLIST_VALY_GLIST_VALY_UNK \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GLIST_VALY_GLIST_VALY_VAR_NONVAR \
@@ -670,7 +670,7 @@
pt1 = HR; \
d0 = AbsPair(pt1); \
Bind(pt0, d0); \
d0 = YREG[(*_PREG)->u.yx.y]; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
pt1[0] = d0; \
HR = pt1 + 2; \
(*_SREG) = pt1 + 1; \
@@ -683,7 +683,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GL_VOID_VARX_GLIST_VOID_VARX_READ \
BLOCK = (CELL)GL_VOID_VARX_GLIST_VOID_VARX_READ; \
@@ -694,14 +694,14 @@
else { \
pt0 = RepPair(d0); \
d0 = pt0[1]; \
XREG((*_PREG)->u.xx.xr) = d0; \
XREG((*_PREG)->y_u.xx.xr) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
ALWAYS_GONext(); \
}
#define GL_VOID_VARX_GLIST_VOID_VAR_WRITE \
pt1 = HR; \
XREG((*_PREG)->u.xx.xr) = \
XREG((*_PREG)->y_u.xx.xr) = \
Unsigned(pt1 + 1); \
RESET_VARIABLE(pt1); \
RESET_VARIABLE(pt1+1); \
@@ -716,7 +716,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GL_VOID_VARY_GLIST_VOID_VARY_READ \
BLOCK = (CELL)GL_VOID_VARY_GLIST_VOID_VARY_READ; \
@@ -727,14 +727,14 @@
else { \
pt0 = RepPair(d0); \
d0 = pt0[1]; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.yx.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.yx.y,d0); \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
}
#define GL_VOID_VARY_GLIST_VOID_VARY_WRITE \
pt1 = HR; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.yx.y,Unsigned(pt1 + 1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.yx.y,Unsigned(pt1 + 1)); \
(*_PREG) = NEXTOP((*_PREG), yx); \
RESET_VARIABLE(pt1); \
RESET_VARIABLE(pt1+1); \
@@ -748,7 +748,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.xx.xl);
d0 = XREG((*_PREG)->y_u.xx.xl);
#define GL_VOID_VALX_GLIST_VOID_VALX_READ \
BLOCK = (CELL)GL_VOID_VALX_GLIST_VOID_VALX_READ; \
@@ -762,7 +762,7 @@
}
#define GL_VOID_VALX_GLIST_VOID_VALX_NONVAR \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GL_VOID_VALX_GLIST_VOID_VALX_NONVAR_NONVAR \
BLOCK = (CELL)GL_VOID_VALX_GLIST_VOID_VALX_NONVAR_NONVAR; \
@@ -775,7 +775,7 @@
GONext();
#define GL_VOID_VALX_GLIST_VOID_VALX_UNK \
d1 = XREG((*_PREG)->u.xx.xr);
d1 = XREG((*_PREG)->y_u.xx.xr);
#define GL_VOID_VALX_GLIST_VOID_VALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), xx); \
@@ -792,7 +792,7 @@
d0 = AbsPair(pt1); \
Bind(pt0, d0); \
pt1 = HR; \
d0 = XREG((*_PREG)->u.xx.xr); \
d0 = XREG((*_PREG)->y_u.xx.xr); \
RESET_VARIABLE(pt1); \
pt1[1] = d0; \
HR = pt1 + 2; \
@@ -804,7 +804,7 @@
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.yx.x);
d0 = XREG((*_PREG)->y_u.yx.x);
#define GL_VOID_VALY_GLIST_VOID_VALY_READ \
BLOCK = (CELL)GL_VOID_VALY_GLIST_VOID_VALY_READ; \
@@ -818,7 +818,7 @@
}
#define GL_VOID_VALY_GLIST_VOID_VALY_NONVAR \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GL_VOID_VALY_GLIST_VOID_VALY_NONVAR_NONVAR \
@@ -832,7 +832,7 @@
GONext();
#define GL_VOID_VALY_GLIST_VOID_VALY_UNK \
pt1 = YREG+(*_PREG)->u.yx.y; \
pt1 = YREG+(*_PREG)->y_u.yx.y; \
d1 = *pt1;
#define GL_VOID_VALY_GLIST_VOID_VALY_VAR_NONVAR \
@@ -851,7 +851,7 @@
d0 = AbsPair(S_SREG); \
Bind(pt0, d0); \
S_SREG = HR; \
d1 = YREG[(*_PREG)->u.yx.y]; \
d1 = YREG[(*_PREG)->y_u.yx.y]; \
RESET_VARIABLE(S_SREG); \
S_SREG[1] = d1; \
(*_PREG) = NEXTOP((*_PREG), yx); \

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
GONext(); \
} \
else { \
PP = (*_PREG)->u.p.p; \
PP = (*_PREG)->y_u.p.p; \
PELOCK(3, PP); \
(*_PREG) = NEXTOP((*_PREG), p); \
GONext(); \
@@ -35,7 +35,7 @@
#if MULTIPLE_STACKS
#define ALLOC_FOR_LOGICAL_PRED_MULTIPLE_STACKS \
LogUpdClause *cl = (*_PREG)->u.L.ClBase;
LogUpdClause *cl = (*_PREG)->y_u.L.ClBase;
#if PARALLEL_YAP
#define ALLOC_FOR_LOGICAL_PRED_MULTIPLE_STACKS_PARALLEL \
PredEntry *ap = cl->ClPred;
@@ -47,7 +47,7 @@
PP = NULL;
#else
#define ALLOC_FOR_LOGICAL_PRED_NOMULTIPLE_STACKS_INIT \
LogUpdClause *cl = (LogUpdClause *)(*_PREG)->u.L.ClBase;
LogUpdClause *cl = (LogUpdClause *)(*_PREG)->y_u.L.ClBase;
#define ALLOC_FOR_LOGICAL_PRED_NOMULTIPLE_STACKS_IF \
if (!(cl->ClFlags & InUseMask)) { \
@@ -562,13 +562,13 @@
#ifdef DEPTH_LIMIT
#define ENSURE_SPACE_INSTINIT \
{ \
Int sz = (*_PREG)->u.Osbpa.i; \
UInt arity = (*_PREG)->u.Osbpa.p->ArityOfPE; \
Int sz = (*_PREG)->y_u.Osbpa.i; \
UInt arity = (*_PREG)->y_u.Osbpa.p->ArityOfPE; \
if (Unsigned(HR) + sz > Unsigned(YREG)-CreepFlag) { \
YENV[E_CP] = (CELL) (*_C(*_PREG)); \
YENV[E_E] = (CELL) ENV; \
YENV[E_DEPTH] = DEPTH; \
SET_ASP(YREG, (*_PREG)->u.Osbpa.s); \
SET_ASP(YREG, (*_PREG)->y_u.Osbpa.s); \
(*_PREG) = NEXTOP((*_PREG),Osbpa); \
saveregs(); \
setregs(); \
@@ -580,12 +580,12 @@
#else /* DEPTH_LIMIT */
#define ENSURE_SPACE_INSTINIT \
{ \
Int sz = (*_PREG)->u.Osbpa.i; \
UInt arity = (*_PREG)->u.Osbpa.p->ArityOfPE; \
Int sz = (*_PREG)->y_u.Osbpa.i; \
UInt arity = (*_PREG)->y_u.Osbpa.p->ArityOfPE; \
if (Unsigned(HR) + sz > Unsigned(YREG)-CreepFlag) { \
YENV[E_CP] = (CELL) (*_C(*_PREG)); \
YENV[E_E] = (CELL) ENV; \
SET_ASP(YREG, (*_PREG)->u.Osbpa.s); \
SET_ASP(YREG, (*_PREG)->y_u.Osbpa.s); \
(*_PREG) = NEXTOP((*_PREG),Osbpa); \
saveregs(); \
setregs(); \
@@ -599,7 +599,7 @@
#define ENSURE_SPACE_END
#define JUMP_INSTINIT \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
JMPNext();
#define MOVE_BACK_INSTINIT \
@@ -620,7 +620,7 @@
#define EITHER_POST_COROUTINING \
register CELL d0; \
register choiceptr pt1; \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0);
#ifdef FROZEN_STACKS
@@ -644,7 +644,7 @@
#define EITHER_POST_FROZEN_YSBA \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1);
#ifdef YAPOR
@@ -658,7 +658,7 @@
GONext();
#define OR_ELSE_INSTINIT \
HR = HRBREG = PROTECT_FROZEN_H(B); \
HR = HBREG = PROTECT_FROZEN_H(B); \
ENV = B->cp_env; \
B->cp_cp = (*_PREG);
@@ -672,11 +672,11 @@
#ifdef YAPOR
#define OR_ELSE_YAPOR \
SCH_new_alternative((*_PREG), (*_PREG)->u.Osblp.l);
SCH_new_alternative((*_PREG), (*_PREG)->y_u.Osblp.l);
#endif
#define OR_ELSE_END \
B->cp_ap = (*_PREG)->u.Osblp.l; \
B->cp_ap = (*_PREG)->y_u.Osblp.l; \
(*_PREG) = NEXTOP((*_PREG), Osblp); \
YREG = (CELL *) B->cp_a1; \
GONext();
@@ -687,7 +687,7 @@
#ifdef YAPOR
#define OR_LAST_IFOK_INIT \
H = HRBREG = PROTECT_FROZEN_H(pt0); \
HR = HBREG = PROTECT_FROZEN_H(pt0); \
YREG = (CELL *) pt0->cp_a1; \
ENV = pt0->cp_env;
@@ -702,7 +702,7 @@
#define OR_LAST_NOIF_INIT \
B = pt0->cp_b; \
H = PROTECT_FROZEN_H(pt0); \
HR = PROTECT_FROZEN_H(pt0); \
YREG = (CELL *) pt0->cp_a1; \
ENV = pt0->cp_env;
@@ -855,7 +855,7 @@
JMPNext();
#define EXPAND_CLAUSES_INSTINIT \
PredEntry *pe = (*_PREG)->u.sssllp.p; \
PredEntry *pe = (*_PREG)->y_u.sssllp.p; \
yamop *pt0; \
SET_ASP(YREG, E_CB*sizeof(CELL));
@@ -909,7 +909,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -921,14 +921,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -937,7 +937,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -972,7 +972,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -984,14 +984,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1000,7 +1000,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1034,7 +1034,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1046,14 +1046,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1062,7 +1062,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1097,7 +1097,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1109,14 +1109,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1125,7 +1125,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1206,7 +1206,7 @@
HR[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
#define SPY_PRED_D0ISNOZERO_INIT \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR[d0 + 2] = AbsAppl(HR); \
HR++; \
pt1 = XREGS + 1;
@@ -1216,10 +1216,10 @@
d1 = *pt0;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_DOSPY_NONVAR \
*H++ = d1;
*HR++ = d1;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_SAFEVAR \
*H++ = (CELL)pt0;
*HR++ = (CELL)pt0;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_UNSAFEVAR \
d1 = Unsigned(HR); \
@@ -1228,7 +1228,7 @@
Bind_Local(pt0, d1);
#define SPY_PRED_POST_IFS \
H[0] = Yap_Module_Name(pe); \
HR[0] = Yap_Module_Name(pe); \
ARG1 = (Term) AbsPair(HR); \
HR += 2; \
PredEntry *pt0;

View File

@@ -6,7 +6,7 @@
GONext(); \
} \
else { \
PP = (*_PREG)->u.p.p; \
PP = (*_PREG)->y_u.p.p; \
PELOCK(3, PP); \
(*_PREG) = NEXTOP((*_PREG), p); \
GONext(); \
@@ -39,7 +39,7 @@
#if MULTIPLE_STACKS
#define ALLOC_FOR_LOGICAL_PRED_MULTIPLE_STACKS \
LogUpdClause *cl = (*_PREG)->u.L.ClBase;
LogUpdClause *cl = (*_PREG)->y_u.L.ClBase;
#if PARALLEL_YAP
#define ALLOC_FOR_LOGICAL_PRED_MULTIPLE_STACKS_PARALLEL \
PredEntry *ap = cl->ClPred;
@@ -51,7 +51,7 @@
PP = NULL;
#else
#define ALLOC_FOR_LOGICAL_PRED_NOMULTIPLE_STACKS_INIT \
LogUpdClause *cl = (LogUpdClause *)(*_PREG)->u.L.ClBase;
LogUpdClause *cl = (LogUpdClause *)(*_PREG)->y_u.L.ClBase;
#define ALLOC_FOR_LOGICAL_PRED_NOMULTIPLE_STACKS_IF \
if (!(cl->ClFlags & InUseMask)) { \
@@ -583,13 +583,13 @@
#define ENSURE_SPACE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
{ \
Int sz = (*_PREG)->u.Osbpa.i; \
UInt arity = (*_PREG)->u.Osbpa.p->ArityOfPE; \
Int sz = (*_PREG)->y_u.Osbpa.i; \
UInt arity = (*_PREG)->y_u.Osbpa.p->ArityOfPE; \
if (Unsigned(HR) + sz > Unsigned(YREG)-CreepFlag) { \
YENV[E_CP] = (CELL) (*_C(*_PREG)); \
YENV[E_E] = (CELL) ENV; \
YENV[E_DEPTH] = DEPTH; \
SET_ASP(YREG, (*_PREG)->u.Osbpa.s); \
SET_ASP(YREG, (*_PREG)->y_u.Osbpa.s); \
(*_PREG) = NEXTOP((*_PREG),Osbpa); \
saveregs(); \
setregs(); \
@@ -602,12 +602,12 @@
#define ENSURE_SPACE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
{ \
Int sz = (*_PREG)->u.Osbpa.i; \
UInt arity = (*_PREG)->u.Osbpa.p->ArityOfPE; \
Int sz = (*_PREG)->y_u.Osbpa.i; \
UInt arity = (*_PREG)->y_u.Osbpa.p->ArityOfPE; \
if (Unsigned(HR) + sz > Unsigned(YREG)-CreepFlag) { \
YENV[E_CP] = (CELL) (*_C(*_PREG)); \
YENV[E_E] = (CELL) ENV; \
SET_ASP(YREG, (*_PREG)->u.Osbpa.s); \
SET_ASP(YREG, (*_PREG)->y_u.Osbpa.s); \
(*_PREG) = NEXTOP((*_PREG),Osbpa); \
saveregs(); \
setregs(); \
@@ -622,7 +622,7 @@
#define JUMP_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
(*_PREG) = (*_PREG)->u.l.l; \
(*_PREG) = (*_PREG)->y_u.l.l; \
JMPNext();
#define MOVE_BACK_INSTINIT \
@@ -646,7 +646,7 @@
#define EITHER_POST_COROUTINING \
register CELL d0; \
register choiceptr pt1; \
d0 = (*_PREG)->u.Osblp.s; \
d0 = (*_PREG)->y_u.Osblp.s; \
pt1 = (choiceptr) ((char *) YREG + (yslot) d0);
#ifdef FROZEN_STACKS
@@ -670,7 +670,7 @@
#define EITHER_POST_FROZEN_YSBA \
pt1 = (choiceptr)(((CELL *) pt1)-1); \
*(CELL **) pt1 = YREG; \
store_yaam_regs_for_either((*_PREG)->u.Osblp.l, (*_PREG)); \
store_yaam_regs_for_either((*_PREG)->y_u.Osblp.l, (*_PREG)); \
(*_SREG) = (CELL *) (B = pt1);
#ifdef YAPOR
@@ -685,7 +685,7 @@
#define OR_ELSE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
HR = HRBREG = PROTECT_FROZEN_H(B); \
HR = HBREG = PROTECT_FROZEN_H(B); \
ENV = B->cp_env; \
B->cp_cp = (*_PREG);
@@ -699,11 +699,11 @@
#ifdef YAPOR
#define OR_ELSE_YAPOR \
SCH_new_alternative((*_PREG), (*_PREG)->u.Osblp.l);
SCH_new_alternative((*_PREG), (*_PREG)->y_u.Osblp.l);
#endif
#define OR_ELSE_END \
B->cp_ap = (*_PREG)->u.Osblp.l; \
B->cp_ap = (*_PREG)->y_u.Osblp.l; \
(*_PREG) = NEXTOP((*_PREG), Osblp); \
YREG = (CELL *) B->cp_a1; \
GONext();
@@ -715,7 +715,7 @@
#ifdef YAPOR
#define OR_LAST_IFOK_INIT \
H = HRBREG = PROTECT_FROZEN_H(pt0); \
HR = HBREG = PROTECT_FROZEN_H(pt0); \
YREG = (CELL *) pt0->cp_a1; \
ENV = pt0->cp_env;
@@ -730,7 +730,7 @@
#define OR_LAST_NOIF_INIT \
B = pt0->cp_b; \
H = PROTECT_FROZEN_H(pt0); \
HR = PROTECT_FROZEN_H(pt0); \
YREG = (CELL *) pt0->cp_a1; \
ENV = pt0->cp_env;
@@ -889,7 +889,7 @@
#define EXPAND_CLAUSES_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
PredEntry *pe = (*_PREG)->u.sssllp.p; \
PredEntry *pe = (*_PREG)->y_u.sssllp.p; \
yamop *pt0; \
SET_ASP(YREG, E_CB*sizeof(CELL));
@@ -944,7 +944,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -956,14 +956,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -972,7 +972,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1008,7 +1008,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1020,14 +1020,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1036,7 +1036,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1071,7 +1071,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1083,14 +1083,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1099,7 +1099,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1135,7 +1135,7 @@
} \
else { \
HR[d0 + 2] = AbsAppl(HR); \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR++; \
pt1 = XREGS + 1; \
for (; d0 > 0; --d0) { \
@@ -1147,14 +1147,14 @@
(pt0) = (CELL *)(d1); \
(d1) = *(CELL *)(d1); \
if(!IsVarTerm(d1)) { \
*H++ = d1; \
*HR++ = d1; \
setHwithd1 = 1; \
break; \
} \
} \
if (setHwithd1) { continue; } \
if (pt0 <= HR) { \
*H++ = (CELL)pt0; \
*HR++ = (CELL)pt0; \
} else { \
d1 = Unsigned(HR); \
RESET_VARIABLE(HR); \
@@ -1163,7 +1163,7 @@
} \
} \
else { \
*H++ = d1; \
*HR++ = d1; \
} \
} \
} \
@@ -1245,7 +1245,7 @@
HR[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
#define SPY_PRED_D0ISNOZERO_INIT \
*H = (CELL) pe->FunctorOfPred; \
*HR = (CELL) pe->FunctorOfPred; \
HR[d0 + 2] = AbsAppl(HR); \
HR++; \
pt1 = XREGS + 1;
@@ -1255,10 +1255,10 @@
d1 = *pt0;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_DOSPY_NONVAR \
*H++ = d1;
*HR++ = d1;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_SAFEVAR \
*H++ = (CELL)pt0;
*HR++ = (CELL)pt0;
#define SPY_PRED_D0ISNOZERO_INSIDEFOR_UNSAFEVAR \
d1 = Unsigned(HR); \
@@ -1267,7 +1267,7 @@
Bind_Local(pt0, d1);
#define SPY_PRED_POST_IFS \
H[0] = Yap_Module_Name(pe); \
HR[0] = Yap_Module_Name(pe); \
ARG1 = (Term) AbsPair(HR); \
HR += 2; \
PredEntry *pt0;

View File

@@ -1,7 +1,7 @@
#define POP_N_INSTINIT \
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
SP = (CELL *) (((char *) SP) + d0); \
d0 = SP[0]; \
if (d0) { \

View File

@@ -2,7 +2,7 @@
print_instruction((*_PREG), ON_NATIVE); \
BLOCKADDRESS = (CELL)(*_PREG); \
register CELL d0; \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
SP = (CELL *) (((char *) SP) + d0); \
d0 = SP[0]; \
if (d0) { \

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
#define PUT_X_VAR_INSTINIT \
register CELL *pt0; \
pt0 = HR; \
XREG((*_PREG)->u.xx.xl) = Unsigned(pt0); \
XREG((*_PREG)->y_u.xx.xl) = Unsigned(pt0); \
HR = pt0 + 1; \
XREG((*_PREG)->u.xx.xr) = Unsigned(pt0); \
XREG((*_PREG)->y_u.xx.xr) = Unsigned(pt0); \
(*_PREG) = NEXTOP((*_PREG), xx); \
RESET_VARIABLE(pt0); \
GONext();
@@ -11,8 +11,8 @@
#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
#define PUT_Y_VAR_INSTINIT \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
XREG((*_PREG)->u.yx.x) = (CELL) pt0; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
XREG((*_PREG)->y_u.yx.x) = (CELL) pt0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
if (Unsigned((Int)(pt0)-(Int)(H_FZ)) > \
Unsigned((Int)(B_FZ)-(Int)(H_FZ))) { \
@@ -23,8 +23,8 @@
#else /* defined(YAPOR_SBA) && defined(FROZEN_STACKS) */
#define PUT_Y_VAR_INSTINIT \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
XREG((*_PREG)->u.yx.x) = (CELL) pt0; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
XREG((*_PREG)->y_u.yx.x) = (CELL) pt0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
INITIALIZE_PERMVAR(pt0, (CELL)pt0); \
GONext();
@@ -32,35 +32,35 @@
#define PUT_X_VAL_INSTINIT \
register CELL d0; \
d0 = XREG((*_PREG)->u.xx.xl); \
XREG((*_PREG)->u.xx.xr) = d0; \
d0 = XREG((*_PREG)->y_u.xx.xl); \
XREG((*_PREG)->y_u.xx.xr) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONext();
#define PUT_XX_VAL_INSTINIT \
register CELL d0, d1; \
d0 = XREG((*_PREG)->u.xxxx.xl1); \
d1 = XREG((*_PREG)->u.xxxx.xl2); \
XREG((*_PREG)->u.xxxx.xr1) = d0; \
XREG((*_PREG)->u.xxxx.xr2) = d1; \
d0 = XREG((*_PREG)->y_u.xxxx.xl1); \
d1 = XREG((*_PREG)->y_u.xxxx.xl2); \
XREG((*_PREG)->y_u.xxxx.xr1) = d0; \
XREG((*_PREG)->y_u.xxxx.xr2) = d1; \
(*_PREG) = NEXTOP((*_PREG), xxxx); \
GONext();
#ifdef YAPOR_SBA
#define PUT_Y_VAL_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.yx.y]; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
if (d0 == 0) { \
XREG((*_PREG)->u.yx.x) = (CELL)(YREG+(*_PREG)->u.yx.y); \
XREG((*_PREG)->y_u.yx.x) = (CELL)(YREG+(*_PREG)->y_u.yx.y); \
} else \
XREG((*_PREG)->u.yx.x) = d0; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext();
#else /* YAPOR_SBA */
#define PUT_Y_VAL_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.yx.y]; \
XREG((*_PREG)->u.yx.x) = d0; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext();
#endif /* YAPOR_SBA */
@@ -69,28 +69,28 @@
#define PUT_Y_VALS_INSTINIT \
register CELL d0, d1; \
ALWAYS_START_PREFETCH(yyxx); \
d0 = YREG[(*_PREG)->u.yyxx.y1]; \
d0 = YREG[(*_PREG)->y_u.yyxx.y1]; \
if (d0 == 0) \
XREG((*_PREG)->u.yyxx.x1) = (CELL)(YREG+(*_PREG)->u.yyxx.y1); \
XREG((*_PREG)->y_u.yyxx.x1) = (CELL)(YREG+(*_PREG)->y_u.yyxx.y1); \
else \
XREG((*_PREG)->u.yyxx.x1) = d0; \
XREG((*_PREG)->y_u.yyxx.x1) = d0; \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
d1 = YREG[PREVOP((*_PREG),yyxx)->u.yyxx.y2]; \
d1 = YREG[PREVOP((*_PREG),yyxx)->y_u.yyxx.y2]; \
if (d1 == 0) \
XREG(PREVOP((*_PREG)->u.yyxx,yyxx).x2) = (CELL)(YREG+(*_PREG)->u.yyxx.y2); \
XREG(PREVOP((*_PREG)->y_u.yyxx,yyxx).x2) = (CELL)(YREG+(*_PREG)->y_u.yyxx.y2); \
else \
XREG(PREVOP((*_PREG),yyxx)->u.yyxx.x2) = d1; \
XREG(PREVOP((*_PREG),yyxx)->y_u.yyxx.x2) = d1; \
ALWAYS_GONext(); \
ALWAYS_END_PREFETCH();
#else /* YAPOR_SBA */
#define PUT_Y_VALS_INSTINIT \
register CELL d0, d1; \
ALWAYS_START_PREFETCH(yyxx); \
d0 = YREG[(*_PREG)->u.yyxx.y1]; \
XREG((*_PREG)->u.yyxx.x1) = d0; \
d0 = YREG[(*_PREG)->y_u.yyxx.y1]; \
XREG((*_PREG)->y_u.yyxx.x1) = d0; \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
d1 = YREG[PREVOP((*_PREG),yyxx)->u.yyxx.y2]; \
XREG(PREVOP((*_PREG),yyxx)->u.yyxx.x2) = d1; \
d1 = YREG[PREVOP((*_PREG),yyxx)->y_u.yyxx.y2]; \
XREG(PREVOP((*_PREG),yyxx)->y_u.yyxx.x2) = d1; \
ALWAYS_GONext(); \
ALWAYS_END_PREFETCH();
#endif /* YAPOR_SBA */
@@ -98,61 +98,61 @@
#define PUT_UNSAFE_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.yx.y; \
pt0 = YREG+(*_PREG)->y_u.yx.y; \
d0 = *pt0;
#define PUT_UNSAFE_PUNSAFE_NONVAR \
XREG((*_PREG)->u.yx.x) = d0; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext();
#define PUT_UNSAFE_PUNSAFE_UNK \
if (pt0 <= HR || pt0 >= YREG) { \
XREG((*_PREG)->u.yx.x) = Unsigned(pt0); \
XREG((*_PREG)->y_u.yx.x) = Unsigned(pt0); \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
} \
else { \
Bind_Local(pt0, Unsigned(HR)); \
XREG((*_PREG)->u.yx.x) = (CELL) HR; \
XREG((*_PREG)->y_u.yx.x) = (CELL) HR; \
RESET_VARIABLE(HR); \
H++; \
HR++; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
}
#define PUT_ATOM_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.xc.c; \
XREG((*_PREG)->u.xc.x) = d0; \
d0 = (*_PREG)->y_u.xc.c; \
XREG((*_PREG)->y_u.xc.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xc); \
GONext();
#define PUT_DBTERM_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.xD.D; \
XREG((*_PREG)->u.xD.x) = d0; \
d0 = (*_PREG)->y_u.xD.D; \
XREG((*_PREG)->y_u.xD.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xD); \
GONext();
#define PUT_BIGINT_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.xN.b; \
XREG((*_PREG)->u.xN.x) = d0; \
d0 = (*_PREG)->y_u.xN.b; \
XREG((*_PREG)->y_u.xN.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xN); \
GONext();
#define PUT_FLOAT_INSTINIT \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.xd.d); \
XREG((*_PREG)->u.xd.x) = d0; \
d0 = AbsAppl((*_PREG)->y_u.xd.d); \
XREG((*_PREG)->y_u.xd.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xd); \
GONext();
#define PUT_LONGINT_INSTINIT \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.xi.i); \
XREG((*_PREG)->u.xi.x) = d0; \
d0 = AbsAppl((*_PREG)->y_u.xi.i); \
XREG((*_PREG)->y_u.xi.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xi); \
GONext();
@@ -163,7 +163,7 @@
S_SREG = HR; \
HR += 2; \
d0 = AbsPair(S_SREG); \
XREG((*_PREG)->u.x.x) = d0; \
XREG((*_PREG)->y_u.x.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), x); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -172,11 +172,11 @@
#define PUT_STRUCT_INSTINIT \
register CELL d0; \
d0 = AbsAppl(HR); \
XREG((*_PREG)->u.xfa.x) = d0; \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
*H++ = d0; \
XREG((*_PREG)->y_u.xfa.x) = d0; \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
*HR++ = d0; \
(*_SREG) = HR; \
HR += (*_PREG)->u.xfa.a; \
HR += (*_PREG)->y_u.xfa.a; \
(*_PREG) = NEXTOP((*_PREG), xfa); \
GONext();

View File

@@ -2,9 +2,9 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL *pt0; \
pt0 = HR; \
XREG((*_PREG)->u.xx.xl) = Unsigned(pt0); \
XREG((*_PREG)->y_u.xx.xl) = Unsigned(pt0); \
HR = pt0 + 1; \
XREG((*_PREG)->u.xx.xr) = Unsigned(pt0); \
XREG((*_PREG)->y_u.xx.xr) = Unsigned(pt0); \
(*_PREG) = NEXTOP((*_PREG), xx); \
RESET_VARIABLE(pt0); \
GONext();
@@ -13,8 +13,8 @@
#define PUT_Y_VAR_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
XREG((*_PREG)->u.yx.x) = (CELL) pt0; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
XREG((*_PREG)->y_u.yx.x) = (CELL) pt0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
if (Unsigned((Int)(pt0)-(Int)(H_FZ)) > \
Unsigned((Int)(B_FZ)-(Int)(H_FZ))) { \
@@ -26,8 +26,8 @@
#define PUT_Y_VAR_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL *pt0; \
pt0 = YREG + (*_PREG)->u.yx.y; \
XREG((*_PREG)->u.yx.x) = (CELL) pt0; \
pt0 = YREG + (*_PREG)->y_u.yx.y; \
XREG((*_PREG)->y_u.yx.x) = (CELL) pt0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
INITIALIZE_PERMVAR(pt0, (CELL)pt0); \
GONext();
@@ -36,18 +36,18 @@
#define PUT_X_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = XREG((*_PREG)->u.xx.xl); \
XREG((*_PREG)->u.xx.xr) = d0; \
d0 = XREG((*_PREG)->y_u.xx.xl); \
XREG((*_PREG)->y_u.xx.xr) = d0; \
(*_PREG) = NEXTOP((*_PREG), xx); \
GONext();
#define PUT_XX_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
d0 = XREG((*_PREG)->u.xxxx.xl1); \
d1 = XREG((*_PREG)->u.xxxx.xl2); \
XREG((*_PREG)->u.xxxx.xr1) = d0; \
XREG((*_PREG)->u.xxxx.xr2) = d1; \
d0 = XREG((*_PREG)->y_u.xxxx.xl1); \
d1 = XREG((*_PREG)->y_u.xxxx.xl2); \
XREG((*_PREG)->y_u.xxxx.xr1) = d0; \
XREG((*_PREG)->y_u.xxxx.xr2) = d1; \
(*_PREG) = NEXTOP((*_PREG), xxxx); \
GONext();
@@ -55,19 +55,19 @@
#define PUT_Y_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.yx.y]; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
if (d0 == 0) { \
XREG((*_PREG)->u.yx.x) = (CELL)(YREG+(*_PREG)->u.yx.y); \
XREG((*_PREG)->y_u.yx.x) = (CELL)(YREG+(*_PREG)->y_u.yx.y); \
} else \
XREG((*_PREG)->u.yx.x) = d0; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext();
#else /* YAPOR_SBA */
#define PUT_Y_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.yx.y]; \
XREG((*_PREG)->u.yx.x) = d0; \
d0 = YREG[(*_PREG)->y_u.yx.y]; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext();
#endif /* YAPOR_SBA */
@@ -77,17 +77,17 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
ALWAYS_START_PREFETCH(yyxx); \
d0 = YREG[(*_PREG)->u.yyxx.y1]; \
d0 = YREG[(*_PREG)->y_u.yyxx.y1]; \
if (d0 == 0) \
XREG((*_PREG)->u.yyxx.x1) = (CELL)(YREG+(*_PREG)->u.yyxx.y1); \
XREG((*_PREG)->y_u.yyxx.x1) = (CELL)(YREG+(*_PREG)->y_u.yyxx.y1); \
else \
XREG((*_PREG)->u.yyxx.x1) = d0; \
XREG((*_PREG)->y_u.yyxx.x1) = d0; \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
d1 = YREG[PREVOP((*_PREG),yyxx)->u.yyxx.y2]; \
d1 = YREG[PREVOP((*_PREG),yyxx)->y_u.yyxx.y2]; \
if (d1 == 0) \
XREG(PREVOP((*_PREG)->u.yyxx,yyxx).x2) = (CELL)(YREG+(*_PREG)->u.yyxx.y2); \
XREG(PREVOP((*_PREG)->y_u.yyxx,yyxx).x2) = (CELL)(YREG+(*_PREG)->y_u.yyxx.y2); \
else \
XREG(PREVOP((*_PREG),yyxx)->u.yyxx.x2) = d1; \
XREG(PREVOP((*_PREG),yyxx)->y_u.yyxx.x2) = d1; \
ALWAYS_GONext(); \
ALWAYS_END_PREFETCH();
#else /* YAPOR_SBA */
@@ -95,11 +95,11 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
ALWAYS_START_PREFETCH(yyxx); \
d0 = YREG[(*_PREG)->u.yyxx.y1]; \
XREG((*_PREG)->u.yyxx.x1) = d0; \
d0 = YREG[(*_PREG)->y_u.yyxx.y1]; \
XREG((*_PREG)->y_u.yyxx.x1) = d0; \
(*_PREG) = NEXTOP((*_PREG), yyxx); \
d1 = YREG[PREVOP((*_PREG),yyxx)->u.yyxx.y2]; \
XREG(PREVOP((*_PREG),yyxx)->u.yyxx.x2) = d1; \
d1 = YREG[PREVOP((*_PREG),yyxx)->y_u.yyxx.y2]; \
XREG(PREVOP((*_PREG),yyxx)->y_u.yyxx.x2) = d1; \
ALWAYS_GONext(); \
ALWAYS_END_PREFETCH();
#endif /* YAPOR_SBA */
@@ -108,25 +108,25 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.yx.y; \
pt0 = YREG+(*_PREG)->y_u.yx.y; \
d0 = *pt0;
#define PUT_UNSAFE_PUNSAFE_NONVAR \
XREG((*_PREG)->u.yx.x) = d0; \
XREG((*_PREG)->y_u.yx.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext();
#define PUT_UNSAFE_PUNSAFE_UNK \
if (pt0 <= HR || pt0 >= YREG) { \
XREG((*_PREG)->u.yx.x) = Unsigned(pt0); \
XREG((*_PREG)->y_u.yx.x) = Unsigned(pt0); \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
} \
else { \
Bind_Local(pt0, Unsigned(HR)); \
XREG((*_PREG)->u.yx.x) = (CELL) HR; \
XREG((*_PREG)->y_u.yx.x) = (CELL) HR; \
RESET_VARIABLE(HR); \
H++; \
HR++; \
(*_PREG) = NEXTOP((*_PREG), yx); \
GONext(); \
}
@@ -134,40 +134,40 @@
#define PUT_ATOM_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.xc.c; \
XREG((*_PREG)->u.xc.x) = d0; \
d0 = (*_PREG)->y_u.xc.c; \
XREG((*_PREG)->y_u.xc.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xc); \
GONext();
#define PUT_DBTERM_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.xD.D; \
XREG((*_PREG)->u.xD.x) = d0; \
d0 = (*_PREG)->y_u.xD.D; \
XREG((*_PREG)->y_u.xD.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xD); \
GONext();
#define PUT_BIGINT_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.xN.b; \
XREG((*_PREG)->u.xN.x) = d0; \
d0 = (*_PREG)->y_u.xN.b; \
XREG((*_PREG)->y_u.xN.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xN); \
GONext();
#define PUT_FLOAT_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.xd.d); \
XREG((*_PREG)->u.xd.x) = d0; \
d0 = AbsAppl((*_PREG)->y_u.xd.d); \
XREG((*_PREG)->y_u.xd.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xd); \
GONext();
#define PUT_LONGINT_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.xi.i); \
XREG((*_PREG)->u.xi.x) = d0; \
d0 = AbsAppl((*_PREG)->y_u.xi.i); \
XREG((*_PREG)->y_u.xi.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), xi); \
GONext();
@@ -179,7 +179,7 @@
S_SREG = HR; \
HR += 2; \
d0 = AbsPair(S_SREG); \
XREG((*_PREG)->u.x.x) = d0; \
XREG((*_PREG)->y_u.x.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), x); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -189,11 +189,11 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = AbsAppl(HR); \
XREG((*_PREG)->u.xfa.x) = d0; \
d0 = (CELL) ((*_PREG)->u.xfa.f); \
*H++ = d0; \
XREG((*_PREG)->y_u.xfa.x) = d0; \
d0 = (CELL) ((*_PREG)->y_u.xfa.f); \
*HR++ = d0; \
(*_SREG) = HR; \
HR += (*_PREG)->u.xfa.a; \
HR += (*_PREG)->y_u.xfa.a; \
(*_PREG) = NEXTOP((*_PREG), xfa); \
GONext();

View File

@@ -14,7 +14,7 @@
#define UNIFY_X_VAR_END \
WRITEBACK_S(S_SREG+1); \
ALWAYS_START_PREFETCH(ox); \
XREG((*_PREG)->u.ox.x) = d0; \
XREG((*_PREG)->y_u.ox.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), ox); \
ALWAYS_GONext(); \
ALWAYS_END_PREFETCH(); \
@@ -24,7 +24,7 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
RESET_VARIABLE(S_SREG); \
*pt0 = (CELL) S_SREG; \
@@ -37,7 +37,7 @@
register CELL *pt0; \
ALWAYS_START_PREFETCH(ox); \
d0 = (*_SREG)[0]; \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox);
#ifdef YAPOR_SBA
@@ -57,7 +57,7 @@
ALWAYS_START_PREFETCH(ox); \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
RESET_VARIABLE(S_SREG); \
*pt0 = (CELL)S_SREG; \
@@ -71,7 +71,7 @@
CACHE_S(); \
ALWAYS_START_PREFETCH(oxx); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1];
@@ -87,7 +87,7 @@
#define UNIFY_X_VAR2_END \
WRITEBACK_S(S_SREG+2); \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
*pt0 = d1; \
ALWAYS_GONext(); \
@@ -98,9 +98,9 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
RESET_VARIABLE(S_SREG); \
XREG((*_PREG)->u.oxx.xl) = (CELL) S_SREG; \
XREG((*_PREG)->y_u.oxx.xl) = (CELL) S_SREG; \
S_SREG++; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
RESET_VARIABLE(S_SREG); \
@@ -115,13 +115,13 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1]; \
if (d0 == 0) \
XREG((*_PREG)->u.oxx.xl) = (CELL)S_SREG; \
XREG((*_PREG)->y_u.oxx.xl) = (CELL)S_SREG; \
else \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
if (d1 == 0) \
*pt0 = (CELL)(S_SREG+1); \
@@ -135,11 +135,11 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1]; \
{ \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
} \
(*_PREG) = NEXTOP((*_PREG), oxx); \
{ \
@@ -153,8 +153,8 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
XREG((*_PREG)->u.oxx.xl) = (CELL) S_SREG; \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
XREG((*_PREG)->y_u.oxx.xl) = (CELL) S_SREG; \
RESET_VARIABLE(S_SREG); \
S_SREG++; \
*pt0 = (CELL) S_SREG; \
@@ -168,7 +168,7 @@
register CELL d0; \
d0 = *(*_SREG)++; \
if (d0 == 0) { \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL)((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL)((*_SREG)-1)); \
} else \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -176,7 +176,7 @@
#define UNIFY_Y_VAR_INSTINIT \
register CELL d0; \
d0 = *(*_SREG)++; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,d0); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#endif /* YAPOR_SBA */
@@ -184,7 +184,7 @@
#define UNIFY_Y_VAR_WRITE_INSTINIT \
CACHE_S(); \
READ_IN_S(); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL) S_SREG); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL) S_SREG); \
(*_PREG) = NEXTOP((*_PREG), oy); \
RESET_VARIABLE(S_SREG); \
WRITEBACK_S(S_SREG+1); \
@@ -196,7 +196,7 @@
register CELL d0; \
d0 = (*_SREG)[0]; \
if (d0 == 0) { \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL)(*_SREG)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL)(*_SREG)); \
} else \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -204,7 +204,7 @@
#define UNIFY_L_Y_VAR_INSTINIT \
register CELL d0; \
d0 = (*_SREG)[0]; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,d0); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#endif /* YAPOR_SBA */
@@ -212,7 +212,7 @@
#define UNIFY_L_Y_VAR_WRITE_INSTINIT \
CACHE_S(); \
READ_IN_S(); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL) S_SREG); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL) S_SREG); \
(*_PREG) = NEXTOP((*_PREG), oy); \
RESET_VARIABLE(S_SREG); \
ENDCACHE_S(); \
@@ -225,7 +225,7 @@
d0 = *pt0;
#define UNIFY_X_VAL_UVALX_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_VAL_UVALX_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_X_VAL_UVALX_NONVAR_NONVAR; \
@@ -240,7 +240,7 @@
GONext();
#define UNIFY_X_VAL_UVALX_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_VAL_UVALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -255,7 +255,7 @@
GONext();
#define UNIFY_X_VAL_WRITE_INSTINIT \
*(*_SREG)++ = XREG((*_PREG)->u.ox.x); \
*(*_SREG)++ = XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONextW();
@@ -266,7 +266,7 @@
d0 = *pt0;
#define UNIFY_L_X_VAL_ULVALX_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_VAL_ULVALX_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_L_X_VAL_ULVALX_NONVAR_NONVAR; \
@@ -279,7 +279,7 @@
GONext();
#define UNIFY_L_X_VAL_ULVALX_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_VAL_ULVALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -292,7 +292,7 @@
GONext();
#define UNIFY_L_X_VAL_WRITE_INSTINIT \
(*_SREG)[0] = XREG((*_PREG)->u.ox.x); \
(*_SREG)[0] = XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONext();
@@ -303,7 +303,7 @@
d0 = *pt0;
#define UNIFY_Y_VAL_UVALY_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_VAL_UVALY_NONVAR_NONVAR \
@@ -319,7 +319,7 @@
GONext();
#define UNIFY_Y_VAL_UVALY_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_VAL_UVALY_VAR_NONVAR \
@@ -337,9 +337,9 @@
#ifdef YAPOR_SBA
#define UNIFY_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
if (d0 == 0) \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->u.oy.y); \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->y_u.oy.y); \
else \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
@@ -347,7 +347,7 @@
#else /* YAPOR_SBA */
#define UNIFY_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();
@@ -360,7 +360,7 @@
d0 = *pt0;
#define UNIFY_L_Y_VAL_ULVALY_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_VAL_ULVALY_NONVAR_NONVAR \
@@ -374,7 +374,7 @@
GONext();
#define UNIFY_L_Y_VAL_ULVALY_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_VAL_ULVALY_VAR_NONVAR \
@@ -390,9 +390,9 @@
#ifdef YAPOR_SBA
#define UNIFY_L_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
if (d0 == 0) \
(*_SREG)[0] = (CELL)(YREG+(*_PREG)->u.oy.y); \
(*_SREG)[0] = (CELL)(YREG+(*_PREG)->y_u.oy.y); \
else \
(*_SREG)[0] = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
@@ -400,7 +400,7 @@
#else /* YAPOR_SBA */
#define UNIFY_L_Y_VAL_WRITE_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
(*_SREG)[0] = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -413,7 +413,7 @@
d0 = *pt0;
#define UNIFY_X_LOC_UVALX_LOC_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_LOC_UVALX_LOC_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_X_LOC_UVALX_LOC_NONVAR_NONVAR; \
@@ -428,7 +428,7 @@
GONext();
#define UNIFY_X_LOC_UVALX_LOC_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_LOC_UVALX_LOC_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -445,7 +445,7 @@
#define UNIFY_X_LOC_WRITE_INSTINIT \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.ox.x);
d0 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_LOC_WRITE_UNIFY_X_LOC_NONVAR \
*(*_SREG)++ = d0; \
@@ -475,7 +475,7 @@
d0 = *pt0;
#define UNIFY_L_X_LOC_ULVALX_LOC_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_LOC_ULVALX_LOC_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_L_X_LOC_ULVALX_LOC_NONVAR_NONVAR; \
@@ -488,7 +488,7 @@
GONext();
#define UNIFY_L_X_LOC_ULVALX_LOC_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_LOC_ULVALX_LOC_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -503,7 +503,7 @@
#define UNIFY_L_X_LOC_WRITE_INSTINIT \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.ox.x);
d0 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_LOC_WRITE_ULNIFY_X_LOC_NONVAR \
(*_SREG)[0] = d0; \
@@ -529,7 +529,7 @@
d0 = *pt0;
#define UNIFY_Y_LOC_UVALY_LOC_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_LOC_UVALY_LOC_NONVAR_NONVAR \
@@ -545,7 +545,7 @@
GONext();
#define UNIFY_Y_LOC_UVALY_LOC_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_LOC_UVALY_LOC_VAR_NONVAR \
@@ -563,7 +563,7 @@
#define UNIFY_Y_LOC_WRITE_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.oy.y; \
pt0 = YREG+(*_PREG)->y_u.oy.y; \
d0 = *pt0;
#define UNIFY_Y_LOC_WRITE_UNIFY_Y_LOC_NONVAR \
@@ -594,7 +594,7 @@
d0 = *pt0;
#define UNIFY_L_Y_LOC_ULVALY_LOC_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_LOC_ULVALY_LOC_NONVAR_NONVAR \
@@ -608,7 +608,7 @@
GONext();
#define UNIFY_L_Y_LOC_ULVALY_LOC_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_LOC_ULVALY_LOC_VAR_NONVAR \
@@ -624,7 +624,7 @@
#define UNIFY_L_Y_LOC_WRITE_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.oy.y; \
pt0 = YREG+(*_PREG)->y_u.oy.y; \
d0 = *pt0;
#define UNIFY_L_Y_LOC_WRITE_ULUNIFY_Y_LOC_NONVAR \
@@ -673,14 +673,14 @@
GONext();
#define UNIFY_N_VOIDS_INSTINIT \
(*_SREG) += (*_PREG)->u.os.s; \
(*_SREG) += (*_PREG)->y_u.os.s; \
(*_PREG) = NEXTOP((*_PREG), os); \
GONext();
#define UNIFY_N_VOIDS_WRITE_INSTINIT \
register CELL d0; \
CACHE_S(); \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
READ_IN_S(); \
(*_PREG) = NEXTOP((*_PREG), os); \
for (; d0 > 0; d0--) { \
@@ -697,7 +697,7 @@
#define UNIFY_L_N_VOIDS_WRITE_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
(*_PREG) = NEXTOP((*_PREG), os); \
CACHE_S(); \
READ_IN_S(); \
@@ -718,7 +718,7 @@
#define UNIFY_ATOM_UATOM_NONVAR \
BLOCK = (CELL)UNIFY_ATOM_UATOM_NONVAR; \
FAILED = 0; \
if (d0 != (*_PREG)->u.oc.c) { \
if (d0 != (*_PREG)->y_u.oc.c) { \
YAAM_FAIL; \
} \
else { \
@@ -727,13 +727,13 @@
}
#define UNIFY_ATOM_UATOM_UNK \
d0 = (*_PREG)->u.oc.c; \
d0 = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
Bind_Global(pt0, d0); \
GONext();
#define UNIFY_ATOM_WRITE_INSTINIT \
* (*_SREG)++ = (*_PREG)->u.oc.c; \
* (*_SREG)++ = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONextW();
@@ -747,7 +747,7 @@
#define UNIFY_L_ATOM_ULATOM_NONVAR \
BLOCK = (CELL)UNIFY_L_ATOM_ULATOM_NONVAR; \
FAILED = 0; \
if (d0 != (*_PREG)->u.oc.c) { \
if (d0 != (*_PREG)->y_u.oc.c) { \
YAAM_FAIL; \
} \
else { \
@@ -756,21 +756,21 @@
}
#define UNIFY_L_ATOM_ULATOM_UNK \
d0 = (*_PREG)->u.oc.c; \
d0 = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
Bind_Global(pt0, d0); \
GONext();
#define UNIFY_L_ATOM_WRITE_INSTINIT \
(*_SREG)[0] = (*_PREG)->u.oc.c; \
(*_SREG)[0] = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONext();
#define UNIFY_N_ATOMS_INSTINIT \
register Int i = (*_PREG)->u.osc.s; \
register Int i = (*_PREG)->y_u.osc.s; \
register CELL d0, d1; \
register CELL *pt0; \
d1 = (*_PREG)->u.osc.c; \
d1 = (*_PREG)->y_u.osc.c; \
for (; i > 0; i--) { \
pt0 = (*_SREG)++; \
d0 = *pt0; \
@@ -802,8 +802,8 @@
#define UNIFY_N_ATOMS_WRITE_INSTINIT \
register CELL d0, d1; \
d0 = (*_PREG)->u.osc.s; \
d1 = (*_PREG)->u.osc.c; \
d0 = (*_PREG)->y_u.osc.s; \
d1 = (*_PREG)->y_u.osc.c; \
CACHE_S(); \
READ_IN_S(); \
(*_PREG) = NEXTOP((*_PREG), osc); \
@@ -825,20 +825,20 @@
d0 = *pt0;
#define UNIFY_FLOAT_UFLOAT_NONVAR_D0ISFUNCTOR \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od);
#define UNIFY_FLOAT_UFLOAT_NONVAR_END \
GONext();
#define UNIFY_FLOAT_UFLOAT_UNK \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(pt0, d1); \
GONext();
#define UNIFY_FLOAT_WRITE_INSTINIT \
* (*_SREG)++ = AbsAppl((*_PREG)->u.od.d); \
* (*_SREG)++ = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
GONextW();
@@ -854,21 +854,21 @@
d0 = *pt0;
#define UNIFY_L_FLOAT_D0ISFUNC \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od);
#define UNIFY_L_FLOAT_EQUALS \
GONext();
#define UNIFY_L_FLOAT_ULFLOAT_UNK \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(S_SREG, d1); \
GONext(); \
ENDCACHE_S();
#define UNIFY_L_FLOAT_WRITE_INSTINIT \
(*_SREG)[0] = AbsAppl((*_PREG)->u.od.d); \
(*_SREG)[0] = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
GONext();
@@ -883,20 +883,20 @@
d0 = *pt0;
#define UNIFY_LONGINT_D0ISFUNC \
pt1 = (*_PREG)->u.oi.i; \
pt1 = (*_PREG)->y_u.oi.i; \
(*_PREG) = NEXTOP((*_PREG), oi);
#define UNIFY_LONGINT_EQUALS \
GONext();
#define UNIFY_LONGINT_ULONGINT_UNK \
d1 = AbsAppl((*_PREG)->u.oi.i); \
d1 = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
Bind_Global(pt0, d1); \
GONext();
#define UNIFY_LONGINT_WRITE_INSTINIT \
* (*_SREG)++ = AbsAppl((*_PREG)->u.oi.i); \
* (*_SREG)++ = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
GONextW();
@@ -912,20 +912,20 @@
d0 = *pt0;
#define UNIFY_L_LONGINT_D0ISFUNC \
pt1 = (*_PREG)->u.oi.i; \
pt1 = (*_PREG)->y_u.oi.i; \
(*_PREG) = NEXTOP((*_PREG), oi);
#define UNIFY_L_LONGINT_EQUALS \
GONext();
#define UNIFY_L_LONGINT_ULLONGINT_UNK \
d1 = AbsAppl((*_PREG)->u.oi.i); \
d1 = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
Bind_Global(S_SREG, d1); \
GONext();
#define UNIFY_L_LONGINT_WRITE_INSTINIT \
(*_SREG)[0] = AbsAppl((*_PREG)->u.oi.i); \
(*_SREG)[0] = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
GONext();
@@ -945,7 +945,7 @@
GONext();
#define UNIFY_BIGINT_UBIGINT_UNK \
d1 = (*_PREG)->u.oN.b; \
d1 = (*_PREG)->y_u.oN.b; \
(*_PREG) = NEXTOP((*_PREG), oN); \
Bind_Global(pt0, d1); \
GONext();
@@ -968,7 +968,7 @@
GONext();
#define UNIFY_L_BIGINT_ULBIGINT_UNK \
d1 = (*_PREG)->u.oN.b; \
d1 = (*_PREG)->y_u.oN.b; \
(*_PREG) = NEXTOP((*_PREG), oN); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -983,12 +983,12 @@
#define UNIFY_DBTERM_UDBTERM_NONVAR \
BLOCK = (CELL)UNIFY_DBTERM_UDBTERM_NONVAR; \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
YAAM_UNIFYBOUND;
#define UNIFY_DBTERM_UDBTERM_UNK \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
Bind_Global(pt0, d1); \
GONext();
@@ -1002,12 +1002,12 @@
#define UNIFY_L_DBTERM_ULDBTERM_NONVAR \
BLOCK = (CELL)UNIFY_L_DBTERM_ULDBTERM_NONVAR; \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
YAAM_UNIFYBOUND;
#define UNIFY_L_DBTERM_ULDBTERM_UNK \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -1129,7 +1129,7 @@
CACHE_S(); \
READ_IN_S(); \
S_SREG = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
if (*S_SREG != d0) { \
YAAM_FAIL; \
} \
@@ -1146,9 +1146,9 @@
d1 = AbsAppl(HR); \
Bind_Global(pt0, d1); \
pt0 = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.ofa.a; \
HR = pt0 + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
(*_SREG) = pt0; \
GONextW(); \
@@ -1163,9 +1163,9 @@
d0 = AbsAppl(HR); \
S_SREG[0] = d0; \
S_SREG = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*S_SREG++ = d0; \
HR = S_SREG + (*_PREG)->u.ofa.a; \
HR = S_SREG + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -1186,7 +1186,7 @@
} \
else { \
(*_SREG) = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
if (*(*_SREG)++ != d0) { \
YAAM_FAIL; \
} \
@@ -1201,9 +1201,9 @@
d1 = AbsAppl(HR); \
Bind_Global(pt0, d1); \
pt0 = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.ofa.a; \
HR = pt0 + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
(*_SREG) = pt0; \
GONextW(); \
@@ -1216,51 +1216,51 @@
READ_IN_S(); \
S_SREG[0] = d0; \
S_SREG = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*S_SREG++ = d0; \
HR = S_SREG + (*_PREG)->u.ofa.a; \
HR = S_SREG + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
GONextW();
#define SAVE_PAIR_X_INSTINIT \
XREG((*_PREG)->u.ox.x) = AbsPair((*_SREG)); \
XREG((*_PREG)->y_u.ox.x) = AbsPair((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONext();
#define SAVE_PAIR_X_WRITE_INSTINIT \
XREG((*_PREG)->u.ox.x) = AbsPair((*_SREG)); \
XREG((*_PREG)->y_u.ox.x) = AbsPair((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONextW();
#define SAVE_PAIR_Y_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsPair((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsPair((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#define SAVE_PAIR_Y_WRITE_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsPair((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsPair((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();
#define SAVE_APPL_X_INSTINIT \
XREG((*_PREG)->u.ox.x) = AbsAppl((*_SREG) - 1); \
XREG((*_PREG)->y_u.ox.x) = AbsAppl((*_SREG) - 1); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONext();
#define SAVE_APPL_X_WRITE_INSTINIT \
XREG((*_PREG)->u.ox.x) = AbsAppl((*_SREG) - 1); \
XREG((*_PREG)->y_u.ox.x) = AbsAppl((*_SREG) - 1); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONextW();
#define SAVE_APPL_Y_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsAppl((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsAppl((*_SREG)-1)); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#define SAVE_APPL_Y_WRITE_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsAppl((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsAppl((*_SREG)-1)); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();

View File

@@ -15,7 +15,7 @@
#define UNIFY_X_VAR_END \
WRITEBACK_S(S_SREG+1); \
ALWAYS_START_PREFETCH(ox); \
XREG((*_PREG)->u.ox.x) = d0; \
XREG((*_PREG)->y_u.ox.x) = d0; \
(*_PREG) = NEXTOP((*_PREG), ox); \
ALWAYS_GONext(); \
ALWAYS_END_PREFETCH(); \
@@ -26,7 +26,7 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
RESET_VARIABLE(S_SREG); \
*pt0 = (CELL) S_SREG; \
@@ -40,7 +40,7 @@
register CELL *pt0; \
ALWAYS_START_PREFETCH(ox); \
d0 = (*_SREG)[0]; \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox);
#ifdef YAPOR_SBA
@@ -61,7 +61,7 @@
ALWAYS_START_PREFETCH(ox); \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.ox.x); \
pt0 = &XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
RESET_VARIABLE(S_SREG); \
*pt0 = (CELL)S_SREG; \
@@ -76,7 +76,7 @@
CACHE_S(); \
ALWAYS_START_PREFETCH(oxx); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1];
@@ -92,7 +92,7 @@
#define UNIFY_X_VAR2_END \
WRITEBACK_S(S_SREG+2); \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
*pt0 = d1; \
ALWAYS_GONext(); \
@@ -104,9 +104,9 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
RESET_VARIABLE(S_SREG); \
XREG((*_PREG)->u.oxx.xl) = (CELL) S_SREG; \
XREG((*_PREG)->y_u.oxx.xl) = (CELL) S_SREG; \
S_SREG++; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
RESET_VARIABLE(S_SREG); \
@@ -122,13 +122,13 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1]; \
if (d0 == 0) \
XREG((*_PREG)->u.oxx.xl) = (CELL)S_SREG; \
XREG((*_PREG)->y_u.oxx.xl) = (CELL)S_SREG; \
else \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
(*_PREG) = NEXTOP((*_PREG), oxx); \
if (d1 == 0) \
*pt0 = (CELL)(S_SREG+1); \
@@ -143,11 +143,11 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
d0 = S_SREG[0]; \
d1 = S_SREG[1]; \
{ \
XREG((*_PREG)->u.oxx.xl) = d0; \
XREG((*_PREG)->y_u.oxx.xl) = d0; \
} \
(*_PREG) = NEXTOP((*_PREG), oxx); \
{ \
@@ -162,8 +162,8 @@
register CELL *pt0; \
CACHE_S(); \
READ_IN_S(); \
pt0 = &XREG((*_PREG)->u.oxx.xr); \
XREG((*_PREG)->u.oxx.xl) = (CELL) S_SREG; \
pt0 = &XREG((*_PREG)->y_u.oxx.xr); \
XREG((*_PREG)->y_u.oxx.xl) = (CELL) S_SREG; \
RESET_VARIABLE(S_SREG); \
S_SREG++; \
*pt0 = (CELL) S_SREG; \
@@ -178,7 +178,7 @@
register CELL d0; \
d0 = *(*_SREG)++; \
if (d0 == 0) { \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL)((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL)((*_SREG)-1)); \
} else \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -187,7 +187,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = *(*_SREG)++; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,d0); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#endif /* YAPOR_SBA */
@@ -196,7 +196,7 @@
print_instruction((*_PREG), ON_NATIVE); \
CACHE_S(); \
READ_IN_S(); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL) S_SREG); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL) S_SREG); \
(*_PREG) = NEXTOP((*_PREG), oy); \
RESET_VARIABLE(S_SREG); \
WRITEBACK_S(S_SREG+1); \
@@ -209,7 +209,7 @@
register CELL d0; \
d0 = (*_SREG)[0]; \
if (d0 == 0) { \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL)(*_SREG)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL)(*_SREG)); \
} else \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -218,7 +218,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_SREG)[0]; \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,d0); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,d0); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#endif /* YAPOR_SBA */
@@ -227,7 +227,7 @@
print_instruction((*_PREG), ON_NATIVE); \
CACHE_S(); \
READ_IN_S(); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,(CELL) S_SREG); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,(CELL) S_SREG); \
(*_PREG) = NEXTOP((*_PREG), oy); \
RESET_VARIABLE(S_SREG); \
ENDCACHE_S(); \
@@ -241,7 +241,7 @@
d0 = *pt0;
#define UNIFY_X_VAL_UVALX_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_VAL_UVALX_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_X_VAL_UVALX_NONVAR_NONVAR; \
@@ -256,7 +256,7 @@
GONext();
#define UNIFY_X_VAL_UVALX_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_VAL_UVALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -272,7 +272,7 @@
#define UNIFY_X_VAL_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
*(*_SREG)++ = XREG((*_PREG)->u.ox.x); \
*(*_SREG)++ = XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONextW();
@@ -284,7 +284,7 @@
d0 = *pt0;
#define UNIFY_L_X_VAL_ULVALX_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_VAL_ULVALX_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_L_X_VAL_ULVALX_NONVAR_NONVAR; \
@@ -297,7 +297,7 @@
GONext();
#define UNIFY_L_X_VAL_ULVALX_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_VAL_ULVALX_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -311,7 +311,7 @@
#define UNIFY_L_X_VAL_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
(*_SREG)[0] = XREG((*_PREG)->u.ox.x); \
(*_SREG)[0] = XREG((*_PREG)->y_u.ox.x); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONext();
@@ -323,7 +323,7 @@
d0 = *pt0;
#define UNIFY_Y_VAL_UVALY_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_VAL_UVALY_NONVAR_NONVAR \
@@ -339,7 +339,7 @@
GONext();
#define UNIFY_Y_VAL_UVALY_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_VAL_UVALY_VAR_NONVAR \
@@ -358,9 +358,9 @@
#define UNIFY_Y_VAL_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
if (d0 == 0) \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->u.oy.y); \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->y_u.oy.y); \
else \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
@@ -369,7 +369,7 @@
#define UNIFY_Y_VAL_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();
@@ -383,7 +383,7 @@
d0 = *pt0;
#define UNIFY_L_Y_VAL_ULVALY_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_VAL_ULVALY_NONVAR_NONVAR \
@@ -397,7 +397,7 @@
GONext();
#define UNIFY_L_Y_VAL_ULVALY_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_VAL_ULVALY_VAR_NONVAR \
@@ -414,9 +414,9 @@
#define UNIFY_L_Y_VAL_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
if (d0 == 0) \
(*_SREG)[0] = (CELL)(YREG+(*_PREG)->u.oy.y); \
(*_SREG)[0] = (CELL)(YREG+(*_PREG)->y_u.oy.y); \
else \
(*_SREG)[0] = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
@@ -425,7 +425,7 @@
#define UNIFY_L_Y_VAL_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.oy.y]; \
d0 = YREG[(*_PREG)->y_u.oy.y]; \
(*_SREG)[0] = d0; \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
@@ -439,7 +439,7 @@
d0 = *pt0;
#define UNIFY_X_LOC_UVALX_LOC_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_LOC_UVALX_LOC_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_X_LOC_UVALX_LOC_NONVAR_NONVAR; \
@@ -454,7 +454,7 @@
GONext();
#define UNIFY_X_LOC_UVALX_LOC_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_LOC_UVALX_LOC_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -472,7 +472,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.ox.x);
d0 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_X_LOC_WRITE_UNIFY_X_LOC_NONVAR \
*(*_SREG)++ = d0; \
@@ -503,7 +503,7 @@
d0 = *pt0;
#define UNIFY_L_X_LOC_ULVALX_LOC_NONVAR \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_LOC_ULVALX_LOC_NONVAR_NONVAR \
BLOCK = (CELL)UNIFY_L_X_LOC_ULVALX_LOC_NONVAR_NONVAR; \
@@ -516,7 +516,7 @@
GONext();
#define UNIFY_L_X_LOC_ULVALX_LOC_UNK \
d1 = XREG((*_PREG)->u.ox.x);
d1 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_LOC_ULVALX_LOC_VAR_NONVAR \
(*_PREG) = NEXTOP((*_PREG), ox); \
@@ -532,7 +532,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
register CELL *pt0, *pt1; \
d0 = XREG((*_PREG)->u.ox.x);
d0 = XREG((*_PREG)->y_u.ox.x);
#define UNIFY_L_X_LOC_WRITE_ULNIFY_X_LOC_NONVAR \
(*_SREG)[0] = d0; \
@@ -559,7 +559,7 @@
d0 = *pt0;
#define UNIFY_Y_LOC_UVALY_LOC_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_LOC_UVALY_LOC_NONVAR_NONVAR \
@@ -575,7 +575,7 @@
GONext();
#define UNIFY_Y_LOC_UVALY_LOC_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_Y_LOC_UVALY_LOC_VAR_NONVAR \
@@ -594,7 +594,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.oy.y; \
pt0 = YREG+(*_PREG)->y_u.oy.y; \
d0 = *pt0;
#define UNIFY_Y_LOC_WRITE_UNIFY_Y_LOC_NONVAR \
@@ -626,7 +626,7 @@
d0 = *pt0;
#define UNIFY_L_Y_LOC_ULVALY_LOC_NONVAR \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_LOC_ULVALY_LOC_NONVAR_NONVAR \
@@ -640,7 +640,7 @@
GONext();
#define UNIFY_L_Y_LOC_ULVALY_LOC_UNK \
pt1 = YREG+(*_PREG)->u.oy.y; \
pt1 = YREG+(*_PREG)->y_u.oy.y; \
d1 = *pt1;
#define UNIFY_L_Y_LOC_ULVALY_LOC_VAR_NONVAR \
@@ -657,7 +657,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.oy.y; \
pt0 = YREG+(*_PREG)->y_u.oy.y; \
d0 = *pt0;
#define UNIFY_L_Y_LOC_WRITE_ULUNIFY_Y_LOC_NONVAR \
@@ -711,7 +711,7 @@
#define UNIFY_N_VOIDS_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
(*_SREG) += (*_PREG)->u.os.s; \
(*_SREG) += (*_PREG)->y_u.os.s; \
(*_PREG) = NEXTOP((*_PREG), os); \
GONext();
@@ -719,7 +719,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
CACHE_S(); \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
READ_IN_S(); \
(*_PREG) = NEXTOP((*_PREG), os); \
for (; d0 > 0; d0--) { \
@@ -738,7 +738,7 @@
#define UNIFY_L_N_VOIDS_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.os.s; \
d0 = (*_PREG)->y_u.os.s; \
(*_PREG) = NEXTOP((*_PREG), os); \
CACHE_S(); \
READ_IN_S(); \
@@ -760,7 +760,7 @@
#define UNIFY_ATOM_UATOM_NONVAR \
BLOCK = (CELL)UNIFY_ATOM_UATOM_NONVAR; \
FAILED = 0; \
if (d0 != (*_PREG)->u.oc.c) { \
if (d0 != (*_PREG)->y_u.oc.c) { \
YAAM_FAIL; \
} \
else { \
@@ -769,14 +769,14 @@
}
#define UNIFY_ATOM_UATOM_UNK \
d0 = (*_PREG)->u.oc.c; \
d0 = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
Bind_Global(pt0, d0); \
GONext();
#define UNIFY_ATOM_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
* (*_SREG)++ = (*_PREG)->u.oc.c; \
* (*_SREG)++ = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONextW();
@@ -791,7 +791,7 @@
#define UNIFY_L_ATOM_ULATOM_NONVAR \
BLOCK = (CELL)UNIFY_L_ATOM_ULATOM_NONVAR; \
FAILED = 0; \
if (d0 != (*_PREG)->u.oc.c) { \
if (d0 != (*_PREG)->y_u.oc.c) { \
YAAM_FAIL; \
} \
else { \
@@ -800,23 +800,23 @@
}
#define UNIFY_L_ATOM_ULATOM_UNK \
d0 = (*_PREG)->u.oc.c; \
d0 = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
Bind_Global(pt0, d0); \
GONext();
#define UNIFY_L_ATOM_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
(*_SREG)[0] = (*_PREG)->u.oc.c; \
(*_SREG)[0] = (*_PREG)->y_u.oc.c; \
(*_PREG) = NEXTOP((*_PREG), oc); \
GONext();
#define UNIFY_N_ATOMS_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register Int i = (*_PREG)->u.osc.s; \
register Int i = (*_PREG)->y_u.osc.s; \
register CELL d0, d1; \
register CELL *pt0; \
d1 = (*_PREG)->u.osc.c; \
d1 = (*_PREG)->y_u.osc.c; \
for (; i > 0; i--) { \
pt0 = (*_SREG)++; \
d0 = *pt0; \
@@ -849,8 +849,8 @@
#define UNIFY_N_ATOMS_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
d0 = (*_PREG)->u.osc.s; \
d1 = (*_PREG)->u.osc.c; \
d0 = (*_PREG)->y_u.osc.s; \
d1 = (*_PREG)->y_u.osc.c; \
CACHE_S(); \
READ_IN_S(); \
(*_PREG) = NEXTOP((*_PREG), osc); \
@@ -873,21 +873,21 @@
d0 = *pt0;
#define UNIFY_FLOAT_UFLOAT_NONVAR_D0ISFUNCTOR \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od);
#define UNIFY_FLOAT_UFLOAT_NONVAR_END \
GONext();
#define UNIFY_FLOAT_UFLOAT_UNK \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(pt0, d1); \
GONext();
#define UNIFY_FLOAT_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
* (*_SREG)++ = AbsAppl((*_PREG)->u.od.d); \
* (*_SREG)++ = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
GONextW();
@@ -904,14 +904,14 @@
d0 = *pt0;
#define UNIFY_L_FLOAT_D0ISFUNC \
pt1 = (*_PREG)->u.od.d; \
pt1 = (*_PREG)->y_u.od.d; \
(*_PREG) = NEXTOP((*_PREG), od);
#define UNIFY_L_FLOAT_EQUALS \
GONext();
#define UNIFY_L_FLOAT_ULFLOAT_UNK \
d1 = AbsAppl((*_PREG)->u.od.d); \
d1 = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -919,7 +919,7 @@
#define UNIFY_L_FLOAT_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
(*_SREG)[0] = AbsAppl((*_PREG)->u.od.d); \
(*_SREG)[0] = AbsAppl((*_PREG)->y_u.od.d); \
(*_PREG) = NEXTOP((*_PREG), od); \
GONext();
@@ -935,21 +935,21 @@
d0 = *pt0;
#define UNIFY_LONGINT_D0ISFUNC \
pt1 = (*_PREG)->u.oi.i; \
pt1 = (*_PREG)->y_u.oi.i; \
(*_PREG) = NEXTOP((*_PREG), oi);
#define UNIFY_LONGINT_EQUALS \
GONext();
#define UNIFY_LONGINT_ULONGINT_UNK \
d1 = AbsAppl((*_PREG)->u.oi.i); \
d1 = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
Bind_Global(pt0, d1); \
GONext();
#define UNIFY_LONGINT_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
* (*_SREG)++ = AbsAppl((*_PREG)->u.oi.i); \
* (*_SREG)++ = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
GONextW();
@@ -966,21 +966,21 @@
d0 = *pt0;
#define UNIFY_L_LONGINT_D0ISFUNC \
pt1 = (*_PREG)->u.oi.i; \
pt1 = (*_PREG)->y_u.oi.i; \
(*_PREG) = NEXTOP((*_PREG), oi);
#define UNIFY_L_LONGINT_EQUALS \
GONext();
#define UNIFY_L_LONGINT_ULLONGINT_UNK \
d1 = AbsAppl((*_PREG)->u.oi.i); \
d1 = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
Bind_Global(S_SREG, d1); \
GONext();
#define UNIFY_L_LONGINT_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
(*_SREG)[0] = AbsAppl((*_PREG)->u.oi.i); \
(*_SREG)[0] = AbsAppl((*_PREG)->y_u.oi.i); \
(*_PREG) = NEXTOP((*_PREG), oi); \
GONext();
@@ -1001,7 +1001,7 @@
GONext();
#define UNIFY_BIGINT_UBIGINT_UNK \
d1 = (*_PREG)->u.oN.b; \
d1 = (*_PREG)->y_u.oN.b; \
(*_PREG) = NEXTOP((*_PREG), oN); \
Bind_Global(pt0, d1); \
GONext();
@@ -1025,7 +1025,7 @@
GONext();
#define UNIFY_L_BIGINT_ULBIGINT_UNK \
d1 = (*_PREG)->u.oN.b; \
d1 = (*_PREG)->y_u.oN.b; \
(*_PREG) = NEXTOP((*_PREG), oN); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -1041,12 +1041,12 @@
#define UNIFY_DBTERM_UDBTERM_NONVAR \
BLOCK = (CELL)UNIFY_DBTERM_UDBTERM_NONVAR; \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
YAAM_UNIFYBOUND;
#define UNIFY_DBTERM_UDBTERM_UNK \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
Bind_Global(pt0, d1); \
GONext();
@@ -1061,12 +1061,12 @@
#define UNIFY_L_DBTERM_ULDBTERM_NONVAR \
BLOCK = (CELL)UNIFY_L_DBTERM_ULDBTERM_NONVAR; \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
YAAM_UNIFYBOUND;
#define UNIFY_L_DBTERM_ULDBTERM_UNK \
d1 = (*_PREG)->u.oD.D; \
d1 = (*_PREG)->y_u.oD.D; \
(*_PREG) = NEXTOP((*_PREG), oD); \
Bind_Global(S_SREG, d1); \
GONext(); \
@@ -1193,7 +1193,7 @@
CACHE_S(); \
READ_IN_S(); \
S_SREG = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
if (*S_SREG != d0) { \
YAAM_FAIL; \
} \
@@ -1210,9 +1210,9 @@
d1 = AbsAppl(HR); \
Bind_Global(pt0, d1); \
pt0 = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.ofa.a; \
HR = pt0 + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
(*_SREG) = pt0; \
GONextW(); \
@@ -1228,9 +1228,9 @@
d0 = AbsAppl(HR); \
S_SREG[0] = d0; \
S_SREG = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*S_SREG++ = d0; \
HR = S_SREG + (*_PREG)->u.ofa.a; \
HR = S_SREG + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -1252,7 +1252,7 @@
} \
else { \
(*_SREG) = RepAppl(d0); \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
if (*(*_SREG)++ != d0) { \
YAAM_FAIL; \
} \
@@ -1267,9 +1267,9 @@
d1 = AbsAppl(HR); \
Bind_Global(pt0, d1); \
pt0 = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*pt0++ = d0; \
HR = pt0 + (*_PREG)->u.ofa.a; \
HR = pt0 + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
(*_SREG) = pt0; \
GONextW(); \
@@ -1283,9 +1283,9 @@
READ_IN_S(); \
S_SREG[0] = d0; \
S_SREG = HR; \
d0 = (CELL) ((*_PREG)->u.ofa.f); \
d0 = (CELL) ((*_PREG)->y_u.ofa.f); \
*S_SREG++ = d0; \
HR = S_SREG + (*_PREG)->u.ofa.a; \
HR = S_SREG + (*_PREG)->y_u.ofa.a; \
(*_PREG) = NEXTOP((*_PREG), ofa); \
WRITEBACK_S(S_SREG); \
ENDCACHE_S(); \
@@ -1293,49 +1293,49 @@
#define SAVE_PAIR_X_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
XREG((*_PREG)->u.ox.x) = AbsPair((*_SREG)); \
XREG((*_PREG)->y_u.ox.x) = AbsPair((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONext();
#define SAVE_PAIR_X_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
XREG((*_PREG)->u.ox.x) = AbsPair((*_SREG)); \
XREG((*_PREG)->y_u.ox.x) = AbsPair((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONextW();
#define SAVE_PAIR_Y_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsPair((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsPair((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#define SAVE_PAIR_Y_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsPair((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsPair((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();
#define SAVE_APPL_X_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
XREG((*_PREG)->u.ox.x) = AbsAppl((*_SREG) - 1); \
XREG((*_PREG)->y_u.ox.x) = AbsAppl((*_SREG) - 1); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONext();
#define SAVE_APPL_X_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
XREG((*_PREG)->u.ox.x) = AbsAppl((*_SREG) - 1); \
XREG((*_PREG)->y_u.ox.x) = AbsAppl((*_SREG) - 1); \
(*_PREG) = NEXTOP((*_PREG), ox); \
GONextW();
#define SAVE_APPL_Y_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsAppl((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsAppl((*_SREG)-1)); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONext();
#define SAVE_APPL_Y_WRITE_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.oy.y,AbsAppl((*_SREG)-1)); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.oy.y,AbsAppl((*_SREG)-1)); \
(*_PREG) = NEXTOP((*_PREG), oy); \
GONextW();

View File

@@ -1,5 +1,5 @@
#define WRITE_X_VAR_INSTINIT \
XREG((*_PREG)->u.x.x) = Unsigned((*_SREG)); \
XREG((*_PREG)->y_u.x.x) = Unsigned((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), x); \
RESET_VARIABLE((*_SREG)); \
(*_SREG)++; \
@@ -13,7 +13,7 @@
#define WRITE_N_VOIDS_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.s.s; \
d0 = (*_PREG)->y_u.s.s; \
(*_PREG) = NEXTOP((*_PREG), s); \
for (; d0 > 0; d0--) { \
RESET_VARIABLE((*_SREG)); \
@@ -22,7 +22,7 @@
GONext();
#define WRITE_Y_VAR_INSTINIT \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,Unsigned((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,Unsigned((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), y); \
RESET_VARIABLE((*_SREG)); \
(*_SREG)++; \
@@ -30,7 +30,7 @@
#define WRITE_X_VAL_INSTINIT \
register CELL d0; \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), x); \
GONext();
@@ -38,7 +38,7 @@
#define WRITE_X_LOC_INSTINIT \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
(*_PREG) = NEXTOP((*_PREG), x);
#define WRITE_X_LOC_W_X_BOUND \
@@ -104,9 +104,9 @@
#ifdef YAPOR_SBA
#define WRITE_Y_VAL_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.y.y]; \
d0 = YREG[(*_PREG)->y_u.y.y]; \
if (d0 == 0) \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->u.y.y); \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->y_u.y.y); \
else \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), y); \
@@ -114,7 +114,7 @@
#else /* YAPOR_SBA */
#define WRITE_Y_VAL_INSTINIT \
register CELL d0; \
d0 = YREG[(*_PREG)->u.y.y]; \
d0 = YREG[(*_PREG)->y_u.y.y]; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), y); \
GONext();
@@ -123,7 +123,7 @@
#define WRITE_Y_LOC_INSTINIT \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.y.y; \
pt0 = YREG+(*_PREG)->y_u.y.y; \
d0 = *pt0;
#define WRITE_Y_LOC_W_Y_BOUND \
@@ -199,43 +199,43 @@
#define WRITE_ATOM_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.c.c; \
d0 = (*_PREG)->y_u.c.c; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), c); \
GONext();
#define WRITE_BIGINT_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.N.b; \
d0 = (*_PREG)->y_u.N.b; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), N); \
GONext();
#define WRITE_DBTERM_INSTINIT \
register CELL d0; \
d0 = (*_PREG)->u.D.D; \
d0 = (*_PREG)->y_u.D.D; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), D); \
GONext();
#define WRITE_FLOAT_INSTINIT \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.d.d); \
d0 = AbsAppl((*_PREG)->y_u.d.d); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), d); \
GONext();
#define WRITE_LONGIT_INSTINIT \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.i.i); \
d0 = AbsAppl((*_PREG)->y_u.i.i); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), i); \
GONext();
#define WRITE_N_ATOMS_INSTINIT \
register CELL d0, d1; \
d0 = (*_PREG)->u.sc.s; \
d1 = (*_PREG)->u.sc.c; \
d0 = (*_PREG)->y_u.sc.s; \
d1 = (*_PREG)->y_u.sc.c; \
for (; d0 > 0; d0--) { \
*(*_SREG)++ = d1; \
} \
@@ -275,9 +275,9 @@
SP[-1] = Unsigned((*_SREG)); \
SP[-2] = 1; \
SP -= 2; \
d0 = (CELL) ((*_PREG)->u.fa.f); \
*H++ = d0; \
d0 = (*_PREG)->u.fa.a; \
d0 = (CELL) ((*_PREG)->y_u.fa.f); \
*HR++ = d0; \
d0 = (*_PREG)->y_u.fa.a; \
(*_PREG) = NEXTOP((*_PREG), fa); \
(*_SREG) = HR; \
HR += d0; \
@@ -287,10 +287,10 @@
register CELL d0; \
d0 = AbsAppl(HR); \
*(*_SREG) = d0; \
d0 = (CELL) ((*_PREG)->u.fa.f); \
*H++ = d0; \
d0 = (CELL) ((*_PREG)->y_u.fa.f); \
*HR++ = d0; \
(*_SREG) = HR; \
d0 = (*_PREG)->u.fa.a; \
d0 = (*_PREG)->y_u.fa.a; \
(*_PREG) = NEXTOP((*_PREG), fa); \
HR += d0; \
GONext();

View File

@@ -1,6 +1,6 @@
#define WRITE_X_VAR_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
XREG((*_PREG)->u.x.x) = Unsigned((*_SREG)); \
XREG((*_PREG)->y_u.x.x) = Unsigned((*_SREG)); \
(*_PREG) = NEXTOP((*_PREG), x); \
RESET_VARIABLE((*_SREG)); \
(*_SREG)++; \
@@ -16,7 +16,7 @@
#define WRITE_N_VOIDS_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.s.s; \
d0 = (*_PREG)->y_u.s.s; \
(*_PREG) = NEXTOP((*_PREG), s); \
for (; d0 > 0; d0--) { \
RESET_VARIABLE((*_SREG)); \
@@ -26,7 +26,7 @@
#define WRITE_Y_VAR_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->u.y.y,Unsigned((*_SREG))); \
INITIALIZE_PERMVAR(YREG+(*_PREG)->y_u.y.y,Unsigned((*_SREG))); \
(*_PREG) = NEXTOP((*_PREG), y); \
RESET_VARIABLE((*_SREG)); \
(*_SREG)++; \
@@ -35,7 +35,7 @@
#define WRITE_X_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), x); \
GONext();
@@ -44,7 +44,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
d0 = XREG((*_PREG)->u.x.x); \
d0 = XREG((*_PREG)->y_u.x.x); \
(*_PREG) = NEXTOP((*_PREG), x);
#define WRITE_X_LOC_W_X_BOUND \
@@ -111,9 +111,9 @@
#define WRITE_Y_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.y.y]; \
d0 = YREG[(*_PREG)->y_u.y.y]; \
if (d0 == 0) \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->u.y.y); \
*(*_SREG)++ = (CELL)(YREG+(*_PREG)->y_u.y.y); \
else \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), y); \
@@ -122,7 +122,7 @@
#define WRITE_Y_VAL_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = YREG[(*_PREG)->u.y.y]; \
d0 = YREG[(*_PREG)->y_u.y.y]; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), y); \
GONext();
@@ -132,7 +132,7 @@
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
register CELL *pt0; \
pt0 = YREG+(*_PREG)->u.y.y; \
pt0 = YREG+(*_PREG)->y_u.y.y; \
d0 = *pt0;
#define WRITE_Y_LOC_W_Y_BOUND \
@@ -209,7 +209,7 @@
#define WRITE_ATOM_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.c.c; \
d0 = (*_PREG)->y_u.c.c; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), c); \
GONext();
@@ -217,7 +217,7 @@
#define WRITE_BIGINT_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.N.b; \
d0 = (*_PREG)->y_u.N.b; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), N); \
GONext();
@@ -225,7 +225,7 @@
#define WRITE_DBTERM_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = (*_PREG)->u.D.D; \
d0 = (*_PREG)->y_u.D.D; \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), D); \
GONext();
@@ -233,7 +233,7 @@
#define WRITE_FLOAT_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.d.d); \
d0 = AbsAppl((*_PREG)->y_u.d.d); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), d); \
GONext();
@@ -241,7 +241,7 @@
#define WRITE_LONGIT_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0; \
d0 = AbsAppl((*_PREG)->u.i.i); \
d0 = AbsAppl((*_PREG)->y_u.i.i); \
*(*_SREG)++ = d0; \
(*_PREG) = NEXTOP((*_PREG), i); \
GONext();
@@ -249,8 +249,8 @@
#define WRITE_N_ATOMS_INSTINIT \
print_instruction((*_PREG), ON_NATIVE); \
register CELL d0, d1; \
d0 = (*_PREG)->u.sc.s; \
d1 = (*_PREG)->u.sc.c; \
d0 = (*_PREG)->y_u.sc.s; \
d1 = (*_PREG)->y_u.sc.c; \
for (; d0 > 0; d0--) { \
*(*_SREG)++ = d1; \
} \
@@ -293,9 +293,9 @@
SP[-1] = Unsigned((*_SREG)); \
SP[-2] = 1; \
SP -= 2; \
d0 = (CELL) ((*_PREG)->u.fa.f); \
*H++ = d0; \
d0 = (*_PREG)->u.fa.a; \
d0 = (CELL) ((*_PREG)->y_u.fa.f); \
*HR++ = d0; \
d0 = (*_PREG)->y_u.fa.a; \
(*_PREG) = NEXTOP((*_PREG), fa); \
(*_SREG) = HR; \
HR += d0; \
@@ -306,10 +306,10 @@
register CELL d0; \
d0 = AbsAppl(HR); \
*(*_SREG) = d0; \
d0 = (CELL) ((*_PREG)->u.fa.f); \
*H++ = d0; \
d0 = (CELL) ((*_PREG)->y_u.fa.f); \
*HR++ = d0; \
(*_SREG) = HR; \
d0 = (*_PREG)->u.fa.a; \
d0 = (*_PREG)->y_u.fa.a; \
(*_PREG) = NEXTOP((*_PREG), fa); \
HR += d0; \
GONext();

View File

@@ -2,12 +2,13 @@
#include <unistd.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <memory>
using namespace std;
#define FREE_ALLOCATED() \
free(buffer); \
free(p->u.jhc.jh->cmd); \
free(p->y_u.jhc.jh->cmd); \
free(outputfilename); \
free(optoutputfilename); \
free(cmd1); \
@@ -40,7 +41,7 @@ using namespace std;
Kind = PASS->getPassKind(); \
ADD_PASS_ACCORDING_TO_KIND();
#include "PassPrinters.hpp"
#include "PassPrinters.hh"
void JIT_Compiler::analyze_module(llvm::Module* &M)
{
@@ -51,7 +52,7 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
PassKind Kind;
Pass.add(TLI); // First, I add on 'Pass' the Target Info of Module
Pass.add(new TargetData(M)); // Second, I must add Target Data on 'Pass'
Pass.add(new DataLayoutPass(M)); // Second, I must add Target Data on 'Pass'
for (int i = 0; i < ExpEnv.analysis_struc.n; i++) {
/*
* 'ExpEnv.analysis_struc.act_an' contains sorted analysis passes *
@@ -84,8 +85,9 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
case e_createLazyValueInfoPass:
TREAT_CASE_FOR(createLazyValueInfoPass());
break;
//CHANGED FOR LLVM 3.5
case e_createLoopDependenceAnalysisPass:
TREAT_CASE_FOR(createLoopDependenceAnalysisPass());
TREAT_CASE_FOR(createDependenceAnalysisPass());
break;
case e_createLibCallAliasAnalysisPass:
TREAT_CASE_FOR(createLibCallAliasAnalysisPass(NULL));
@@ -102,24 +104,29 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
case e_createNoAAPass:
TREAT_CASE_FOR(createNoAAPass());
break;
case e_createNoPathProfileInfoPass:
TREAT_CASE_FOR(createNoPathProfileInfoPass());
break;
case e_createNoProfileInfoPass:
TREAT_CASE_FOR(createNoProfileInfoPass());
break;
//NOT IN LLVM 3.5
//case e_createNoPathProfileInfoPass:
// TREAT_CASE_FOR(createNoPathProfileInfoPass());
// break;
//NOT IN LLVM 3.5
//case e_createNoProfileInfoPass:
// TREAT_CASE_FOR(createNoProfileInfoPass());
// break;
case e_createObjCARCAliasAnalysisPass:
TREAT_CASE_FOR(createObjCARCAliasAnalysisPass());
break;
case e_createProfileEstimatorPass:
TREAT_CASE_FOR(createProfileEstimatorPass());
break;
//NOT IN LLVM 3.5
//case e_createProfileEstimatorPass:
// TREAT_CASE_FOR(createProfileEstimatorPass());
// break;
//CHANGED FOR LLVM 3.5
case e_createProfileLoaderPass:
TREAT_CASE_FOR(createProfileLoaderPass());
break;
case e_createProfileVerifierPass:
TREAT_CASE_FOR(createProfileVerifierPass());
TREAT_CASE_FOR(createSampleProfileLoaderPass());
break;
//NOT IN LLVM 3.5
//case e_createProfileVerifierPass:
// TREAT_CASE_FOR(createProfileVerifierPass());
// break;
case e_createRegionInfoPass:
TREAT_CASE_FOR(createRegionInfoPass());
break;
@@ -129,8 +136,9 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
case e_createTypeBasedAliasAnalysisPass:
TREAT_CASE_FOR(createTypeBasedAliasAnalysisPass());
break;
//CHANGED FOR LLVM 3.5
case e_createDbgInfoPrinterPass:
TREAT_CASE_FOR(createDbgInfoPrinterPass());
TREAT_CASE_FOR(createDebugInfoVerifierPass());
break;
case e_createCFGPrinterPass:
TREAT_CASE_FOR(createCFGPrinterPass());
@@ -156,12 +164,14 @@ void JIT_Compiler::analyze_module(llvm::Module* &M)
case e_createRegionOnlyPrinterPass:
TREAT_CASE_FOR(createRegionOnlyPrinterPass());
break;
case e_createPathProfileLoaderPass:
TREAT_CASE_FOR(createPathProfileLoaderPass());
break;
case e_createPathProfileVerifierPass:
TREAT_CASE_FOR(createPathProfileVerifierPass());
break;
//NOT IN LLVM 3.5
//case e_createPathProfileLoaderPass:
// TREAT_CASE_FOR(createPathProfileLoaderPass());
// break;
//NOT IN LLVM 3.5
//case e_createPathProfileVerifierPass:
// TREAT_CASE_FOR(createPathProfileVerifierPass());
// break;
default:;
}
}
@@ -208,21 +218,22 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
/* Yes, I do, so... */
/* Initializes PassManager for Function */
OwningPtr<FunctionPassManager> FPM;
std::shared_ptr<FunctionPassManager> FPM;
FPM.reset(new FunctionPassManager(M));
FPM->add(new TargetData(M));
FPM->add(new DataLayoutPass(M));
PassManagerBuilder Builder; // aid to 'FPM' and 'MPM'
/* Initializes PassManager for Function */
PassManager MPM;
TargetLibraryInfo *TLI = new TargetLibraryInfo(Triple(M->getTargetTriple()));
MPM.add(TLI);
MPM.add(new TargetData(M));
MPM.add(new DataLayoutPass(M));
/* Populates 'Builder' */
Builder.OptLevel = ExpEnv.transform_struc.optlevel;
Builder.DisableUnitAtATime = !ExpEnv.transform_struc.unit_at_time_enabled;
Builder.DisableSimplifyLibCalls = !ExpEnv.transform_struc.simplify_libcalls_enabled;
//NOT IN LLVM 3.5
//Builder.DisableSimplifyLibCalls = !ExpEnv.transform_struc.simplify_libcalls_enabled;
/* inline and unrool only be enabled if 'ExpEnv.transform_struc.optlevel' > 0 */
if (ExpEnv.transform_struc.optlevel) Builder.Inliner =
createFunctionInliningPass(ExpEnv.transform_struc.opt_args.inline_threshold);
@@ -262,7 +273,7 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
PassManager Pass; // 'Pass' stores transform passes to be applied
TargetLibraryInfo *TLI = new TargetLibraryInfo(Triple(M->getTargetTriple()));
Pass.add(TLI); // First, I add on 'Pass' the Target Info of Module
Pass.add(new TargetData(M)); // Second, I must add Target Data on 'Pass'
Pass.add(new DataLayoutPass(M)); // Second, I must add Target Data on 'Pass'
for (int i = 0; i < ExpEnv.transform_struc.n; i++) {
/*
* 'ExpEnv.transform_struc.act_tr' contains sorted transform passes *
@@ -284,9 +295,10 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
case t_createBlockExtractorPass:
Pass.add(createBlockExtractorPass());
break;
case t_createBlockPlacementPass:
Pass.add(createBlockPlacementPass());
break;
//NOT IN LLVM 3.5
//case t_createBlockPlacementPass:
// Pass.add(createBlockPlacementPass());
// break;
case t_createBreakCriticalEdgesPass:
Pass.add(createBreakCriticalEdgesPass());
break;
@@ -357,7 +369,7 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
Pass.add(createInstructionSimplifierPass());
break;
case t_createInternalizePass:
Pass.add(createInternalizePass(true));
Pass.add(createInternalizePass());
break;
case t_createIPConstantPropagationPass:
Pass.add(createIPConstantPropagationPass());
@@ -449,9 +461,10 @@ void JIT_Compiler::optimize_module(llvm::Module* &M)
case t_createSCCPPass:
Pass.add(createSCCPPass());
break;
case t_createSimplifyLibCallsPass:
Pass.add(createSimplifyLibCallsPass());
break;
//NOT IN LLVM 3.5
//case t_createSimplifyLibCallsPass:
// Pass.add(createSimplifyLibCallsPass());
// break;
case t_createSingleLoopExtractorPass:
Pass.add(createSingleLoopExtractorPass());
break;
@@ -560,8 +573,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
#pragma GCC diagnostic pop
std::string errStr;
llvm::error_code e;
OwningPtr<MemoryBuffer> bf;
error_code e;
/* Pipe to communicate 'echo' with 'clang' */
int pipe1[2];
@@ -592,7 +604,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
close(pipe1[0]);
close(pipe1[1]);
execlp("echo", "echo", p->u.jhc.jh->tcc.cmd, NULL);
execlp("echo", "echo", p->y_u.jhc.jh->tcc.cmd, NULL);
}
else {
/* Calls clang. */
@@ -632,7 +644,8 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
* for this, I'll use 'MemoryBuffer::getOpenFile' *
*/
lseek(Output, 0, SEEK_SET);
e = MemoryBuffer::getOpenFile(Output, outputfilename, bf);
ErrorOr<std::unique_ptr<MemoryBuffer>> em = MemoryBuffer::getOpenFile(Output, outputfilename, -1);
e = em.getError();
if (e) {
errs() << "ERROR::Unable to MemoryBuffer from " << outputfilename << " -- " << e.message() << "\n";
exit(1);
@@ -641,9 +654,9 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
/*
* At this point, the compiled code (O0) is on main memory *
* I need to read it to Module *
* for this, I'll use 'ParseBitcodeFile' *
* for this, I'll use 'parseBitcodeFile' *
*/
Module *Mod = ParseBitcodeFile(bf.get(), *Context);
Module *Mod = *parseBitcodeFile(em->get(), *Context);
/*
* verify module correctness *
@@ -674,16 +687,16 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
/* Computing size of optimized module */
{
/* Open file 'tmp.bc' which will be filled by optimized Module */
OwningPtr<tool_output_file> Out;
std::shared_ptr<tool_output_file> Out;
std::string ErrorInfo;
Out.reset(new tool_output_file("tmp.bc", ErrorInfo, raw_fd_ostream::F_Binary));
Out.reset(new tool_output_file("tmp.bc", ErrorInfo, llvm::sys::fs::F_None));
if (!ErrorInfo.empty()) {
errs() << ErrorInfo << '\n';
exit(1);
}
/* 'createPrintModulePass(arg)' will print Module (now optimized) to on file represented by 'arg' */
PassManager Pass;
Pass.add(createPrintModulePass(&Out->os()));
Pass.add(createPrintModulePass(Out->os()));
Pass.run(*Mod);
/* 'Out->keep()' will keep printed module to file and will close file */
Out->keep();
@@ -692,7 +705,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
int Outtmp = open("tmp.bc", O_CREAT | O_RDWR, 0644);
#if YAP_STAT_PREDS
/* for statistics... compute file size and store value on 'NativeArea->area.native_size_bytes' */
NativeArea->area.native_size_bytes[p->u.jhc.jh->caa.naddress][NativeArea->area.nrecomp[p->u.jhc.jh->caa.naddress]-1] = lseek(Outtmp, 0, SEEK_END);
NativeArea->area.native_size_bytes[p->y_u.jhc.jh->caa.naddress][NativeArea->area.nrecomp[p->y_u.jhc.jh->caa.naddress]-1] = lseek(Outtmp, 0, SEEK_END);
#endif
close(Outtmp);
remove("tmp.bc");
@@ -721,9 +734,10 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
}
/***/
// MaterializeAllPermanently -- Make sure all GlobalValues in this Module are fully read
if (Mod->MaterializeAllPermanently(&errStr)) {
errs() <<"Error:: bitcode didn't read correctly. -- " << errStr << "\n";
// materializeAllPermanently -- Make sure all GlobalValues in this Module are fully read
error_code materialize_error = Mod->materializeAllPermanently();
if (materialize_error.value() != 0) {
errs() <<"Error:: bitcode didn't read correctly. -- " << materialize_error.message() << "\n";
exit(1);
}
@@ -790,12 +804,14 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
{
/* codegen predicates 'enable_framepointer_elimination/0' or 'disable_framepointer_elimination/0' */
Options.NoFramePointerElim = (bool)ExpEnv.codegen_struc.struc_targetopt.noframepointerelim;
Options.NoFramePointerElimNonLeaf = (bool)ExpEnv.codegen_struc.struc_targetopt.noframepointerelim;
//NOT IN LLVM 3.5
//Options.NoFramePointerElimNonLeaf = (bool)ExpEnv.codegen_struc.struc_targetopt.noframepointerelim;
/***/
// codegen predicates 'less_precise_fp_mad_option/0' or 'more_precise_fp_mad_option/0'
Options.LessPreciseFPMADOption = (bool)ExpEnv.codegen_struc.struc_targetopt.lessprecisefpmadoption;
// codegen predicates 'no_excess_fp_precision/0' or 'excess_fp_precision/0'
Options.NoExcessFPPrecision = (bool)ExpEnv.codegen_struc.struc_targetopt.noexcessfpprecision;
//NOT IN LLVM 3.5
//Options.NoExcessFPPrecision = (bool)ExpEnv.codegen_struc.struc_targetopt.noexcessfpprecision;
// codegen predicates 'unsafe_fp_math/0' or 'safe_fp_math/0'
Options.UnsafeFPMath = (bool)ExpEnv.codegen_struc.struc_targetopt.unsafefpmath;
// codegen predicates 'rounding_mode_dynamically_changed/0' or 'rounding_mode_not_changed/0'
@@ -804,7 +820,8 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
// codegen predicates 'no_use_soft_float/0' or 'use_soft_float/0'
Options.UseSoftFloat = (bool)ExpEnv.codegen_struc.struc_targetopt.usesoftfloat;
// codegen predicates 'enable_jit_exception_handling/0' or 'disable_jit_exception_handling/0'
Options.JITExceptionHandling = (bool)ExpEnv.codegen_struc.struc_targetopt.jitexceptionhandling;
//NOT IN LLVM 3.5
//Options.JITExceptionHandling = (bool)ExpEnv.codegen_struc.struc_targetopt.jitexceptionhandling;
// codegen predicates 'enable_jit_emit_debug_info/0' or 'disable_jit_emit_debug_info/0'
Options.JITEmitDebugInfo = (bool)ExpEnv.codegen_struc.struc_targetopt.jitemitdebuginfo;
// codegen predicates 'enable_jit_emit_debug_info_to_disk/0' or 'disable_jit_emit_debug_info_to_disk/0'
@@ -851,7 +868,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
*/
close(Output);
remove(outputfilename);
free(p->u.jhc.jh->tcc.cmd);
free(p->y_u.jhc.jh->tcc.cmd);
free(outputfilename);
return NULL;
}
@@ -863,7 +880,7 @@ void* JIT_Compiler::compile_all(LLVMContext* &Context, yamop* p)
close(Output);
remove(outputfilename);
free(p->u.jhc.jh->tcc.cmd);
free(p->y_u.jhc.jh->tcc.cmd);
free(outputfilename);
// 2. get native pointer from 'clause' (our function within Module) and return it
return EE->getPointerToFunction(EntryFn);

View File

@@ -32,12 +32,12 @@ then
AC_CHECK_PROG(LLVM, llvm-config, [yes],[no])
if test "$LLVM" = "no" ;then
AC_MSG_ERROR([--enable-jit was given, but test for LLVM 3.1 failed])
AC_MSG_ERROR([--enable-jit was given, but test for LLVM 3.5 failed])
else
LLVM_VERSION="`llvm-config --version`"
if test "$LLVM_VERSION" != "3.1";then
AC_MSG_ERROR([Test for LLVM 3.1 failed])
if test "$LLVM_VERSION" != "3.5.0";then
AC_MSG_ERROR([Test for LLVM 3.5 failed])
fi
fi
@@ -56,7 +56,7 @@ then
JITCODEGENPREDS="jit_codegenpreds.o"
JITFLAGS="`llvm-config --cxxflags`"
JITLD="`llvm-config --ldflags`"
JITLIBS="`llvm-config --libs all`"
JITLIBS="`llvm-config --libs all` -pthread -lffi -lz"
fi

View File

@@ -21,65 +21,65 @@
#define N_ANALYSIS_PASSES 33
// Disable one (passed by argument) LLVM analysis pass
static Int p_disable_analysis_pass(USES_REGS1 ) ;
static Int p_disable_analysis_pass(void);
// Enable one (passed by argument) LLVM analysis pass
static Int p_analysis_pass( USES_REGS1 );
static Int p_analysis_pass(void);
// Enable one (passed by argument) LLVM analysis pass
static Int p_enable_analysis_pass( USES_REGS1 );
static Int p_enable_analysis_pass(void);
// Enable a list (passed by argument) of LLVM analysis passes
static Int p_analysis_passes( USES_REGS1 );
static Int p_analysis_passes(void);
// Enable all available LLVM analysis passes
static Int p_enable_all_analysis_passes( USES_REGS1 );
static Int p_enable_all_analysis_passes(void);
// Disable all available LLVM analysis passes
static Int p_disable_all_analysis_passes( USES_REGS1 );
static Int p_disable_all_analysis_passes(void);
// Enable LLVM statistics
static Int p_enable_stats( USES_REGS1 );
static Int p_enable_stats(void);
// Enable elapsed time of each LLVM's task
static Int p_enable_time_passes( USES_REGS1 );
static Int p_enable_time_passes(void);
// Checks generated modules are correct (before optimize it). Use only if you suspect that any module has been generated incorrectly.
static Int p_enable_module_correctness( USES_REGS1 );
static Int p_enable_module_correctness(void);
// Same as 'p_enable_module_correctness', but accepts one argument, which defines when modules are checked.
// Valid values are those defined by 'enumPointToVerifiy' on 'amidefs.h'
static Int p_enable_module_correctness1( USES_REGS1 );
static Int p_enable_module_correctness1(void);
// Same as 'p_enable_module_correctness' with ARG1 = NOPOINT
static Int p_verify_module_nopoint( USES_REGS1 );
static Int p_verify_module_nopoint(void);
// Same as 'p_enable_module_correctness' with ARG1 = BEFORE
static Int p_verify_module_before( USES_REGS1 );
static Int p_verify_module_before(void);
// Same as 'p_enable_module_correctness' with ARG1 = AFTER
static Int p_verify_module_after( USES_REGS1 );
static Int p_verify_module_after(void);
// Same as 'p_enable_module_correctness' with ARG1 = BOTH
static Int p_verify_module_both( USES_REGS1 );
static Int p_verify_module_both(void);
// Disable LLVM statistics
static Int p_disable_stats( USES_REGS1 );
static Int p_disable_stats(void);
// Disable elapsed time of each LLVM's task
static Int p_disable_time_passes( USES_REGS1 ) );
static Int p_disable_time_passes(void);
// Don't check generated modules are correct
static Int p_disable_module_correctness( USES_REGS1 )
static Int p_disable_module_correctness(void);
// Set output file where analysis results are emitted. 'stderr' and 'stdout' are valid values
static Int p_analysis_output_file( USES_REGS1 ) ;
static Int p_analysis_output_file(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
static Int
p_disable_analysis_pass( USES_REGS1 )
p_disable_analysis_pass(void)
{
// First: stores what analysis pass should be disabled
@@ -101,7 +101,7 @@ p_disable_analysis_pass( USES_REGS1 )
int i = 0, j = 0;
char *tmp;
// gets string from atom and stores it on 'str'
char *str = (char*)malloc(YAP_AtomNameLength(AtomOfTerm(t))*sizeof(char)
char *str = (char*)malloc(YAP_AtomNameLength(AtomOfTerm(t))*sizeof(char));
strcpy(str, AtomName(AtomOfTerm(t)));
// Makes upper characters of 'str' (for comparison)
UPPER_ENTRY(str);
@@ -181,7 +181,7 @@ p_disable_analysis_pass( USES_REGS1 )
}
static Int
p_analysis_pass( USES_REGS1 )
p_analysis_pass(void)
{
// First: disables analysis pass (if be active)
p_disable_analysis_pass();
@@ -269,13 +269,13 @@ p_analysis_pass( USES_REGS1 )
}
static Int
p_enable_analysis_pass( USES_REGS1 )
p_enable_analysis_pass(void)
{
return p_analysis_pass();
}
static Int
p_analysis_passes( USES_REGS1 )
p_analysis_passes(void)
{
int i = 0, j = 0;
char *tmp;
@@ -415,7 +415,7 @@ p_analysis_passes( USES_REGS1 )
}
static Int
p_enable_all_analysis_passes( USES_REGS1 )
p_enable_all_analysis_passes(void)
{
// Same as 'analysis_passes(all)'
// First, disable all analysis passes
@@ -434,7 +434,7 @@ p_enable_all_analysis_passes( USES_REGS1 )
}
static Int
p_disable_all_analysis_passes( USES_REGS1 )
p_disable_all_analysis_passes(void)
{
// Just empty 'ExpEnv.analysis_struc.act_an'
if (ExpEnv.analysis_struc.act_an) free(ExpEnv.analysis_struc.act_an);
@@ -444,28 +444,28 @@ p_disable_all_analysis_passes( USES_REGS1 )
}
static Int
p_enable_stats( USES_REGS1 )
p_enable_stats(void)
{
ExpEnv.analysis_struc.stats_enabled = 1;
return TRUE;
}
static Int
p_enable_time_passes( USES_REGS1 )
p_enable_time_passes(void)
{
ExpEnv.analysis_struc.time_pass_enabled = 1;
return TRUE;
}
static Int
p_enable_module_correctness( USES_REGS1 )
p_enable_module_correctness(void)
{
ExpEnv.analysis_struc.pointtoverifymodule = AFTER;
return TRUE;
}
static Int
p_enable_module_correctness1( USES_REGS1 )
p_enable_module_correctness1(void)
{
Term t = Deref(ARG1);
char *tmp;
@@ -499,7 +499,7 @@ p_enable_module_correctness1( USES_REGS1 )
}
static Int
p_verify_module_nopoint( USES_REGS1 )
p_verify_module_nopoint(void)
{
// Same as 'enable_module_correctness(nopoint)'
ExpEnv.analysis_struc.pointtoverifymodule = NOPOINT;
@@ -507,7 +507,7 @@ p_verify_module_nopoint( USES_REGS1 )
}
static Int
p_verify_module_before( USES_REGS1 )
p_verify_module_before(void)
{
// Same as 'enable_module_correctness(before)'
ExpEnv.analysis_struc.pointtoverifymodule = BEFORE;
@@ -515,7 +515,7 @@ p_verify_module_before( USES_REGS1 )
}
static Int
p_verify_module_after( USES_REGS1 )
p_verify_module_after(void)
{
// Same as 'enable_module_correctness(after)'
ExpEnv.analysis_struc.pointtoverifymodule = AFTER;
@@ -523,7 +523,7 @@ p_verify_module_after( USES_REGS1 )
}
static Int
p_verify_module_both( USES_REGS1 )
p_verify_module_both(void)
{
// Same as 'enable_module_correctness(both)'
ExpEnv.analysis_struc.pointtoverifymodule = BOTH;
@@ -531,28 +531,28 @@ p_verify_module_both( USES_REGS1 )
}
static Int
p_disable_stats( USES_REGS1 )
p_disable_stats(void)
{
ExpEnv.analysis_struc.stats_enabled = 0;
return TRUE;
}
static Int
p_disable_time_passes( USES_REGS1 )
p_disable_time_passes(void)
{
ExpEnv.analysis_struc.time_pass_enabled = 0;
return TRUE;
}
static Int
p_disable_module_correctness( USES_REGS1 )
p_disable_module_correctness(void)
{
ExpEnv.analysis_struc.pointtoverifymodule = NOPOINT;
return TRUE;
}
static Int
p_analysis_output_file( USES_REGS1 )
p_analysis_output_file(void)
{
Term t = Deref(ARG1);
char *tmp;

View File

@@ -18,228 +18,228 @@
#include "jit_predicates.hh"
/* Predicates for LLVM Target Options configuration */
static Int p_enable_framepointer_elimination( USES_REGS1 );
static Int p_more_precise_fp_mad_option( USES_REGS1 );
static Int p_excess_fp_precision( USES_REGS1 );
static Int p_safe_fp_math( USES_REGS1 );
static Int p_rounding_mode_not_changed( USES_REGS1 );
static Int p_no_use_soft_float( USES_REGS1 );
static Int p_disable_jit_exception_handling( USES_REGS1 );
static Int p_disable_jit_emit_debug_info( USES_REGS1 );
static Int p_disable_jit_emit_debug_info_to_disk( USES_REGS1 );
static Int p_no_guaranteed_tail_call_opt( USES_REGS1 );
static Int p_enable_tail_calls( USES_REGS1 );
static Int p_disable_fast_isel( USES_REGS1 );
static Int p_disable_framepointer_elimination( USES_REGS1 );
static Int p_less_precise_fp_mad_option( USES_REGS1 );
static Int p_no_excess_fp_precision( USES_REGS1 );
static Int p_unsafe_fp_math( USES_REGS1 );
static Int p_rounding_mode_dynamically_changed( USES_REGS1 );
static Int p_use_soft_float( USES_REGS1 );
static Int p_enable_jit_exception_handling( USES_REGS1 );
static Int p_enable_jit_emit_debug_info( USES_REGS1 );
static Int p_enable_jit_emit_debug_info_to_disk( USES_REGS1 );
static Int p_guaranteed_tail_call_opt( USES_REGS1 );
static Int p_disable_tail_calls( USES_REGS1 );
static Int p_enable_fast_isel( USES_REGS1 );
static Int p_fp_abitype( USES_REGS1 );
static Int p_default_fp_abitype( USES_REGS1 );
static Int p_enable_framepointer_elimination(void);
static Int p_more_precise_fp_mad_option(void);
static Int p_excess_fp_precision(void);
static Int p_safe_fp_math(void);
static Int p_rounding_mode_not_changed(void);
static Int p_no_use_soft_float(void);
static Int p_disable_jit_exception_handling(void);
static Int p_disable_jit_emit_debug_info(void);
static Int p_disable_jit_emit_debug_info_to_disk(void);
static Int p_no_guaranteed_tail_call_opt(void);
static Int p_enable_tail_calls(void);
static Int p_disable_fast_isel(void);
static Int p_disable_framepointer_elimination(void);
static Int p_less_precise_fp_mad_option(void);
static Int p_no_excess_fp_precision(void);
static Int p_unsafe_fp_math(void);
static Int p_rounding_mode_dynamically_changed(void);
static Int p_use_soft_float(void);
static Int p_enable_jit_exception_handling(void);
static Int p_enable_jit_emit_debug_info(void);
static Int p_enable_jit_emit_debug_info_to_disk(void);
static Int p_guaranteed_tail_call_opt(void);
static Int p_disable_tail_calls(void);
static Int p_enable_fast_isel(void);
static Int p_fp_abitype(void);
static Int p_default_fp_abitype(void);
// LLVM Execution Engine level
static Int p_engine_opt_level( USES_REGS1 );
static Int p_reset_engine_opt_level( USES_REGS1 );
static Int p_engine_opt_level(void);
static Int p_reset_engine_opt_level(void);
// LLVM Execution Engine reloc model
static Int p_relocmodel( USES_REGS1 );
static Int p_reset_relocmodel( USES_REGS1 );
static Int p_relocmodel(void);
static Int p_reset_relocmodel(void);
// LLVM Execution Engine code model
static Int p_codemodel( USES_REGS1 );
static Int p_reset_codemodel( USES_REGS1 );
static Int p_codemodel(void);
static Int p_reset_codemodel(void);
// Enable MC JIT (experimental)
static Int p_enable_mcjit( USES_REGS1 );
static Int p_enable_mcjit(void);
// Disable MC JIT (experimental)
static Int p_disable_mcjit( USES_REGS1 );
static Int p_disable_mcjit(void);
// LLVM Register Allocator (not implemented -- for some reason, LLVM crashes when I use it on 'JIT_Compiler.cpp')
static Int p_register_allocator( USES_REGS1 );
static Int p_reset_register_allocator( USES_REGS1 );
static Int p_register_allocator(void);
static Int p_reset_register_allocator(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
static Int
p_enable_framepointer_elimination( USES_REGS1 )
p_enable_framepointer_elimination(void)
{
ExpEnv.codegen_struc.struc_targetopt.noframepointerelim = FALSE;
return TRUE;
}
static Int
p_more_precise_fp_mad_option( USES_REGS1 )
p_more_precise_fp_mad_option(void)
{
ExpEnv.codegen_struc.struc_targetopt.lessprecisefpmadoption = FALSE;
return TRUE;
}
static Int
p_excess_fp_precision( USES_REGS1 )
p_excess_fp_precision(void)
{
ExpEnv.codegen_struc.struc_targetopt.noexcessfpprecision = FALSE;
return TRUE;
}
static Int
p_safe_fp_math( USES_REGS1 )
p_safe_fp_math(void)
{
ExpEnv.codegen_struc.struc_targetopt.unsafefpmath = FALSE;
return TRUE;
}
static Int
p_rounding_mode_not_changed( USES_REGS1 )
p_rounding_mode_not_changed(void)
{
ExpEnv.codegen_struc.struc_targetopt.honorsigndependentroundingfpmathoption = FALSE;
return TRUE;
}
static Int
p_no_use_soft_float( USES_REGS1 )
p_no_use_soft_float(void)
{
ExpEnv.codegen_struc.struc_targetopt.usesoftfloat = FALSE;
return TRUE;
}
static Int
p_disable_jit_exception_handling( USES_REGS1 )
p_disable_jit_exception_handling(void)
{
ExpEnv.codegen_struc.struc_targetopt.jitexceptionhandling = FALSE;
return TRUE;
}
static Int
p_disable_jit_emit_debug_info( USES_REGS1 )
p_disable_jit_emit_debug_info(void)
{
ExpEnv.codegen_struc.struc_targetopt.jitemitdebuginfo = FALSE;
return TRUE;
}
static Int
p_disable_jit_emit_debug_info_to_disk( USES_REGS1 )
p_disable_jit_emit_debug_info_to_disk(void)
{
ExpEnv.codegen_struc.struc_targetopt.jitemitdebuginfotodisk = FALSE;
return TRUE;
}
static Int
p_no_guaranteed_tail_call_opt( USES_REGS1 )
p_no_guaranteed_tail_call_opt(void)
{
ExpEnv.codegen_struc.struc_targetopt.guaranteedtailcallopt = FALSE;
return TRUE;
}
static Int
p_enable_tail_calls( USES_REGS1 )
p_enable_tail_calls(void)
{
ExpEnv.codegen_struc.struc_targetopt.disabletailcalls = FALSE;
return TRUE;
}
static Int
p_disable_fast_isel( USES_REGS1 )
p_disable_fast_isel(void)
{
ExpEnv.codegen_struc.struc_targetopt.fastisel = FALSE;
return TRUE;
}
static Int
p_disable_framepointer_elimination( USES_REGS1 )
p_disable_framepointer_elimination(void)
{
ExpEnv.codegen_struc.struc_targetopt.noframepointerelim = TRUE;
return TRUE;
}
static Int
p_less_precise_fp_mad_option( USES_REGS1 )
p_less_precise_fp_mad_option(void)
{
ExpEnv.codegen_struc.struc_targetopt.lessprecisefpmadoption = TRUE;
return TRUE;
}
static Int
p_no_excess_fp_precision( USES_REGS1 )
p_no_excess_fp_precision(void)
{
ExpEnv.codegen_struc.struc_targetopt.noexcessfpprecision = TRUE;
return TRUE;
}
static Int
p_unsafe_fp_math( USES_REGS1 )
p_unsafe_fp_math(void)
{
ExpEnv.codegen_struc.struc_targetopt.unsafefpmath = TRUE;
return TRUE;
}
static Int
p_rounding_mode_dynamically_changed( USES_REGS1 )
p_rounding_mode_dynamically_changed(void)
{
ExpEnv.codegen_struc.struc_targetopt.honorsigndependentroundingfpmathoption = TRUE;
return TRUE;
}
static Int
p_use_soft_float( USES_REGS1 )
p_use_soft_float(void)
{
ExpEnv.codegen_struc.struc_targetopt.usesoftfloat = TRUE;
return TRUE;
}
static Int
p_enable_jit_exception_handling( USES_REGS1 )
p_enable_jit_exception_handling(void)
{
ExpEnv.codegen_struc.struc_targetopt.jitexceptionhandling = TRUE;
return TRUE;
}
static Int
p_enable_jit_emit_debug_info( USES_REGS1 )
p_enable_jit_emit_debug_info(void)
{
ExpEnv.codegen_struc.struc_targetopt.jitemitdebuginfo = TRUE;
return TRUE;
}
static Int
p_enable_jit_emit_debug_info_to_disk( USES_REGS1 )
p_enable_jit_emit_debug_info_to_disk(void)
{
ExpEnv.codegen_struc.struc_targetopt.jitemitdebuginfotodisk = TRUE;
return TRUE;
}
static Int
p_guaranteed_tail_call_opt( USES_REGS1 )
p_guaranteed_tail_call_opt(void)
{
ExpEnv.codegen_struc.struc_targetopt.guaranteedtailcallopt = TRUE;
return TRUE;
}
static Int
p_disable_tail_calls( USES_REGS1 )
p_disable_tail_calls(void)
{
ExpEnv.codegen_struc.struc_targetopt.disabletailcalls = TRUE;
return TRUE;
}
static Int
p_enable_fast_isel( USES_REGS1 )
p_enable_fast_isel(void)
{
ExpEnv.codegen_struc.struc_targetopt.fastisel = TRUE;
return TRUE;
}
static Int
p_fp_abitype( USES_REGS1 )
p_fp_abitype(void)
{
Term t = Deref(ARG1);
Int v;
@@ -285,14 +285,14 @@ p_fp_abitype( USES_REGS1 )
}
static Int
p_default_fp_abitype( USES_REGS1 )
p_default_fp_abitype(void)
{
ExpEnv.codegen_struc.struc_targetopt.floatabitype = 0;
return TRUE;
}
static Int
p_engine_opt_level( USES_REGS1 )
p_engine_opt_level(void)
{
Term t = Deref(ARG1);
Int v;
@@ -339,14 +339,14 @@ p_engine_opt_level( USES_REGS1 )
}
static Int
p_reset_engine_opt_level( USES_REGS1 )
p_reset_engine_opt_level(void)
{
ExpEnv.codegen_struc.struc_enginebuilder.engineoptlevel = 3;
return TRUE;
}
static Int
p_relocmodel( USES_REGS1 )
p_relocmodel(void)
{
Term t = Deref(ARG1);
Int v;
@@ -393,14 +393,14 @@ p_relocmodel( USES_REGS1 )
}
static Int
p_reset_relocmodel( USES_REGS1 )
p_reset_relocmodel(void)
{
ExpEnv.codegen_struc.struc_enginebuilder.relocmodel = 0;
return TRUE;
}
static Int
p_codemodel( USES_REGS1 )
p_codemodel(void)
{
Term t = Deref(ARG1);
Int v;
@@ -449,28 +449,28 @@ p_codemodel( USES_REGS1 )
}
static Int
p_reset_codemodel( USES_REGS1 )
p_reset_codemodel(void)
{
ExpEnv.codegen_struc.struc_enginebuilder.codemodel = 1;
return TRUE;
}
static Int
p_enable_mcjit( USES_REGS1 )
p_enable_mcjit(void)
{
ExpEnv.codegen_struc.struc_enginebuilder.usemcjit = 1;
return TRUE;
}
static Int
p_disable_mcjit( USES_REGS1 )
p_disable_mcjit(void)
{
ExpEnv.codegen_struc.struc_enginebuilder.usemcjit = 0;
return TRUE;
}
static Int
p_register_allocator( USES_REGS1 )
p_register_allocator(void)
{
Term t = Deref(ARG1);
// valid values for ARG1 are 'integer' and 'atom'
@@ -517,7 +517,7 @@ p_register_allocator( USES_REGS1 )
}
static Int
p_reset_register_allocator( USES_REGS1 )
p_reset_register_allocator(void)
{
ExpEnv.codegen_struc.struc_enginebuilder.regallocator = REG_ALLOC_GREEDY;
return TRUE;

View File

@@ -19,65 +19,65 @@
#include <math.h>
// Enable any (passed by argument) execution mode
static Int p_execution_mode( USES_REGS1 );
static Int p_execution_mode(void);
// Enable 'just interpreted' mode.
static Int p_interpreted_mode( USES_REGS1 );
static Int p_interpreted_mode(void);
// Enable 'smart jit' mode.
static Int p_smartjit_mode( USES_REGS1 );
static Int p_smartjit_mode(void);
// Enable 'continuous compilation' mode.
static Int p_continuouscompilation_mode( USES_REGS1 );
static Int p_continuouscompilation_mode(void);
// Enable 'just compiled' mode.
static Int p_justcompiled_mode( USES_REGS1 );
static Int p_justcompiled_mode(void);
// Enable one (passed by argument) of all available frequency types: counter or time. Frequency bound is default.
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_frequencyty1( USES_REGS1 );
static Int p_frequencyty1(void);
// Enable one (1st argument) of all available frequency types: counter and time. Frequency bound is 2nd argument
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_frequencyty2( USES_REGS1 );
static Int p_frequencyty2(void);
// Enable frequency bound
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_frequency_bound( USES_REGS1 );
static Int p_frequency_bound(void);
// Enable value for starting profiling
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_profiling_start_point( USES_REGS1 );
static Int p_profiling_start_point(void);
// Choose type of clause that can be main on traces
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_main_clause_ty( USES_REGS1 );
static Int p_main_clause_ty(void);
// Choose amount of compilation threads
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_compilation_threads( USES_REGS1 );
static Int p_compilation_threads(void);
// Enable recompilation
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_enable_recompilation( USES_REGS1 );
static Int p_enable_recompilation(void);
// Disable recompilation
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_disable_recompilation( USES_REGS1 );
static Int p_disable_recompilation(void);
// Just code interpretation. Don't compile
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_only_profiled_interpreter( USES_REGS1 );
static Int p_only_profiled_interpreter(void);
// Disable 'p_only_profiled_interpreter'
// Just for 'smart jit' or 'continuous compilation' mode
static Int p_noonly_profiled_interpreter( USES_REGS1 );
static Int p_noonly_profiled_interpreter(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
static Int
p_execution_mode( USES_REGS1 )
p_execution_mode(void)
{
enumExecModes mode;
// valid values for ARG1 are 'integer' and 'atom'
@@ -217,7 +217,7 @@ p_execution_mode( USES_REGS1 )
}
static Int
p_interpreted_mode( USES_REGS1 )
p_interpreted_mode(void)
{
// Same as 'execution_mode(0)' or 'execution_mode(interpreted)'
if (Yap_ExecutionMode == INTERPRETED) {
@@ -242,7 +242,7 @@ p_interpreted_mode( USES_REGS1 )
}
static Int
p_smartjit_mode( USES_REGS1 )
p_smartjit_mode(void)
{
// Same as 'execution_mode(1)' or 'execution_mode(smartjit)'
if (Yap_ExecutionMode == MIXED_MODE) {
@@ -273,7 +273,7 @@ p_smartjit_mode( USES_REGS1 )
}
static Int
p_continuouscompilation_mode( USES_REGS1 )
p_continuouscompilation_mode(void)
{
// Same as 'execution_mode(2)' or 'execution_mode(continuouscompilation)'
if (Yap_ExecutionMode == MIXED_MODE) {
@@ -310,7 +310,7 @@ p_continuouscompilation_mode( USES_REGS1 )
}
static Int
p_justcompiled_mode( USES_REGS1 )
p_justcompiled_mode(void)
{
// Same as 'execution_mode(3)' or 'execution_mode(justcompiled)'
if (Yap_ExecutionMode == COMPILED) {
@@ -337,7 +337,7 @@ p_justcompiled_mode( USES_REGS1 )
}
static Int
p_frequencyty1( USES_REGS1 )
p_frequencyty1(void)
{
// this predicate works only 'SMART_JIT' and 'CONTINUOUS_COMPILATION' modes
if (ExpEnv.config_struc.execution_mode == SMART_JIT || ExpEnv.config_struc.execution_mode == CONTINUOUS_COMPILATION) {
@@ -384,7 +384,7 @@ p_frequencyty1( USES_REGS1 )
}
static Int
p_frequencyty2( USES_REGS1 )
p_frequencyty2(void)
{
// this predicate works only 'SMART_JIT' and 'CONTINUOUS_COMPILATION' modes
if (ExpEnv.config_struc.execution_mode == SMART_JIT || ExpEnv.config_struc.execution_mode == CONTINUOUS_COMPILATION) {
@@ -456,7 +456,7 @@ p_frequencyty2( USES_REGS1 )
}
static Int
p_frequency_bound( USES_REGS1 )
p_frequency_bound(void)
{
// this predicate works only 'SMART_JIT' and 'CONTINUOUS_COMPILATION' modes
if (ExpEnv.config_struc.execution_mode == SMART_JIT || ExpEnv.config_struc.execution_mode == CONTINUOUS_COMPILATION) {
@@ -502,7 +502,7 @@ p_frequency_bound( USES_REGS1 )
}
static Int
p_profiling_start_point( USES_REGS1 )
p_profiling_start_point(void)
{
// this predicate works only 'SMART_JIT' and 'CONTINUOUS_COMPILATION' modes
if (ExpEnv.config_struc.execution_mode == SMART_JIT || ExpEnv.config_struc.execution_mode == CONTINUOUS_COMPILATION) {
@@ -533,7 +533,7 @@ p_profiling_start_point( USES_REGS1 )
}
static Int
p_main_clause_ty( USES_REGS1 )
p_main_clause_ty(void)
{
// this predicate works only 'SMART_JIT' and 'CONTINUOUS_COMPILATION' modes
if (ExpEnv.config_struc.execution_mode == SMART_JIT || ExpEnv.config_struc.execution_mode == CONTINUOUS_COMPILATION) {
@@ -628,7 +628,7 @@ p_main_clause_ty( USES_REGS1 )
}
static Int
p_compilation_threads( USES_REGS1 )
p_compilation_threads(void)
{
// this predicate works only 'CONTINUOUS_COMPILATION' mode
if (ExpEnv.config_struc.execution_mode == SMART_JIT || ExpEnv.config_struc.execution_mode == CONTINUOUS_COMPILATION) {
@@ -681,28 +681,28 @@ p_compilation_threads( USES_REGS1 )
}
static Int
p_enable_recompilation( USES_REGS1 )
p_enable_recompilation(void)
{
ExpEnv.config_struc.torecompile = 1;
return TRUE;
}
static Int
p_disable_recompilation( USES_REGS1 )
p_disable_recompilation(void)
{
ExpEnv.config_struc.torecompile = 0;
return TRUE;
}
static Int
p_only_profiled_interpreter( USES_REGS1 )
p_only_profiled_interpreter(void)
{
ExpEnv.config_struc.useonlypi = 1;
return TRUE;
}
static Int
p_noonly_profiled_interpreter( USES_REGS1 )
p_noonly_profiled_interpreter(void)
{
ExpEnv.config_struc.useonlypi = 0;
return TRUE;

View File

@@ -17,111 +17,111 @@
#include "jit_predicates.hh"
static Int p_no_print_instruction( USES_REGS1 );
static Int p_no_print_basic_instruction( USES_REGS1 );
static Int p_no_print_std_instruction( USES_REGS1 );
static Int p_no_print_standard_instruction( USES_REGS1 );
static Int p_print_instruction( USES_REGS1 );
static Int p_print_basic_instruction( USES_REGS1 );
static Int p_print_std_instruction( USES_REGS1 );
static Int p_print_standard_instruction( USES_REGS1 );
static Int p_print_instruction_msg_before( USES_REGS1 );
static Int p_print_basic_instruction_msg_before( USES_REGS1 );
static Int p_print_std_instruction_msg_before( USES_REGS1 );
static Int p_print_standard_instruction_msg_before( USES_REGS1 );
static Int p_print_instruction_msg_after( USES_REGS1 );
static Int p_print_basic_instruction_msg_after( USES_REGS1 );
static Int p_print_std_instruction_msg_after( USES_REGS1 );
static Int p_print_standard_instruction_msg_after( USES_REGS1 );
static Int p_print_instruction3( USES_REGS1 );
static Int p_print_basic_instruction3( USES_REGS1 );
static Int p_print_std_instruction3( USES_REGS1 );
static Int p_print_standard_instruction3( USES_REGS1 );
static Int p_print_profiled_instruction( USES_REGS1 );
static Int p_print_traced_instruction( USES_REGS1 );
static Int p_print_pfd_instruction( USES_REGS1 );
static Int p_print_profiled_instruction_msg_before( USES_REGS1 );
static Int p_print_traced_instruction_msg_before( USES_REGS1 );
static Int p_print_pfd_instruction_msg_before( USES_REGS1 );
static Int p_print_profiled_instruction_msg_after( USES_REGS1 );
static Int p_print_traced_instruction_msg_after( USES_REGS1 );
static Int p_print_pfd_instruction_msg_after( USES_REGS1 );
static Int p_print_profiled_instruction3( USES_REGS1 );
static Int p_print_traced_instruction3( USES_REGS1 );
static Int p_print_pfd_instruction3( USES_REGS1 );
static Int p_print_native_instruction( USES_REGS1 );
static Int p_print_ntv_instruction( USES_REGS1 );
static Int p_print_native_instruction_msg_before( USES_REGS1 );
static Int p_print_ntv_instruction_msg_before( USES_REGS1 );
static Int p_print_native_instruction_msg_after( USES_REGS1 );
static Int p_print_ntv_instruction_msg_after( USES_REGS1 );
static Int p_print_native_instruction3( USES_REGS1 );
static Int p_print_ntv_instruction3( USES_REGS1 );
static Int p_no_print_basic_block( USES_REGS1 );
static Int p_no_print_basicblock( USES_REGS1 );
static Int p_no_print_bb( USES_REGS1 );
static Int p_print_basic_block( USES_REGS1 );
static Int p_print_basicblock( USES_REGS1 );
static Int p_print_bb( USES_REGS1 );
static Int p_print_basic_block_msg_before( USES_REGS1 );
static Int p_print_basicblock_msg_before( USES_REGS1 );
static Int p_print_bb_msg_before( USES_REGS1 );
static Int p_print_basic_block_msg_after( USES_REGS1 );
static Int p_print_basicblock_msg_after( USES_REGS1 );
static Int p_print_bb_msg_after( USES_REGS1 );
static Int p_print_basic_block3( USES_REGS1 );
static Int p_print_basicblock3( USES_REGS1 );
static Int p_print_bb3( USES_REGS1 );
static Int p_print_native_basic_block( USES_REGS1 );
static Int p_print_native_basicblock( USES_REGS1 );
static Int p_print_native_bb( USES_REGS1 );
static Int p_print_native_basic_block_msg_before( USES_REGS1 );
static Int p_print_native_basicblock_msg_before( USES_REGS1 );
static Int p_print_native_bb_msg_before( USES_REGS1 );
static Int p_print_native_basic_block_msg_after( USES_REGS1 );
static Int p_print_native_basicblock_msg_after( USES_REGS1 );
static Int p_print_native_bb_msg_after( USES_REGS1 );
static Int p_print_native_basic_block3( USES_REGS1 );
static Int p_print_native_basicblock3( USES_REGS1 );
static Int p_print_native_bb3( USES_REGS1 );
static Int p_no_print_clause( USES_REGS1 );
static Int p_print_clause( USES_REGS1 );
static Int p_no_print_intermediate( USES_REGS1 );
static Int p_print_intermediate( USES_REGS1 );
static Int p_print_intermediate_to_std( USES_REGS1 );
static Int p_print_intermediate_to_std1( USES_REGS1 );
static Int p_print_intermediate_to_file( USES_REGS1 );
static Int p_print_intermediate_to_file1( USES_REGS1 );
static Int p_no_print_llva( USES_REGS1 );
static Int p_print_llva_before( USES_REGS1 );
static Int p_print_llva_after( USES_REGS1 );
static Int p_no_print_me( USES_REGS1 );
static Int p_print_me( USES_REGS1 );
static Int p_default_debug( USES_REGS1 );
static Int p_print_default_predicate_msgs( USES_REGS1 );
static Int p_print_all_predicate_msgs( USES_REGS1 );
static Int p_print_info_predicate_msgs( USES_REGS1 );
static Int p_print_success_predicate_msgs( USES_REGS1 );
static Int p_print_warning_predicate_msgs( USES_REGS1 );
static Int p_print_error_predicate_msgs( USES_REGS1 );
static Int p_no_print_all_predicate_msgs( USES_REGS1 );
static Int p_no_print_info_predicate_msgs( USES_REGS1 );
static Int p_no_print_success_predicate_msgs( USES_REGS1 );
static Int p_no_print_warning_predicate_msgs( USES_REGS1 );
static Int p_no_print_error_predicate_msgs( USES_REGS1 );
static Int p_print_predicate_msgs( USES_REGS1 );
static Int p_exit_on_warning( USES_REGS1 );
static Int p_disable_on_warning( USES_REGS1 );
static Int p_exit_on_error( USES_REGS1 );
static Int p_no_exit_on_warning( USES_REGS1 );
static Int p_enable_on_warning( USES_REGS1 );
static Int p_no_exit_on_error( USES_REGS1 );
static Int p_no_print_instruction(void);
static Int p_no_print_basic_instruction(void);
static Int p_no_print_std_instruction(void);
static Int p_no_print_standard_instruction(void);
static Int p_print_instruction(void);
static Int p_print_basic_instruction(void);
static Int p_print_std_instruction(void);
static Int p_print_standard_instruction(void);
static Int p_print_instruction_msg_before(void);
static Int p_print_basic_instruction_msg_before(void);
static Int p_print_std_instruction_msg_before(void);
static Int p_print_standard_instruction_msg_before(void);
static Int p_print_instruction_msg_after(void);
static Int p_print_basic_instruction_msg_after(void);
static Int p_print_std_instruction_msg_after(void);
static Int p_print_standard_instruction_msg_after(void);
static Int p_print_instruction3(void);
static Int p_print_basic_instruction3(void);
static Int p_print_std_instruction3(void);
static Int p_print_standard_instruction3(void);
static Int p_print_profiled_instruction(void);
static Int p_print_traced_instruction(void);
static Int p_print_pfd_instruction(void);
static Int p_print_profiled_instruction_msg_before(void);
static Int p_print_traced_instruction_msg_before(void);
static Int p_print_pfd_instruction_msg_before(void);
static Int p_print_profiled_instruction_msg_after(void);
static Int p_print_traced_instruction_msg_after(void);
static Int p_print_pfd_instruction_msg_after(void);
static Int p_print_profiled_instruction3(void);
static Int p_print_traced_instruction3(void);
static Int p_print_pfd_instruction3(void);
static Int p_print_native_instruction(void);
static Int p_print_ntv_instruction(void);
static Int p_print_native_instruction_msg_before(void);
static Int p_print_ntv_instruction_msg_before(void);
static Int p_print_native_instruction_msg_after(void);
static Int p_print_ntv_instruction_msg_after(void);
static Int p_print_native_instruction3(void);
static Int p_print_ntv_instruction3(void);
static Int p_no_print_basic_block(void);
static Int p_no_print_basicblock(void);
static Int p_no_print_bb(void);
static Int p_print_basic_block(void);
static Int p_print_basicblock(void);
static Int p_print_bb(void);
static Int p_print_basic_block_msg_before(void);
static Int p_print_basicblock_msg_before(void);
static Int p_print_bb_msg_before(void);
static Int p_print_basic_block_msg_after(void);
static Int p_print_basicblock_msg_after(void);
static Int p_print_bb_msg_after(void);
static Int p_print_basic_block3(void);
static Int p_print_basicblock3(void);
static Int p_print_bb3(void);
static Int p_print_native_basic_block(void);
static Int p_print_native_basicblock(void);
static Int p_print_native_bb(void);
static Int p_print_native_basic_block_msg_before(void);
static Int p_print_native_basicblock_msg_before(void);
static Int p_print_native_bb_msg_before(void);
static Int p_print_native_basic_block_msg_after(void);
static Int p_print_native_basicblock_msg_after(void);
static Int p_print_native_bb_msg_after(void);
static Int p_print_native_basic_block3(void);
static Int p_print_native_basicblock3(void);
static Int p_print_native_bb3(void);
static Int p_no_print_clause(void);
static Int p_print_clause(void);
static Int p_no_print_intermediate(void);
static Int p_print_intermediate(void);
static Int p_print_intermediate_to_std(void);
static Int p_print_intermediate_to_std1(void);
static Int p_print_intermediate_to_file(void);
static Int p_print_intermediate_to_file1(void);
static Int p_no_print_llva(void);
static Int p_print_llva_before(void);
static Int p_print_llva_after(void);
static Int p_no_print_me(void);
static Int p_print_me(void);
static Int p_default_debug(void);
static Int p_print_default_predicate_msgs(void);
static Int p_print_all_predicate_msgs(void);
static Int p_print_info_predicate_msgs(void);
static Int p_print_success_predicate_msgs(void);
static Int p_print_warning_predicate_msgs(void);
static Int p_print_error_predicate_msgs(void);
static Int p_no_print_all_predicate_msgs(void);
static Int p_no_print_info_predicate_msgs(void);
static Int p_no_print_success_predicate_msgs(void);
static Int p_no_print_warning_predicate_msgs(void);
static Int p_no_print_error_predicate_msgs(void);
static Int p_print_predicate_msgs(void);
static Int p_exit_on_warning(void);
static Int p_disable_on_warning(void);
static Int p_exit_on_error(void);
static Int p_no_exit_on_warning(void);
static Int p_enable_on_warning(void);
static Int p_no_exit_on_error(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
static Int
p_no_print_instruction( USES_REGS1 )
p_no_print_instruction(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -171,25 +171,25 @@ p_no_print_instruction( USES_REGS1 )
}
static Int
p_no_print_basic_instruction( USES_REGS1 )
p_no_print_basic_instruction(void)
{
return p_no_print_instruction();
}
static Int
p_no_print_std_instruction( USES_REGS1 )
p_no_print_std_instruction(void)
{
return p_no_print_instruction();
}
static Int
p_no_print_standard_instruction( USES_REGS1 )
p_no_print_standard_instruction(void)
{
return p_no_print_instruction();
}
static Int
p_print_instruction( USES_REGS1 )
p_print_instruction(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -242,25 +242,25 @@ p_print_instruction( USES_REGS1 )
}
static Int
p_print_basic_instruction( USES_REGS1 )
p_print_basic_instruction(void)
{
return p_print_instruction();
}
static Int
p_print_std_instruction( USES_REGS1 )
p_print_std_instruction(void)
{
return p_print_instruction();
}
static Int
p_print_standard_instruction( USES_REGS1 )
p_print_standard_instruction(void)
{
return p_print_instruction();
}
static Int
p_print_instruction_msg_before( USES_REGS1 )
p_print_instruction_msg_before(void)
{
Term t = Deref(ARG2);
char *msgb;
@@ -324,25 +324,25 @@ p_print_instruction_msg_before( USES_REGS1 )
}
static Int
p_print_basic_instruction_msg_before( USES_REGS1 )
p_print_basic_instruction_msg_before(void)
{
return p_print_instruction_msg_before();
}
static Int
p_print_std_instruction_msg_before( USES_REGS1 )
p_print_std_instruction_msg_before(void)
{
return p_print_instruction_msg_before();
}
static Int
p_print_standard_instruction_msg_before( USES_REGS1 )
p_print_standard_instruction_msg_before(void)
{
return p_print_instruction_msg_before();
}
static Int
p_print_instruction_msg_after( USES_REGS1 )
p_print_instruction_msg_after(void)
{
Term t = Deref(ARG2);
char *msga;
@@ -407,25 +407,25 @@ p_print_instruction_msg_after( USES_REGS1 )
}
static Int
p_print_basic_instruction_msg_after( USES_REGS1 )
p_print_basic_instruction_msg_after(void)
{
return p_print_instruction_msg_after();
}
static Int
p_print_std_instruction_msg_after( USES_REGS1 )
p_print_std_instruction_msg_after(void)
{
return p_print_instruction_msg_after();
}
static Int
p_print_standard_instruction_msg_after( USES_REGS1 )
p_print_standard_instruction_msg_after(void)
{
return p_print_instruction_msg_after();
}
static Int
p_print_instruction3( USES_REGS1 )
p_print_instruction3(void)
{
Term t = Deref(ARG3);
char *msga;
@@ -501,25 +501,25 @@ p_print_instruction3( USES_REGS1 )
}
static Int
p_print_basic_instruction3( USES_REGS1 )
p_print_basic_instruction3(void)
{
return p_print_instruction3();
}
static Int
p_print_std_instruction3( USES_REGS1 )
p_print_std_instruction3(void)
{
return p_print_instruction3();
}
static Int
p_print_standard_instruction3( USES_REGS1 )
p_print_standard_instruction3(void)
{
return p_print_instruction3();
}
static Int
p_print_profiled_instruction( USES_REGS1 )
p_print_profiled_instruction(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -572,19 +572,19 @@ p_print_profiled_instruction( USES_REGS1 )
}
static Int
p_print_traced_instruction( USES_REGS1 )
p_print_traced_instruction(void)
{
return p_print_profiled_instruction();
}
static Int
p_print_pfd_instruction( USES_REGS1 )
p_print_pfd_instruction(void)
{
return p_print_profiled_instruction();
}
static Int
p_print_profiled_instruction_msg_before( USES_REGS1 )
p_print_profiled_instruction_msg_before(void)
{
Term t = Deref(ARG2);
char *msgb;
@@ -648,19 +648,19 @@ p_print_profiled_instruction_msg_before( USES_REGS1 )
}
static Int
p_print_traced_instruction_msg_before( USES_REGS1 )
p_print_traced_instruction_msg_before(void)
{
return p_print_profiled_instruction_msg_before();
}
static Int
p_print_pfd_instruction_msg_before( USES_REGS1 )
p_print_pfd_instruction_msg_before(void)
{
return p_print_profiled_instruction_msg_before();
}
static Int
p_print_profiled_instruction_msg_after( USES_REGS1 )
p_print_profiled_instruction_msg_after(void)
{
Term t = Deref(ARG2);
char *msga;
@@ -725,19 +725,19 @@ p_print_profiled_instruction_msg_after( USES_REGS1 )
}
static Int
p_print_traced_instruction_msg_after( USES_REGS1 )
p_print_traced_instruction_msg_after(void)
{
return p_print_profiled_instruction_msg_after();
}
static Int
p_print_pfd_instruction_msg_after( USES_REGS1 )
p_print_pfd_instruction_msg_after(void)
{
return p_print_profiled_instruction_msg_after();
}
static Int
p_print_profiled_instruction3( USES_REGS1 )
p_print_profiled_instruction3(void)
{
Term t = Deref(ARG3);
char *msga;
@@ -813,19 +813,19 @@ p_print_profiled_instruction3( USES_REGS1 )
}
static Int
p_print_traced_instruction3( USES_REGS1 )
p_print_traced_instruction3(void)
{
return p_print_profiled_instruction3();
}
static Int
p_print_pfd_instruction3( USES_REGS1 )
p_print_pfd_instruction3(void)
{
return p_print_profiled_instruction3();
}
static Int
p_print_native_instruction( USES_REGS1 )
p_print_native_instruction(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -878,13 +878,13 @@ p_print_native_instruction( USES_REGS1 )
}
static Int
p_print_ntv_instruction( USES_REGS1 )
p_print_ntv_instruction(void)
{
return p_print_native_instruction();
}
static Int
p_print_native_instruction_msg_before( USES_REGS1 )
p_print_native_instruction_msg_before(void)
{
Term t = Deref(ARG2);
char *msgb;
@@ -948,13 +948,13 @@ p_print_native_instruction_msg_before( USES_REGS1 )
}
static Int
p_print_ntv_instruction_msg_before( USES_REGS1 )
p_print_ntv_instruction_msg_before(void)
{
return p_print_native_instruction_msg_before();
}
static Int
p_print_native_instruction_msg_after( USES_REGS1 )
p_print_native_instruction_msg_after(void)
{
Term t = Deref(ARG2);
char *msga;
@@ -1019,13 +1019,13 @@ p_print_native_instruction_msg_after( USES_REGS1 )
}
static Int
p_print_ntv_instruction_msg_after( USES_REGS1 )
p_print_ntv_instruction_msg_after(void)
{
return p_print_native_instruction_msg_after();
}
static Int
p_print_native_instruction3( USES_REGS1 )
p_print_native_instruction3(void)
{
Term t = Deref(ARG3);
char *msga;
@@ -1101,13 +1101,13 @@ p_print_native_instruction3( USES_REGS1 )
}
static Int
p_print_ntv_instruction3( USES_REGS1 )
p_print_ntv_instruction3(void)
{
return p_print_native_instruction3();
}
static Int
p_no_print_basic_block( USES_REGS1 )
p_no_print_basic_block(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -1157,19 +1157,19 @@ p_no_print_basic_block( USES_REGS1 )
}
static Int
p_no_print_basicblock( USES_REGS1 )
p_no_print_basicblock(void)
{
return p_no_print_basic_block();
}
static Int
p_no_print_bb( USES_REGS1 )
p_no_print_bb(void)
{
return p_no_print_basic_block();
}
static Int
p_print_basic_block( USES_REGS1 )
p_print_basic_block(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -1222,19 +1222,19 @@ p_print_basic_block( USES_REGS1 )
}
static Int
p_print_basicblock( USES_REGS1 )
p_print_basicblock(void)
{
return p_print_basic_block();
}
static Int
p_print_bb( USES_REGS1 )
p_print_bb(void)
{
return p_print_basic_block();
}
static Int
p_print_basic_block_msg_before( USES_REGS1 )
p_print_basic_block_msg_before(void)
{
Term t = Deref(ARG2);
char *msgb;
@@ -1298,19 +1298,19 @@ p_print_basic_block_msg_before( USES_REGS1 )
}
static Int
p_print_basicblock_msg_before( USES_REGS1 )
p_print_basicblock_msg_before(void)
{
return p_print_basic_block_msg_before();
}
static Int
p_print_bb_msg_before( USES_REGS1 )
p_print_bb_msg_before(void)
{
return p_print_basic_block_msg_before();
}
static Int
p_print_basic_block_msg_after( USES_REGS1 )
p_print_basic_block_msg_after(void)
{
Term t = Deref(ARG2);
char *msga;
@@ -1374,19 +1374,19 @@ p_print_basic_block_msg_after( USES_REGS1 )
}
static Int
p_print_basicblock_msg_after( USES_REGS1 )
p_print_basicblock_msg_after(void)
{
return p_print_basic_block_msg_after();
}
static Int
p_print_bb_msg_after( USES_REGS1 )
p_print_bb_msg_after(void)
{
return p_print_basic_block_msg_after();
}
static Int
p_print_basic_block3( USES_REGS1 )
p_print_basic_block3(void)
{
Term t = Deref(ARG3);
char *msga;
@@ -1461,19 +1461,19 @@ p_print_basic_block3( USES_REGS1 )
}
static Int
p_print_basicblock3( USES_REGS1 )
p_print_basicblock3(void)
{
return p_print_basic_block3();
}
static Int
p_print_bb3( USES_REGS1 )
p_print_bb3(void)
{
return p_print_basic_block3();
}
static Int
p_print_native_basic_block( USES_REGS1 )
p_print_native_basic_block(void)
{
Term t = Deref(ARG1);
if (IsAtomTerm(t)) {
@@ -1549,19 +1549,19 @@ p_print_native_basic_block( USES_REGS1 )
}
static Int
p_print_native_basicblock( USES_REGS1 )
p_print_native_basicblock(void)
{
return p_print_native_basic_block();
}
static Int
p_print_native_bb( USES_REGS1 )
p_print_native_bb(void)
{
return p_print_native_basic_block();
}
static Int
p_print_native_basic_block_msg_before( USES_REGS1 )
p_print_native_basic_block_msg_before(void)
{
Term t = Deref(ARG2);
char *msgb;
@@ -1625,19 +1625,19 @@ p_print_native_basic_block_msg_before( USES_REGS1 )
}
static Int
p_print_native_basicblock_msg_before( USES_REGS1 )
p_print_native_basicblock_msg_before(void)
{
return p_print_native_basic_block_msg_before();
}
static Int
p_print_native_bb_msg_before( USES_REGS1 )
p_print_native_bb_msg_before(void)
{
return p_print_native_basic_block_msg_before();
}
static Int
p_print_native_basic_block_msg_after( USES_REGS1 )
p_print_native_basic_block_msg_after(void)
{
Term t = Deref(ARG2);
char *msga;
@@ -1701,19 +1701,19 @@ p_print_native_basic_block_msg_after( USES_REGS1 )
}
static Int
p_print_native_basicblock_msg_after( USES_REGS1 )
p_print_native_basicblock_msg_after(void)
{
return p_print_native_basic_block_msg_after();
}
static Int
p_print_native_bb_msg_after( USES_REGS1 )
p_print_native_bb_msg_after(void)
{
return p_print_native_basic_block_msg_after();
}
static Int
p_print_native_basic_block3( USES_REGS1 )
p_print_native_basic_block3(void)
{
Term t = Deref(ARG3);
char *msga;
@@ -1788,19 +1788,19 @@ p_print_native_basic_block3( USES_REGS1 )
}
static Int
p_print_native_basicblock3( USES_REGS1 )
p_print_native_basicblock3(void)
{
return p_print_native_basic_block3();
}
static Int
p_print_native_bb3( USES_REGS1 )
p_print_native_bb3(void)
{
return p_print_native_basic_block3();
}
static Int
p_no_print_clause( USES_REGS1 )
p_no_print_clause(void)
{
if (ExpEnv.debug_struc.pmainclause_on_head.msg_before) free((char*)ExpEnv.debug_struc.pmainclause_on_head.msg_before);
if (ExpEnv.debug_struc.pmainclause_on_head.msg_after) free((char*)ExpEnv.debug_struc.pmainclause_on_head.msg_after);
@@ -1811,7 +1811,7 @@ p_no_print_clause( USES_REGS1 )
}
static Int
p_print_clause( USES_REGS1 )
p_print_clause(void)
{
Term t = Deref(ARG1);
if (IsPairTerm(t)) {
@@ -1878,7 +1878,7 @@ p_print_clause( USES_REGS1 )
}
static Int
p_no_print_intermediate( USES_REGS1 )
p_no_print_intermediate(void)
{
if (ExpEnv.debug_struc.pprint_intermediate.std_name) free((char*)ExpEnv.debug_struc.pprint_intermediate.std_name);
if (ExpEnv.debug_struc.pprint_intermediate.file_name) free((char*)ExpEnv.debug_struc.pprint_intermediate.file_name);
@@ -1890,7 +1890,7 @@ p_no_print_intermediate( USES_REGS1 )
}
static Int
p_print_intermediate( USES_REGS1 )
p_print_intermediate(void)
{
ExpEnv.debug_struc.pprint_intermediate.print_to_std = 1;
ExpEnv.debug_struc.pprint_intermediate.std_name = (CELL)malloc(7*sizeof(char));
@@ -1899,7 +1899,7 @@ p_print_intermediate( USES_REGS1 )
}
static Int
p_print_intermediate_to_std( USES_REGS1 )
p_print_intermediate_to_std(void)
{
ExpEnv.debug_struc.pprint_intermediate.print_to_std = 1;
ExpEnv.debug_struc.pprint_intermediate.std_name = (CELL)malloc(7*sizeof(char));
@@ -1908,7 +1908,7 @@ p_print_intermediate_to_std( USES_REGS1 )
}
static Int
p_print_intermediate_to_std1( USES_REGS1 )
p_print_intermediate_to_std1(void)
{
Term t = Deref(ARG1);
if (IsAtomTerm(t)) {
@@ -1933,7 +1933,7 @@ p_print_intermediate_to_std1( USES_REGS1 )
}
static Int
p_print_intermediate_to_file( USES_REGS1 )
p_print_intermediate_to_file(void)
{
ExpEnv.debug_struc.pprint_intermediate.print_to_file = 1;
ExpEnv.debug_struc.pprint_intermediate.file_name = (CELL)malloc(7*sizeof(char));
@@ -1945,7 +1945,7 @@ p_print_intermediate_to_file( USES_REGS1 )
}
static Int
p_print_intermediate_to_file1( USES_REGS1 )
p_print_intermediate_to_file1(void)
{
Term t = Deref(ARG1);
if (IsAtomTerm(t)) {
@@ -1963,7 +1963,7 @@ p_print_intermediate_to_file1( USES_REGS1 )
}
static Int
p_no_print_llva( USES_REGS1 )
p_no_print_llva(void)
{
ExpEnv.debug_struc.pprint_llva.print_llva_before = 0;
ExpEnv.debug_struc.pprint_llva.print_llva_after = 0;
@@ -1971,21 +1971,21 @@ p_no_print_llva( USES_REGS1 )
}
static Int
p_print_llva_before( USES_REGS1 )
p_print_llva_before(void)
{
ExpEnv.debug_struc.pprint_llva.print_llva_before = 1;
return TRUE;
}
static Int
p_print_llva_after( USES_REGS1 )
p_print_llva_after(void)
{
ExpEnv.debug_struc.pprint_llva.print_llva_after = 1;
return TRUE;
}
static Int
p_no_print_me( USES_REGS1 )
p_no_print_me(void)
{
Term t = Deref(ARG1);
if (IsAtomTerm(t)) {
@@ -2037,7 +2037,7 @@ p_no_print_me( USES_REGS1 )
}
static Int
p_print_me( USES_REGS1 )
p_print_me(void)
{
Term t = Deref(ARG2);
char *msg;
@@ -2127,7 +2127,7 @@ p_print_me( USES_REGS1 )
}
static Int
p_default_debug( USES_REGS1 )
p_default_debug(void)
{
#define OPCODE(OP,TYPE) \
ExpEnv.debug_struc.pyaam_##OP.print = (Int)NO_PLACE; \
@@ -2182,7 +2182,7 @@ p_default_debug( USES_REGS1 )
}
static Int
p_print_default_predicate_msgs( USES_REGS1 )
p_print_default_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.info_msgs = 0;
ExpEnv.debug_struc.act_predicate_msgs.success_msgs = 0;
@@ -2192,7 +2192,7 @@ p_print_default_predicate_msgs( USES_REGS1 )
}
static Int
p_print_all_predicate_msgs( USES_REGS1 )
p_print_all_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.info_msgs = 1;
ExpEnv.debug_struc.act_predicate_msgs.success_msgs = 1;
@@ -2202,35 +2202,35 @@ p_print_all_predicate_msgs( USES_REGS1 )
}
static Int
p_print_info_predicate_msgs( USES_REGS1 )
p_print_info_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.info_msgs = 1;
return TRUE;
}
static Int
p_print_success_predicate_msgs( USES_REGS1 )
p_print_success_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.success_msgs = 1;
return TRUE;
}
static Int
p_print_warning_predicate_msgs( USES_REGS1 )
p_print_warning_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.warning_msgs = 1;
return TRUE;
}
static Int
p_print_error_predicate_msgs( USES_REGS1 )
p_print_error_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.error_msgs = 1;
return TRUE;
}
static Int
p_no_print_all_predicate_msgs( USES_REGS1 )
p_no_print_all_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.info_msgs = 0;
ExpEnv.debug_struc.act_predicate_msgs.success_msgs = 0;
@@ -2240,35 +2240,35 @@ p_no_print_all_predicate_msgs( USES_REGS1 )
}
static Int
p_no_print_info_predicate_msgs( USES_REGS1 )
p_no_print_info_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.info_msgs = 0;
return TRUE;
}
static Int
p_no_print_success_predicate_msgs( USES_REGS1 )
p_no_print_success_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.success_msgs = 0;
return TRUE;
}
static Int
p_no_print_warning_predicate_msgs( USES_REGS1 )
p_no_print_warning_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.warning_msgs = 0;
return TRUE;
}
static Int
p_no_print_error_predicate_msgs( USES_REGS1 )
p_no_print_error_predicate_msgs(void)
{
ExpEnv.debug_struc.act_predicate_msgs.error_msgs = 0;
return TRUE;
}
static Int
p_print_predicate_msgs( USES_REGS1 )
p_print_predicate_msgs(void)
{
int i = 0, j = 0;
char *tmp;
@@ -2328,42 +2328,42 @@ p_print_predicate_msgs( USES_REGS1 )
}
static Int
p_exit_on_warning( USES_REGS1 )
p_exit_on_warning(void)
{
ExpEnv.debug_struc.act_predicate_actions.exit_on_warning = 1;
return TRUE;
}
static Int
p_disable_on_warning( USES_REGS1 )
p_disable_on_warning(void)
{
ExpEnv.debug_struc.act_predicate_actions.disable_on_warning = 1;
return TRUE;
}
static Int
p_exit_on_error( USES_REGS1 )
p_exit_on_error(void)
{
ExpEnv.debug_struc.act_predicate_actions.exit_on_error = 1;
return TRUE;
}
static Int
p_no_exit_on_warning( USES_REGS1 )
p_no_exit_on_warning(void)
{
ExpEnv.debug_struc.act_predicate_actions.exit_on_warning = 0;
return TRUE;
}
static Int
p_enable_on_warning( USES_REGS1 )
p_enable_on_warning(void)
{
ExpEnv.debug_struc.act_predicate_actions.disable_on_warning = 0;
return TRUE;
}
static Int
p_no_exit_on_error( USES_REGS1 )
p_no_exit_on_error(void)
{
ExpEnv.debug_struc.act_predicate_actions.exit_on_error = 0;
return TRUE;
@@ -2372,7 +2372,7 @@ p_no_exit_on_error( USES_REGS1 )
#pragma GCC diagnostic pop
void
Yap_InitJitDebugPreds( USES_REGS1 )
Yap_InitJitDebugPreds(void)
{
Yap_InitCPred("no_print_instruction", 1, p_no_print_instruction, SafePredFlag);
Yap_InitCPred("no_print_basic_instruction", 1, p_no_print_basic_instruction, SafePredFlag);

View File

@@ -18,14 +18,14 @@
#include "jit_predicates.hh"
#include <papi.h>
static Int p_init_low_level_stats( USES_REGS1 );
static Int p_statistics_jit( USES_REGS1 );
static Int p_init_low_level_stats(void);
static Int p_statistics_jit(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
static Int
p_init_low_level_stats( USES_REGS1 )
p_init_low_level_stats(void)
{
int i = 0, j = 0;
char *tmp;
@@ -514,7 +514,7 @@ p_init_low_level_stats( USES_REGS1 )
}
static Int
p_statistics_jit( USES_REGS1 )
p_statistics_jit(void)
{
if (NativeArea && NativeArea->n) { // This exp will be true only if JIT Compiler was used
// printing...
@@ -542,7 +542,7 @@ p_statistics_jit( USES_REGS1 )
}
// get address on IntermediatecodeArea which is stored on first instruction of native code (this instruction is NativeArea->area.pc[i]')
int taddress = ((yamop*)NativeArea->area.pc[i])->u.jhc.jh->caa.taddress;
int taddress = ((yamop*)NativeArea->area.pc[i])->y_u.jhc.jh->caa.taddress;
if (taddress != -1) {
fprintf(stderr, "\tProfiling time: %.3lf sec.\n", IntermediatecodeArea->area.profiling_time[taddress]);

View File

@@ -20,46 +20,46 @@
#define N_TRANSFORM_PASSES 69
// Disable one (passed by argument) LLVM transform pass
static Int p_disable_transform_pass( USES_REGS1 );
static Int p_disable_transform_pass(void);
// Enable one (passed by argument) LLVM transform pass
static Int p_transform_pass( USES_REGS1 );
static Int p_transform_pass(void);
// Enable one (passed by argument) LLVM transform pass
static Int p_enable_transform_pass( USES_REGS1 );
static Int p_enable_transform_pass(void);
// Enable a list (passed by argument) of LLVM transform passes
static Int p_transform_passes( USES_REGS1 );
static Int p_transform_passes(void);
// Enable all available LLVM transform passes
static Int p_enable_all_transform_passes( USES_REGS1 );
static Int p_enable_all_transform_passes(void);
// Disable all available LLVM transform passes
static Int p_disable_all_transform_passes( USES_REGS1 );
static Int p_disable_all_transform_passes(void);
// Enable n LLVM transform passes (randomly)
static Int p_n_transform_passes( USES_REGS1 );
static Int p_n_transform_passes(void);
// Enable a transform level
static Int p_transform_level( USES_REGS1 );
static Int p_transform_level(void);
// Max element of Argument Promotion Pass
static Int p_argument_promotion_max_elements( USES_REGS1 );
static Int p_argument_promotion_max_elements(void);
// Threshold of Scalar Repl Aggregates Pass
static Int p_scalar_replace_aggregates_threshold( USES_REGS1 );
static Int p_scalar_replace_aggregates_threshold(void);
// Threshold of Loop Unroll Pass
static Int p_loop_unroll_threshold( USES_REGS1 );
static Int p_loop_unroll_threshold(void);
// Threshold of Function Inlining Pass
static Int p_inline_threshold( USES_REGS1 );
static Int p_inline_threshold(void);
// Eliminates (or not) only debugging information on Strip Symbols Pass
static Int p_strip_symbols_pass_type( USES_REGS1 );
static Int p_strip_symbols_pass_type(void);
// Optimizes (or not) for size on Loop Unswitch Pass
static Int p_loop_unswitch_optimize_for_size( USES_REGS1 );
static Int p_loop_unswitch_optimize_for_size(void);
/*
* Default value of 'max elements on Argument Promotion Pass *
@@ -69,25 +69,25 @@ static Int p_loop_unswitch_optimize_for_size( USES_REGS1 );
* 'Strip Symbols Pass *
* 'Loop Unswitch Pass *
*/
static Int p_default_optimization_args( USES_REGS1 );
static Int p_default_optimization_args(void);
// Same as 'p_default_optimization_args'
static Int p_reset_optimization_args( USES_REGS1 );
static Int p_reset_optimization_args(void);
// Enable IPO by LLVM
static Int p_enable_unit_at_time( USES_REGS1 );
static Int p_enable_unit_at_time(void);
// Enable libcalls simplification by LLVM
static Int p_enable_simplify_libcalls( USES_REGS1 );
static Int p_enable_simplify_libcalls(void);
// Disable IPO by LLVM
static Int p_disable_unit_at_time( USES_REGS1 );
static Int p_disable_unit_at_time(void);
// Disable libcalls simplification by LLVM
static Int p_disable_simplify_libcalls( USES_REGS1 );
static Int p_disable_simplify_libcalls(void);
// Enable (or not) link-time optimization
static Int p_link_time_opt1( USES_REGS1 );
static Int p_link_time_opt1(void);
/*
* Same as 'p_link_time_opt1', but accepts 3 arguments: *
@@ -95,26 +95,26 @@ static Int p_link_time_opt1( USES_REGS1 );
* 2 -- Should I run internalize? *
* 3 -- Should I run inliner? *
*/
static Int p_link_time_opt3( USES_REGS1 );
static Int p_link_time_opt3(void);
// Enable link-time optimization. Same as 'link_time_opt(true)'
static Int p_enable_link_time_opt( USES_REGS1 );
static Int p_enable_link_time_opt(void);
/*
* Same as 'p_enable_link_time_opt', but accepts 2 arguments: *
* 1 -- Should I run internalize? *
* 2 -- Should I run inliner? *
*/
static Int p_enable_link_time_opt2( USES_REGS1 );
static Int p_enable_link_time_opt2(void);
// Disable link-time optimization.
static Int p_disable_link_time_opt( USES_REGS1 );
static Int p_disable_link_time_opt(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
static Int
p_disable_transform_pass( USES_REGS1 )
p_disable_transform_pass(void)
{
// First: stores what transform pass should be disabled
@@ -250,7 +250,7 @@ p_disable_transform_pass( USES_REGS1 )
}
static Int
p_transform_pass( USES_REGS1 )
p_transform_pass(void)
{
// First: disables analysis pass (if be active)
p_disable_transform_pass();
@@ -375,13 +375,13 @@ p_transform_pass( USES_REGS1 )
}
static Int
p_enable_transform_pass( USES_REGS1 )
p_enable_transform_pass(void)
{
return p_transform_pass();
}
static Int
p_transform_passes( USES_REGS1 )
p_transform_passes(void)
{
int i = 0, j = 0;
char *tmp;
@@ -557,7 +557,7 @@ p_transform_passes( USES_REGS1 )
}
static Int
p_enable_all_transform_passes( USES_REGS1 )
p_enable_all_transform_passes(void)
{
// Same as 'transform_passes(all)'
// First, disable all analysis passes
@@ -577,7 +577,7 @@ p_enable_all_transform_passes( USES_REGS1 )
}
static Int
p_disable_all_transform_passes( USES_REGS1 )
p_disable_all_transform_passes(void)
{
// Just empty 'ExpEnv.analysis_struc.act_tr'
if (ExpEnv.transform_struc.act_tr) free(ExpEnv.transform_struc.act_tr);
@@ -587,7 +587,7 @@ p_disable_all_transform_passes( USES_REGS1 )
}
static Int
p_n_transform_passes( USES_REGS1 )
p_n_transform_passes(void)
{
// valid value for ARG1 is just 'integer' (number of transform passes added randomly)
Term t = Deref(ARG1);
@@ -651,7 +651,7 @@ p_n_transform_passes( USES_REGS1 )
}
static Int
p_transform_level( USES_REGS1 )
p_transform_level(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 is just 'integer'
@@ -682,7 +682,7 @@ p_transform_level( USES_REGS1 )
}
static Int
p_argument_promotion_max_elements( USES_REGS1 )
p_argument_promotion_max_elements(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 is just 'integer'
@@ -710,7 +710,7 @@ p_argument_promotion_max_elements( USES_REGS1 )
}
static Int
p_scalar_replace_aggregates_threshold( USES_REGS1 )
p_scalar_replace_aggregates_threshold(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 is just 'integer'
@@ -734,7 +734,7 @@ p_scalar_replace_aggregates_threshold( USES_REGS1 )
}
static Int
p_loop_unroll_threshold( USES_REGS1 )
p_loop_unroll_threshold(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 is just 'integer'
@@ -758,7 +758,7 @@ p_loop_unroll_threshold( USES_REGS1 )
}
static Int
p_inline_threshold( USES_REGS1 )
p_inline_threshold(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 is just 'integer'
@@ -782,7 +782,7 @@ p_inline_threshold( USES_REGS1 )
}
static Int
p_strip_symbols_pass_type( USES_REGS1 )
p_strip_symbols_pass_type(void)
{
Term t = Deref(ARG1);
// valid values for ARG1 are 'integer' and 'atom'
@@ -820,7 +820,7 @@ p_strip_symbols_pass_type( USES_REGS1 )
}
static Int
p_loop_unswitch_optimize_for_size( USES_REGS1 )
p_loop_unswitch_optimize_for_size(void)
{
Term t = Deref(ARG1);
// valid values for ARG1 are 'integer' and 'atom'
@@ -858,7 +858,7 @@ p_loop_unswitch_optimize_for_size( USES_REGS1 )
}
static Int
p_default_optimization_args( USES_REGS1 )
p_default_optimization_args(void)
{
/* resetting arguments used in some passes */
ExpEnv.transform_struc.opt_args.arg_promotion_max_elements = 3; // Argument Promotion Pass
@@ -886,7 +886,7 @@ p_default_optimization_args( USES_REGS1 )
}
static Int
p_reset_optimization_args( USES_REGS1 )
p_reset_optimization_args(void)
{
// Same as 'p_default_optimization_args'
p_default_optimization_args();
@@ -894,7 +894,7 @@ p_reset_optimization_args( USES_REGS1 )
}
static Int
p_enable_unit_at_time( USES_REGS1 )
p_enable_unit_at_time(void)
{
// Enable IPO
ExpEnv.transform_struc.unit_at_time_enabled = 1;
@@ -902,7 +902,7 @@ p_enable_unit_at_time( USES_REGS1 )
}
static Int
p_enable_simplify_libcalls( USES_REGS1 )
p_enable_simplify_libcalls(void)
{
// Enable libcalls simplification
ExpEnv.transform_struc.simplify_libcalls_enabled = 1;
@@ -910,7 +910,7 @@ p_enable_simplify_libcalls( USES_REGS1 )
}
static Int
p_disable_unit_at_time( USES_REGS1 )
p_disable_unit_at_time(void)
{
// Disable IPO
ExpEnv.transform_struc.unit_at_time_enabled = 0;
@@ -918,7 +918,7 @@ p_disable_unit_at_time( USES_REGS1 )
}
static Int
p_disable_simplify_libcalls( USES_REGS1 )
p_disable_simplify_libcalls(void)
{
// Disable libcalls simplification
ExpEnv.transform_struc.simplify_libcalls_enabled = 0;
@@ -926,7 +926,7 @@ p_disable_simplify_libcalls( USES_REGS1 )
}
static Int
p_link_time_opt1( USES_REGS1 )
p_link_time_opt1(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 are 'integer' and 'atom'
@@ -976,7 +976,7 @@ p_link_time_opt1( USES_REGS1 )
}
static Int
p_link_time_opt3( USES_REGS1 )
p_link_time_opt3(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 are 'integer' and 'atom'
@@ -1085,7 +1085,7 @@ p_link_time_opt3( USES_REGS1 )
}
static Int
p_enable_link_time_opt( USES_REGS1 )
p_enable_link_time_opt(void)
{
// Same as 'link_time_opt(true)'
ExpEnv.transform_struc.link_time_opt.enabled = 1;
@@ -1095,7 +1095,7 @@ p_enable_link_time_opt( USES_REGS1 )
}
static Int
p_enable_link_time_opt2( USES_REGS1 )
p_enable_link_time_opt2(void)
{
Term t = Deref(ARG1);
// valid value for ARG1 are 'integer' and 'atom'
@@ -1172,7 +1172,7 @@ p_enable_link_time_opt2( USES_REGS1 )
}
static Int
p_disable_link_time_opt( USES_REGS1 )
p_disable_link_time_opt(void)
{
ExpEnv.transform_struc.link_time_opt.enabled = 0;
ExpEnv.transform_struc.link_time_opt.internalize = 0;

View File

@@ -61,7 +61,7 @@ YAPSTARTUP=@SAVED_STATE_PREFIX@startup.yss
CC=@CC@
CXX=@CXX@
MPI_CC=@MPI_CC@
CPPFLAGS=@CPPFLAGS@ -I. -I$(srcdir)/H -I$(srcdir)/include -I$(srcdir)/os -I$(srcdir)/OPTYap -I$(srcdir)/BEAM -I$(srcdir)/CXX
CPPFLAGS=@CPPFLAGS@ -I. -I$(srcdir)/include -I$(srcdir)/C -I$(srcdir)/H -I$(srcdir)/os -I$(srcdir)/OPTYap -I$(srcdir)/BEAM -I$(srcdir)/CXX
EXECUTABLE_CFLAGS= @CFLAGS@ $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS)
CFLAGS= @YAPLIB_CFLAGS@ $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS)
CXXFLAGS= @SHLIB_CXXFLAGS@ $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS)
@@ -159,6 +159,7 @@ IOLIB_HEADERS=os/pl-buffer.h \
H/pl-yap.h @WINDOWS@ os/windows/dirent.h os/windows/utf8.h os/windows/utf8.c os/windows/uxnt.h os/windows/popen.c
HEADERS = \
C/absmi_insts.i \
H/Atoms.h \
H/sshift.h \
H/Yap.h \
@@ -218,8 +219,9 @@ HEADERS = \
OPTYap/locks_alpha_funcs.h \
OPTYap/locks_pthread.h \
library/dialect/swi/fli/swi.h \
JIT/HPP/JIT.hh JIT/HPP/JIT_Compiler.hh \
JIT/HPP/jit_predicates.hh
JIT/HPP/JIT.hpp \
JIT/HPP/JIT_Compiler.hpp \
JIT/HPP/jit_predicates.hpp
IOLIB_SOURCES=os/pl-buffer.c os/pl-ctype.c \
os/pl-codelist.c \
@@ -705,6 +707,7 @@ TAGS: $(C_SOURCES) $(PL_SOURCES) $(HEADERS)
find . -name '*.pl' -exec etags -a {} \;
find . -name '*.cpp' -exec etags -a {} \;
find . -name '*.hh' -exec etags -a {} \;
find . -name '*.hpp' -exec etags -a {} \;
find . -name '*.java' -exec etags -a {} \;
find . -name '*.py' -exec etags -a {} \;

8
configure vendored
View File

@@ -10769,12 +10769,12 @@ fi
if test "$LLVM" = "no" ;then
as_fn_error $? "--enable-jit was given, but test for LLVM 3.1 failed" "$LINENO" 5
as_fn_error $? "--enable-jit was given, but test for LLVM 3.5 failed" "$LINENO" 5
else
LLVM_VERSION="`llvm-config --version`"
if test "$LLVM_VERSION" != "3.1";then
as_fn_error $? "Test for LLVM 3.1 failed" "$LINENO" 5
if test "$LLVM_VERSION" != "3.5.0";then
as_fn_error $? "Test for LLVM 3.5 failed" "$LINENO" 5
fi
fi
@@ -10830,7 +10830,7 @@ fi
JITCODEGENPREDS="jit_codegenpreds.o"
JITFLAGS="`llvm-config --cxxflags`"
JITLD="`llvm-config --ldflags`"
JITLIBS="`llvm-config --libs all`"
JITLIBS="`llvm-config --libs all` -pthread -lffi -lz"
fi