2003-09-12 Andrew Haley <aph@redhat.com>
* java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
(struct lang_decl_var:freed): New variable.
* decl.c (poplevel): Mark local vars that have gone out of scope.
(push_jvm_slot): Don't use the RTL of a var that has gone out of
scope.
From-SVN: r73675
2003-10-22 Andrew Haley <aph@redhat.com>
* lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
(java_get_callee_fndecl): New.
* jcf-parse.c (java_parse_file): Call emit_catch_table().
* java-tree.h (ctable_decl): New.
(catch_classes): New.
(java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
* decl.c (java_init_decl_processing): Add catch_class_type.
Add ctable_decl.
Add catch_classes field.
* class.c (build_indirect_class_ref): Break out from
build_class_ref.
(make_field_value): Check flag_indirect_dispatch.
(make_class_data): Ditto.
Tidy uses of PUSH_FIELD_VALUE.
Add field catch_classes.
(make_catch_class_record): New.
* java-tree.h (PUSH_FIELD_VALUE): Tidy.
2003-10-22 Andrew Haley <aph@redhat.com>
* java/lang/natClass.cc (initializeClass): Call
_Jv_linkExceptionClassTable.
(_Jv_LinkSymbolTable): Call )_Jv_ThrowNoSuchMethodError. Call
_Jv_Defer_Resolution on a method whose ncode is NULL.
(_Jv_linkExceptionClassTable): New function.
(_Jv_LayoutVTableMethods): If superclass looks like a constant pool
entry, look it up.
* java/lang/Class.h (struct _Jv_CatchClass): New.
(_Jv_linkExceptionClassTable): New friend.
(_Jv_Defer_Resolution): New friend.
(class Class.catch_classes): New field.
* include/java-interp.h (Jv_Defer_Resolution): New method.
(_Jv_PrepareClass): Make a friend of _Jv_MethodBase.
(_Jv_MethodBase.deferred): New field.
(_Jv_Defer_Resolution): New function.
* resolve.cc (_Jv_PrepareClass): Resolve deferred handlers.
* exception.cc (get_ttype_entry): Change return type to void**.
(PERSONALITY_FUNCTION): Remove all code related to using a
Utf8Const* for a match type. Change match type to be a pointer to
a pointer, rather than a pointer to a Class.
* defineclass.cc (handleCodeAttribute): Initialize
method->deferred.
(handleMethodsEnd): Likewise.
From-SVN: r72886
2003-10-01 Andrew Haley <aph@redhat.com>
* jcf-parse.c (java_parse_file): Write otable and atable.
* java-tree.h (atable_methods): New.
(atable_decl): New.
(atable_syms_decl): New.
(enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
JTI_ATABLE_SYMS_DECL. Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
(symbol_*type): Rename method_symbol* to symbol*type.
(emit_offset_symbol_table): Delete.
(emit_symbol_table): New.
(get_symbol_table_index): New.
(atable_type): New.
* expr.c (build_field_ref): Handle flag_indirect_dispatch.
(build_known_method_ref): Likewise.
(get_symbol_table_index): Rename from get_offset_table_index.
Parameterize to allow re-use by differing types of symbol table.
(build_invokevirtual): Pass table to get_offset_table_index.
* decl.c (java_init_decl_processing): Push types and decls for
atable and atable_syyms.
* class.c (build_static_field_ref): Handle flag_indirect_dispatch.
(make_class_data): Add new fields atable and atable_syms.
(emit_symbol_table): Rename from emit_offset_symbol_table.
Parameterize to allow re-use by different types of symbol table.
(build_symbol_entry): Renamed from build_method_symbols_entry.
2003-10-01 Andrew Haley <aph@redhat.com>
* java/lang/natClass.cc (initializeClass): Check for otable and
atable.
(_Jv_LinkOffsetTable): Check for existence of atable. Rewrite
loops using for(). Search superinterfaces. Check for fields as
well as methods. Initialize atable as well as otable: check for
static methods as well as virtual methods.
* java/lang/Class.h (struct _Jv_AddressTable): New.
(atable): New.
(atable_syms): New.
* include/jvm.h (_Jv_equalUtf8Consts): constify.
* prims.cc (_Jv_equalUtf8Consts): constify.
From-SVN: r71979
* c-decl.c (duplicate_decls): Copy DECL_SOURCE_LOCATION, not
file and line separately.
f/
* com.c (duplicate_decls): Copy DECL_SOURCE_LOCATION, not
file and line separately.
java/
* check-init.c (check_init): Save and restore input_location
instead of file and line separately.
* decl.c (java_expand_body): Likewise.
* jcf-write.c (generate_bytecode_insns): Likewise.
* parse.y (safe_layout_class): Likewise.
* jcf-parse.c (read_class, parse_class_file): Likewise.
(java_parse_file): Use %H for warning locator.
From-SVN: r71886
* builtins.def (DEF_LIB_ALWAYS_BUILTIN, DEF_UNUSED_BUILTIN): Delete.
(abs, labs, fabs, fabsf, fabsl, abort, exit, _exit, _Exit): Use
the appropriate macro to define built-in function.
(fmod,fmodf,fmodl): New built-in functions.
* java/decl.c (java_init_decl_processing): Get soft_fmod_node from
built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.
* doc/extend.texi (fmod,fmodf,fmodl): Document new built-ins.
From-SVN: r63445
2003-02-12 Ranjit Mathew <rmathew@hotmail.com>
* decl.c (java_init_decl_processing): Change
soft_lookupjnimethod_node to reflect the change in
signature of _Jv_LookupJNIMethod in libjava/jni.cc
* expr.c (build_jni_stub): Calculate and pass the size
on the stack of the arguments to a JNI function. Use
new target macro MODIFY_JNI_METHOD_CALL to allow a
target to modify the call to a JNI method.
From-SVN: r62795
* gcj.texi (Input and output files): Mention non-class entries.
* decl.c (java_init_decl_processing): Call
init_resource_processing.
* java-tree.h (compile_resource_data, write_resource_constructor,
compile_resource_file, init_resource_processing): Declare.
* config-lang.in (gtfiles): Added resource.c.
* Make-lang.in (gt-java-resource.h): New target.
(JAVA_OBJS): Added resource.o.
(java/resource.o): New target.
* resource.c: New file.
* class.c (compile_resource_file): Moved to resource.c.
(registerResource_libfunc): Likewise.
(utf8_decl_list): Mark with GTY; now static.
* jcf-parse.c (classify_zip_file): New function.
(parse_zip_file_entries): Use it; compile .properties files.
(process_zip_dir): Use classify_zip_file and compute_class_name.
Don't write class name into zip directory.
(java_parse_file): Call write_resource_constructor.
(compute_class_name): New function.
* jcf-io.c (read_zip_member): Reindented.
From-SVN: r61614
2003-01-14 Andrew Haley <aph@redhat.com>
* decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
varargs function -- correct.
* parse.y (patch_assignment): Copy the rhs of an assignment into a
temporary if the RHS is a reference.
2003-01-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
* keyword.h: Regenerated.
* All Files: Convert to ISO C style function definitions.
From-SVN: r61281
2002-12-03 Andrew Haley <aph@redhat.com>
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Call
_Jv_PushClass.
(_Jv_InitNewClassFields): Set protectionDomain and chain = NULL.
(_Jv_PopClass): New.
(_Jv_PushClass): New.
* java/lang/natClass.cc (forName (jstring)): Use a StackTrace to
discover the ClassLoader of our caller.
(_Jv_CheckArrayStore): Don't check that a class is assignment
compatible with Object.
* java/lang/natVMTHrowable.cc: Delete.
* gnu/gcj/runtime/StackTrace.java: New, partly copied from
java.lang.VMThrowable.
(StackTrace(), StackTrace(int)): New constructors.
(classAt, methodAt, update, methodAtAddress): New methods.
(map): New field.
* java/lang/VMThrowable.java: Use StackTrace instead of
natVMTHrowable.
* java/lang/Class.h (getClassLoaderInternal): New.
(class Class): Be friendly with _Jv_PopClass and _Jv_PushClass.
Be friendly with gnu::gcj::runtime::StackTrace.
(Object.chain): New field.
* include/java-interp.h (class _Jv_InterpMethod): Be friendly with
gnu::gcj::runtime::StackTrace.
* prims.cc (_Jv_NewObjectArray): Use getClassLoaderInternal()
instead of getClassLoader().
* verify.cc (class _Jv_BytecodeVerifier): Likewise.
java::lang::VMThrowable.
* Makefile.am (core_java_source_files): Add MethodRef.java,
StackTrace.java.
(nat_source_files): Remove natVMThrowable.cc; add natStackTrace.cc.
* Makefile.in: Rebuild.
2002-12-03 Andrew Haley <aph@redhat.com>
* class.c (make_class_data): New field, "chain".
* decl.c (java_init_decl_processing): Likewise.
From-SVN: r59769
2002-07-30 Andrew Haley <aph@cambridge.redhat.com>
* Make-lang.in (java-tree-inline.o): New.
(JAVA_OBJS): Add java-tree-inline.o.
* parse.y (source_end_java_method): Call java_optimize_inline.
(java_expand_method_bodies): Save method's tree in
DECL_SAVED_TREE.
(add_stmt_to_compound): Keep track of the number of statments.
* lang.c (java_init): Enable flag_inline_trees.
(java_post_options): If flag_inline_functions is on, enable
flag_inline_trees instread.
(decl_constant_value): New.
(java_tree_inlining_walk_subtrees): New.
* java-tree.h (DECL_NUM_STMTS): New macro.
(java_optimize_inline): Declare.
* expr.c (java_expand_expr): Allow a BLOCK to return a value.
Handle a LABEL_EXPR.
* decl.c (build_result_decl): If we already have a DECL_RESULT
don't make another.
(dump_function): New.
(java_optimize_inline): New.
(dump_function): New.
From-SVN: r56377
* tree.h: Forward-declare struct realvaluetype.
(struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not
contain it.
(TREE_REAL_CST_PTR): New accessor.
(TREE_REAL_CST): Update.
* real.h: Include machmode.h.
(realvaluetype): Make it struct realvaluetype, not a typedef.
(build_real): Prototype here.
* tree.c: Include real.h.
(build_real): Allocate the REAL_VALUE_TYPE as a separate
object in GC memory, set TREE_REAL_CST_PTR to point to it.
(build_real_from_int_cst): Use build_real.
* ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a
REAL_CST.
* builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c,
fold-const.c, print-tree.c, real.c, cp/mangle.c, cp/tree.c,
f/bld.c, f/com.c, f/expr.c, f/target.c, java/decl.c,
java/jcf-parse.c, java/parse.y, java/typeck.c: Include real.h.
* Makefile.in, cp/Make-lang.in, f/Make-lang.in,
java/Make-lang.in: Update dependency lists.
From-SVN: r53959
* class.c (make_class_data): Set DECL_ALIGN on static class data,
for hash synchronization.
* expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
* decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
class_type_node.
From-SVN: r52448