File:  [parser3project] / parser3 / src / classes / memory.C
Revision 1.11: download - view: text, annotated - select for diffs - revision graph
Thu Mar 31 21:46:20 2016 UTC (10 years, 3 months ago) by moko
Branches: MAIN
CVS tags: HEAD
optimizaion: *_base_class removed (related to feature #1051)

/** @file
	Parser: @b memory parser class.

	Copyright (c) 2001-2015 Art. Lebedev Studio (http://www.artlebedev.com)
	Author: Alexandr Petrosian <paf@design.ru>(http://paf.design.ru)
*/

#include "pa_common.h"
#include "pa_vmemory.h"
#include "pa_request.h"

volatile const char * IDENT_MEMORY_C="$Id: memory.C,v 1.11 2016/03/31 21:46:20 moko Exp $" IDENT_PA_VMEMORY_H;

class MMemory: public Methoded {
public:
	MMemory();

public: // Methoded
	bool used_directly() { return false; }
};

// global variables

DECLARE_CLASS_VAR(memory, new MMemory);

#undef GC_DEBUG
#ifdef GC_DEBUG
extern "C" GC_API void GC_print_backtrace(void *);
void *debug_print_backtrace=0;
#endif

static void _compact(Request& r, MethodParams&) {
	r.wipe_unused_execution_stack();
#ifndef PA_DEBUG_DISABLE_GC
	{
		int saved=GC_dont_gc;
		GC_dont_gc=0;
		GC_gcollect();
		GC_dont_gc=saved;
	}
#ifdef GC_DEBUG
	if(debug_print_backtrace)
		GC_print_backtrace(debug_print_backtrace);
#endif
#endif
	}

// constructor

MMemory::MMemory(): Methoded("memory") {
	// ^compact[]
	add_native_method("compact", Method::CT_STATIC, _compact, 0, 0);
}

E-mail: