* Fix compiling without Boehm.
* Fix the stats.
This commit is contained in:
		
							parent
							
								
									02934b1200
								
							
						
					
					
						commit
						a247d20604
					
				
					 1 changed files with 8 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -13,11 +13,15 @@
 | 
			
		|||
#include <gc/gc.h>
 | 
			
		||||
#include <gc/gc_cpp.h>
 | 
			
		||||
 | 
			
		||||
#define NEW (UseGC)
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#define GC_STRDUP strdup
 | 
			
		||||
#define GC_MALLOC malloc
 | 
			
		||||
 | 
			
		||||
#define NEW new
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +163,7 @@ void EvalState::addPrimOp(const string & name,
 | 
			
		|||
    string name2 = string(name, 0, 2) == "__" ? string(name, 2) : name;
 | 
			
		||||
    Symbol sym = symbols.create(name);
 | 
			
		||||
    v->type = tPrimOp;
 | 
			
		||||
    v->primOp = new (UseGC) PrimOp(primOp, arity, sym);
 | 
			
		||||
    v->primOp = NEW PrimOp(primOp, arity, sym);
 | 
			
		||||
    staticBaseEnv.vars[sym] = baseEnvDispl;
 | 
			
		||||
    baseEnv.values[baseEnvDispl++] = v;
 | 
			
		||||
    (*baseEnv.values[0]->attrs)[symbols.create(name2)].value = v;
 | 
			
		||||
| 
						 | 
				
			
			@ -320,11 +324,7 @@ void EvalState::mkAttrs(Value & v)
 | 
			
		|||
{
 | 
			
		||||
    clearValue(v);
 | 
			
		||||
    v.type = tAttrs;
 | 
			
		||||
#if HAVE_BOEHMGC
 | 
			
		||||
    v.attrs = new (UseGC) Bindings;
 | 
			
		||||
#else
 | 
			
		||||
    v.attrs = new Bindings;
 | 
			
		||||
#endif
 | 
			
		||||
    v.attrs = NEW Bindings;
 | 
			
		||||
    nrAttrsets++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1133,12 +1133,10 @@ void EvalState::printStats()
 | 
			
		|||
    printMsg(v, format("  stack space per eval() level: %1% bytes")
 | 
			
		||||
        % ((&x - deepestStack) / (float) maxRecursionDepth));
 | 
			
		||||
    printMsg(v, format("  environments allocated: %1% (%2% bytes)")
 | 
			
		||||
        % nrEnvs % (nrEnvs * sizeof(Env)));
 | 
			
		||||
    printMsg(v, format("  values allocated in environments: %1% (%2% bytes)")
 | 
			
		||||
        % nrValuesInEnvs % (nrValuesInEnvs * sizeof(Value)));
 | 
			
		||||
        % nrEnvs % (nrEnvs * sizeof(Env) + nrValuesInEnvs * sizeof(Value *)));
 | 
			
		||||
    printMsg(v, format("  list elements: %1% (%2% bytes)")
 | 
			
		||||
        % nrListElems % (nrListElems * sizeof(Value *)));
 | 
			
		||||
    printMsg(v, format("  misc. values allocated: %1% (%2% bytes)")
 | 
			
		||||
    printMsg(v, format("  values allocated: %1% (%2% bytes)")
 | 
			
		||||
        % nrValues % (nrValues * sizeof(Value)));
 | 
			
		||||
    printMsg(v, format("  attribute sets allocated: %1%") % nrAttrsets);
 | 
			
		||||
    printMsg(v, format("  right-biased unions: %1%") % nrOpUpdates);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue