PR libgcj/26063, PR libgcj/17978, PR libgcj/10598:
* defineclass.cc (parse): Use _Jv_AllocRawObj. (read_constpool): Likewise. (read_one_code_attribute): Use internal function name. (handleConstantPool): Use _Jv_AllocRawObj. (handleInterfacesBegin): Likewise. (handleFieldsBegin): Likewise. (handleMethodsBegin): Likewise. (handleCodeAttribute): Likewise. (handleMethodsEnd): Likewise. * include/jvm.h (new_vtable): Use _Jv_AllocRawObj. * interpret.cc (do_allocate_static_fields): Use _Jv_AllocRawObj. Allocate reference fields separately. * link.cc (prepare_constant_time_tables): Use _Jv_AllocRawObj. (add_miranda_methods): Likewise. (generate_itable): Use _Jv_AllocBytes. (find_iindex): Likewise. (struct method_closure): New structure. (create_error_method): Use struct method_closure; allocate with _Jv_AllocBytes. (ensure_fields_laid_out): Separate reference fields from non-reference fields. * boehm.cc (_Jv_MarkObj): Mark vtable. Only mark direct fields of Class. (_Jv_MarkArray): Mark vtable. (_Jv_AllocRawObj): Don't allocate objects of size 0. * include/execution.h (_Jv_ExecutionEngine::allocate_static_fields): Added 'int' parameter. (struct _Jv_CompiledEngine): Updated. (class _Jv_InterpreterEngine): Updated. From-SVN: r110763
This commit is contained in:
parent
b5642e2029
commit
8b1753e3ec
7 changed files with 155 additions and 259 deletions
|
@ -1,6 +1,6 @@
|
|||
// jvm.h - Header file for private implementation information. -*- c++ -*-
|
||||
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
|
@ -72,6 +72,7 @@ struct _Jv_VTable
|
|||
{
|
||||
return (2 * sizeof (void *)) + (index * vtable_elt_size ());
|
||||
}
|
||||
|
||||
static _Jv_VTable *new_vtable (int count);
|
||||
};
|
||||
|
||||
|
@ -374,16 +375,12 @@ void _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
|
|||
void _Jv_RunMain (struct _Jv_VMInitArgs *vm_args, jclass klass,
|
||||
const char *name, int argc, const char **argv, bool is_jar);
|
||||
|
||||
// Delayed until after _Jv_AllocBytes is declared.
|
||||
//
|
||||
// Note that we allocate this as unscanned memory -- the vtables
|
||||
// are handled specially by the GC.
|
||||
|
||||
// Delayed until after _Jv_AllocRawObj is declared.
|
||||
inline _Jv_VTable *
|
||||
_Jv_VTable::new_vtable (int count)
|
||||
{
|
||||
size_t size = sizeof(_Jv_VTable) + (count - 1) * vtable_elt_size ();
|
||||
return (_Jv_VTable *) _Jv_AllocBytes (size);
|
||||
return (_Jv_VTable *) _Jv_AllocRawObj (size);
|
||||
}
|
||||
|
||||
// Determine if METH gets an entry in a VTable.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue