/* src/mm/nogc.c - allocates memory through malloc (no GC)
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+ Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
J. Wenninger, Institut f. Computersprachen - TU Wien
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- Changes:
-
- $Id: nogc.c 5900 2006-11-04 17:30:44Z michi $
-
*/
#include "mm/gc-common.h"
#include "mm/memory.h"
+
#include "toolbox/logging.h"
-#include "vm/options.h"
+
#include "vm/builtin.h"
#include "vm/exceptions.h"
#include "vm/global.h"
-#include "vm/loader.h"
#include "vm/stringlocal.h"
+#include "vm/vm.h"
+
+#include "vmcore/loader.h"
+#include "vmcore/options.h"
/* global stuff ***************************************************************/
mmapptr = (void *) ((ptrint) mmapptr + size);
if (mmapptr > mmaptop)
- exceptions_throw_outofmemory_exit();
+ vm_abort("heap_allocate: out of memory");
MSET(m, 0, u1, size);
}
-void *nogc_realloc(void *src, s4 len1, s4 len2)
-{
- void *p;
-
- p = heap_allocate(len2, false, NULL);
-
- MCOPY(p, src, u1, len1);
-
- return p;
-}
-
-
void heap_free(void *p)
{
/* nop */
-void nogc_init(u4 heapmaxsize, u4 heapstartsize)
+void gc_init(u4 heapmaxsize, u4 heapstartsize)
{
heapmaxsize = MEMORY_ALIGN(heapmaxsize, ALIGNSIZE);
mmapptr = mmap((void *) MMAP_HEAPADDRESS,
(size_t) heapmaxsize,
PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS,
+ MAP_PRIVATE |
+# if defined(MAP_ANONYMOUS)
+ MAP_ANONYMOUS,
+# elif defined(MAP_ANON)
+ MAP_ANON,
+# else
+ 0,
+# endif
-1,
(off_t) 0);
if (mmapptr == MAP_FAILED)
- exceptions_throw_outofmemory_exit();
+ vm_abort("gc_init: out of memory");
mmapsize = heapmaxsize;
mmaptop = (void *) ((ptrint) mmapptr + mmapsize);
}
-void gc_init(u4 heapmaxsize, u4 heapstartsize)
-{
- /* nop */
-}
-
-
void gc_call(void)
{
log_text("GC call: nothing done...");
}
+s8 gc_get_total_bytes(void)
+{
+ return 0;
+}
+
+
s8 gc_get_max_heap_size(void)
{
return 0;