FAUST compiler  0.9.9.6b8
Public Member Functions | Private Attributes | List of all members
loopDetector Class Reference

#include <loopDetector.hh>

Public Member Functions

 loopDetector (int buffersize, int checkperiod)
 
bool detect (Tree t)
 

Private Attributes

const int fBuffersize
 
const int fCheckperiod
 
vector< TreefBuffer
 
int fPhase
 

Detailed Description

Definition at line 41 of file loopDetector.hh.

Constructor & Destructor Documentation

loopDetector::loopDetector ( int  buffersize,
int  checkperiod 
)
inline

Definition at line 49 of file loopDetector.hh.

49 : fBuffersize(buffersize), fCheckperiod(checkperiod), fBuffer(buffersize), fPhase(0) {}
const int fCheckperiod
Definition: loopDetector.hh:44
const int fBuffersize
Definition: loopDetector.hh:43
vector< Tree > fBuffer
Definition: loopDetector.hh:45

Member Function Documentation

bool loopDetector::detect ( Tree  t)

Definition at line 4 of file loopDetector.cpp.

References fBuffer, fBuffersize, fCheckperiod, and fPhase.

Referenced by eval().

5 {
6  fPhase++;
7  int w = fPhase%fBuffersize;
8  fBuffer[w] = t;
9  if ((fPhase%fCheckperiod) == 0) {
10  // time to check for a cycle
11  for (int i=1; i<fBuffersize; i++) {
12  int r = w-i; if (r < 0) { r += fBuffersize; }
13  assert(r>=0);
14  assert(r<fBuffersize);
15  assert(r != w);
16  if (fBuffer[r] == t) {
17  cerr << "ERROR : after "
18  << fPhase
19  << " evaluation steps, the compiler has detected an endless evaluation cycle of "
20  << i
21  << " steps"
22  << endl;
23  exit(1);
24  }
25  }
26  }
27  return false;
28 }
const int fCheckperiod
Definition: loopDetector.hh:44
const int fBuffersize
Definition: loopDetector.hh:43
vector< Tree > fBuffer
Definition: loopDetector.hh:45

Here is the caller graph for this function:

Member Data Documentation

vector<Tree> loopDetector::fBuffer
private

Definition at line 45 of file loopDetector.hh.

Referenced by detect().

const int loopDetector::fBuffersize
private

Definition at line 43 of file loopDetector.hh.

Referenced by detect().

const int loopDetector::fCheckperiod
private

Definition at line 44 of file loopDetector.hh.

Referenced by detect().

int loopDetector::fPhase
private

Definition at line 46 of file loopDetector.hh.

Referenced by detect().


The documentation for this class was generated from the following files: