Annotation of parser3/src/classes/memory.C, revision 1.22
1.2 paf 1: /** @file
2: Parser: @b memory parser class.
3:
1.22 ! moko 4: Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com)
1.20 moko 5: Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.2 paf 6: */
7:
8: #include "pa_common.h"
9: #include "pa_vmemory.h"
10: #include "pa_request.h"
1.19 moko 11: #include "pa_vmethod_frame.h"
1.2 paf 12:
1.22 ! moko 13: volatile const char * IDENT_MEMORY_C="$Id: memory.C,v 1.21 2024/11/04 03:53:25 moko Exp $" IDENT_PA_VMEMORY_H;
1.9 moko 14:
1.2 paf 15: class MMemory: public Methoded {
16: public:
17: MMemory();
18:
19: public: // Methoded
20: bool used_directly() { return false; }
21: };
22:
23: // global variables
24:
1.11 moko 25: DECLARE_CLASS_VAR(memory, new MMemory);
1.2 paf 26:
1.4 paf 27: static void _compact(Request& r, MethodParams&) {
1.2 paf 28: r.wipe_unused_execution_stack();
1.19 moko 29: pa_gc_collect(true);
30: }
31:
32: static void _auto_compact(Request& r, MethodParams& params) {
33: int divisor = params.as_int(0, "frequency must be int", r);
34: if(divisor<0 || divisor>5)
35: throw Exception(PARSER_RUNTIME, 0, "frequency '%d' is out of range 0..5", divisor);
36: pa_gc_set_free_space_divisor(divisor);
1.13 moko 37: }
1.2 paf 38:
39: // constructor
40:
41: MMemory::MMemory(): Methoded("memory") {
42: // ^compact[]
43: add_native_method("compact", Method::CT_STATIC, _compact, 0, 0);
1.19 moko 44: // ^auto-compact(N)
45: add_native_method("auto-compact", Method::CT_STATIC, _auto_compact, 1, 1);
1.2 paf 46: }
E-mail: