Tom Tromey [Tue, 1 Feb 2000 17:36:05 +0000 (17:36 +0000)]
jni.cc (_Jv_JNI_PopLocalFrame): Leave loop when `n == NULL'.
* jni.cc (_Jv_JNI_PopLocalFrame): Leave loop when `n == NULL'.
(_Jv_JNI_conversion_call): _Jv_JNI_PopLocalFrame will never leave
`locals == NULL'.
(wrap_value): New function.
(_Jv_JNI_CallAnyMethodV): Use it.
(_Jv_JNI_CallAnyMethodA): Likewise.
(_Jv_JNI_GetField): Use wrap_value; removed specialized version.
(_Jv_JNI_GetStaticField): Likewise.
Tom Tromey [Tue, 1 Feb 2000 06:14:26 +0000 (06:14 +0000)]
prims.cc (_Jv_MallocUnchecked): New function.
* prims.cc (_Jv_MallocUnchecked): New function.
(main_init): Call _Jv_JNI_Init.
* include/jvm.h (_Jv_MallocUnchecked): Declare.
(_Jv_JNI_Init): Declare.
* jni.cc: Include Hashtable.h, OutOfMemoryError.h, Integer.h,
<string.h>.
(_Jv_JNI_NewGlobalRef): New function.
(_Jv_JNI_DeleteGlobalRef): New function.
(_Jv_JNI_DeleteLocalRef): New function.
(_Jv_JNI_conversion_call): Initialize and clear local reference
frame.
(_Jv_JNI_NewLocalRef): New function.
(struct _Jv_JNI_LocalFrame): New structure.
(_Jv_JNI_PushLocalFrame): New function.
(_Jv_JNI_EnsureLocalCapacity): New function.
(FRAME_SIZE): New define.
(_Jv_JNI_GetStringChars): Mark string, not characters.
(_Jv_JNI_ReleaseStringChars): Unmark string, not characters.
(_Jv_JNI_GetPrimitiveArrayElements): Mark array, not elements.
(_Jv_JNI_ReleasePrimitiveArrayElements): Unmark array, not
elements.
(_Jv_JNI_DefineClass): Make return value a local ref.
(_Jv_JNI_FindClass): Likewise.
(_Jv_JNI_GetSuperclass): Likewise.
(_Jv_JNI_ExceptionOccurred): Likewise.
(_Jv_JNI_AllocObject): Likewise.
(_Jv_JNI_GetObjectClass): Likewise.
(_Jv_JNI_CallAnyMethodV): Likewise.
(_Jv_JNI_NewString): Likewise.
(_Jv_JNI_NewStringUTF): Likewise.
(_Jv_JNI_NewObjectArray): Likewise.
(_Jv_JNI_GetObjectArrayElement): Likewise.
(_Jv_JNI_ToReflectedField): Likewise.
(_Jv_JNI_ToReflectedMethod): Likewise.
(_Jv_JNIFunctions): Updated table for new functions.
(_Jv_JNI_Init): New function.
(mark_for_gc): Wrote.
(unmark_for_gc): Wrote.
* include/jni.h (struct JNINativeInterface): Removed name from
PopLocalFrame parameter.
(class _Jv_JNIEnv): Added `locals' field.
Jim Wilson [Tue, 1 Feb 2000 02:17:06 +0000 (02:17 +0000)]
Fix gdb testsuite regressions.
* class.c (build_vtbl_or_vbase_field): New parameter fcontext.
Store it in DECL_FCONTEXT.
(build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
Chandra Chavva [Mon, 31 Jan 2000 22:23:43 +0000 (22:23 +0000)]
combine.c (try_combine): Trying to check the missed case 3->2 combining (combining with splitting) in...
* combine.c (try_combine) [HAVE_cc0]: Trying to check the missed
case 3->2 combining (combining with splitting) in which 2 is CC0
setter/user and 3 is user. The rest of cases 2->1 and 3->2 are
checked at the begining of the function with the aid of calling
function 'can_combine_p'.
Mark Mitchell [Mon, 31 Jan 2000 21:00:01 +0000 (21:00 +0000)]
cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
* cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
(CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
(BINFO_PRIMARY_BINFO): New macro.
(BF_DELTA): Rename to ...
(BV_DELTA): ... this.
(BF_VCALL_INDEX): Rename to ...
(BV_VCALL_INDEX): ... this.
(BF_FN): Rename to ...
(BV_FN): ... this.
* class.c (build_vbase_path): Adjust for changes to reverse_path.
(set_rtti_entry): Rename BF_ macros to BV_ variants.
(modify_vtable_entry): Simplify.
(add_virtual_function): Rename BF_ macros to BV_ variants.
(build_vtable_initializer): Likewise.
(get_class_offset_1): Remove.
(dfs_get_class_offset): Likewise.
(get_class_offset): Likewise.
(dfs_find_final_overrider): New function.
(find_final_overrider): Likewise.
(modify_one_vtable): Remove.
(dfs_find_base): New function.
(dfs_modify_vtables): Fold modify_one_vtable in here. Use
find_final_overrider.
(modify_all_vtables): Adjust. Set BV_VCALL_INDEX on new
virtuals.
(dfs_fixup_vtable_deltas): Remove.
(override_one_vtable): Remove.
(merge_overrides): Likewise.
(layout_virtual_bases): Make sure BINFO_OFFSET is set right for
unreal chilren of virtual bases.
(finish_struct_1): Don't use merge_overrides. Don't use
dfs_fixup_vtable_deltas.
* tree.c (reverse_path): Return a TREE_LIST, not a chain of
BINFOs.
Nathan Sidwell [Mon, 31 Jan 2000 10:21:47 +0000 (10:21 +0000)]
cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
* cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
Runtime support for new-abi rtti.
* inc/typeinfo (type_info::operator!=): Define in class.
(type_info::before, type_info::name, type_info::operator==,
type_info::operator!=): Define new ABI implementations.
(type_info::is_pointer_p, type_info::is_function_p): Declare
new virtual functions.
(type_info::do_catch, type_info::do_upcast): Likewise.
Mark Mitchell [Mon, 31 Jan 2000 04:03:01 +0000 (04:03 +0000)]
class.c (build_vtable): Rename to build_primary_vtable.
* cp/class.c (build_vtable): Rename to build_primary_vtable.
(prepare_fresh_vtable): Rename to build_secondary_vtable.
(make_new_vtable): New function.
(modify_vtable_entry): Handle generation of new vtables correctly.
(modify_one_vtable): Remove unused parameter.
(dfs_fixup_vtable_deltas): Likewise.
(override_one_vtable): Use build_secondary_vtable.
(finish_struct_1): Use build_primary_vtable and
build_secondary_vtable.
Zack Weinberg [Sun, 30 Jan 2000 18:09:07 +0000 (18:09 +0000)]
cppfiles.c (find_position): Drop 'colp' argument, return the new line base.
* cppfiles.c (find_position): Drop 'colp' argument, return the
new line base.
(read_and_prescan): Adjust to match. Don't ever manipulate
line or line_base except via find_position.
Zack Weinberg [Sun, 30 Jan 2000 03:31:59 +0000 (03:31 +0000)]
cpperror.c (cpp_file_line_for_message): If 'line' is zero, just print "<command line>".
* cpperror.c (cpp_file_line_for_message): If 'line' is zero,
just print "<command line>". If 'filename' is null or an
empty string, print "<stdin>" for the filename.
* cpplib.c (do_define): Don't print the 'location of the
previous definition' message if we're still parsing the
command line.
(cpp_pedwarn_with_file_and_line): Always call
cpp_file_line_for_message.
c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
* c4x.c: Define the optab rtx values.
(c4x_add_gc_roots): Add the ggc roots for these optab rtx values.
(c4x_emit_libcall): Use new optab rtx values.
(c4x_emit_libcall3): Likewise.
(c4x_emit_libcall_mulhi): Likewise.
* c4x-protos.h: Add prototypes for optab rtx values and change
prototypes for above c4x_emit_libcall functions.
c4x.c (c4x_output_ascii): Restrict line length of output when TI syntax is used.
2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.c (c4x_output_ascii): Restrict line length of output when TI
syntax is used.
(c4x_function_prologue): Use regnames intead of float_reg_names when
TI syntax is used.
(c4x_function_epilogue): Likewise.
(c4x_print_operand): Likewise.
* c4x.h (HOST_WIDE_INT_PRINT_HEX): Redefine.
* c4x.md (set_high): Disable for TARGET_TI.
c4x.h (PREFERRED_RELOAD_CLASS): Change to restrict the reloading of framepointer + constant to ADDR_REGS class.
2000-01-27 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.h (PREFERRED_RELOAD_CLASS): Change to restrict the reloading
of framepointer + constant to ADDR_REGS class.
* c4x.md (addqi3, addqi3_noclobber_reload): Update.
* c4x.c (std_or_reg_operand): New function.
* c4x-protos.h (std_or_reg_operand): Prototype it.
Jason Eckhardt [Sat, 29 Jan 2000 01:41:22 +0000 (01:41 +0000)]
[multiple changes]
Fri Jan 7 19:48:04 CET 2000 Jan Hubicka <jh@suse.cz>
* sbitmap.c (sbitmap_first_set_bit, sbitmap_last_set_bit): New
function.
* sbitmap.h (sbitmap_first_set_bit, sbitmap_last_set_bit): Declare.
* basic_block.h (FLOW_LOOP_FIRST_BLOCK): New macro.
(FLOW_LOOP_LAST_BLOCK): Likewise.
2000-01-21 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* basic-block.h (struct loop): New fields 'first' and 'last'.
* flow.c (flow_loops_find): Compute loop->first and loop->last.
(flow_loops_dump): Use loop->first to check for NOTE_INSN_LOOP_BEG
and loop->last to check for NOTE_INSN_LOOP_END.
Fri Jan 28 10:57:58 2000 Jason Eckhardt <jle@cygnus.com>
* predict.c (estimate_probability): Use the new FIRST and LAST fields
of the loop descriptor rather than HEADER and LATCH. Also added
missing break statements as well making some coding style modifications
as suggested by Michael Hayes.
* flow.c (find_basic_blocks): Remove do_cleanup argument.
Break out that code ...
(cleanup_cfg): ... here.
(commit_one_edge_insertion): Detect a return instruction being
emitted to an edge. Emit a barrier following; clear fallthru.
(commit_edge_insertions): Verify CFG consistency.
* function.c (expand_function_start): Kill unused variable.
(expand_function_end): Likewise.
(thread_prologue_and_epilogue_insns): Use insert_insn_on_edge
to insert the epilogue.
* gcse.c (gcse_main): Adjust for find_basic_blocks change.
(delete_null_pointer_checks): Likewise.
* output.h: Likewise.
* reg-stack.c (reg_to_stack): Likewise.
* toplev.c (rest_of_compilation): Likewise. Run
thread_prologue_and_epilogue_insns after rebuilding the CFG.
Zack Weinberg [Thu, 27 Jan 2000 22:29:07 +0000 (22:29 +0000)]
cppinit.c (cpp_handle_option): Recognize C++ comments under -std=gnu89.
* cppinit.c (cpp_handle_option): Recognize C++ comments under
-std=gnu89.
* cpplib.c (skip_block_comment, skip_line_comment): Split code
out of...
(skip_comment) ... here. Permit C++ comments in system
headers always. Warn about C++ comments in user code under
-std=gnu89 -pedantic.
(copy_comment): Use skip_comment.
(cpp_skip_hspace, cpp_get_token): skip_comment can no longer
return EOF.
(consider_directive_while_skipping, do_else, do_endif): Call
validate_else unconditionally.
(validate_else): Check CPP_PEDANTIC here. Accept non-comment
text after the conditional in a system header.
* cpplib.h (struct cpp_buffer): Add flag
warned_cplusplus_comments.
* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
Use unshare_all_rtl_1.
(unshare_all_rtl_again): New function.
(unshare_all_rtl_1): New function split out of unshare_all_rtl.
* function.c (purge_addressof_1): Use unshare_all_rtl_again
rather than resetting the 'used' flags ourself.
* toplev.c (rest_of_compilation): Add current_function_decl
to the unshare_all_rtl call.
* tree.h: Prototype unshare_all_rtl.
* rtl.h: Prototype unshare_all_rtl_again here.
alpha.c (alpha_emit_conditional_move): Use VOIDmode when testing for a signed comparison.
* alpha.c (alpha_emit_conditional_move): Use VOIDmode when
testing for a signed comparison.
(alpha_emit_floatuns): New.
* alpha-protos.h: Declare it.
* alpha.md (floatunsdisf2, floatunsdidf2): New.
(extendsfdf2): Tidy.
Tom Tromey [Wed, 26 Jan 2000 23:56:36 +0000 (23:56 +0000)]
method.h (JvNumMethods): Moved from Class.h.
* gcj/method.h (JvNumMethods): Moved from Class.h.
(JvGetFirstMethod): Likewise.
* java/lang/Class.h (Object): Updated decl of
_Jv_JNI_ToReflectedField.
(Object): Added _Jv_JNI_ToReflectedMethod as a friend.
* Makefile.in: Rebuilt.
* Makefile.am (java/lang/reflect/Field.h): Added `jboolean'
argument of _Jv_JNI_ToReflectedField.
(java/lang/reflect/Constructor.h): Added _Jv_JNI_ToReflectedMethod
as a friend.
(java/lang/reflect/Method.h): Likewise.
* include/jni.h (class _Jv_JNIEnv): Added `klass' member. Use
__GCJ_JNI_IMPL__.
(jweak): New typedef.
(struct JNINativeInterface): Correctly declare remaining entries.
* jni.cc: Include Class.h, ClassLoader.h.
(_Jv_JNI_FindClass): New function.
(_Jv_JNI_DefineClass): New function.
(_Jv_JNI_conversion_call): New function.
(_Jv_JNI_FindClass): Use current class loader to find class.
(_Jv_JNI_ExceptionCheck): New function.
(_Jv_JNI_FromReflectedField): Now static.
(MethodClass): New define.
(_Jv_JNI_FromReflectedMethod): New function.
(_Jv_JNI_ToReflectedMethod): Likewise.
Include Method.h.
(_Jv_JNI_IsAssignableFrom): Renamed.
(_Jv_JNI_GetStringRegion): New function.
Include StringIndexOutOfBoundsException.h.
(_Jv_JNI_GetStringUTFRegion): New function.
(_Jv_JNIFunctions): Updated for new functions.
(_Jv_JNI_GetPrimitiveArrayCritical): New function
(_Jv_JNI_ReleasePrimitiveArrayCritical): Likewise.
(_Jv_JNI_GetStringCritical): New function.
(_Jv_JNI_ReleaseStringCritical): Likewise.
(get_throwable): Removed.
(GCJ_JV_JNIENV_FRIEND): Removed.
(__GCJ_JNI_IMPL__): Define.
Include method.h.
Joern Rennecke [Wed, 26 Jan 2000 23:38:20 +0000 (23:38 +0000)]
calls.c (special_function_p): New argument fork_or_exec.
* calls.c (special_function_p): New argument fork_or_exec.
(expand_call): When profile_arc_flag is set and the function
is in the fork_or_exec group, call __bb_fork_func first.
* libgcc2.c, _bb module (__bb_fork_func): New function.
(__bb_exit_func): If fcntl F_SETLKW is available, use it to lock
output file.
* config/svr4.h (TARGET_HAS_F_SETLKW): Define.
* tree.h (special_function_p): Update prototype.
J"orn Rennecke [Wed, 26 Jan 2000 22:27:31 +0000 (22:27 +0000)]
calls.c (special_function_p): New argument fork_or_exec.
gcc:
* calls.c (special_function_p): New argument fork_or_exec.
(expand_call): When profile_arc_flag is set and the function
is in the fork_or_exec group, call __bb_fork_func first.
* libgcc2.c, _bb module (__bb_fork_func): New function.
(__bb_exit_func): If fcntl F_SETLKW is available, use it to lock
output file.
* config/svr4.h (TARGET_HAS_F_SETLKW): Define.
* tree.h (special_function_p): Update prototype.
gcc/cp:
* cp/optimize.c (calls_setjmp_r): Supply new argument
to special_function_p.
* config/sparc/sparc.c (sparc_emit_float_lib_cmp): Handle
TARGET_ARCH32 again. Handle ORDERED, UN* and LTGT comparisons
using _Qp_cmp/_Q_cmp and testing the return value.
(print_operand): Call reverse_condition_maybe_unordered if
we are handling CCFPmode or CCFPEmode.
Handle ORDERED, UN* and LTGT comparisons.
* config/sparc/sparc.md (cmptf): Use even on TARGET_ARCH32
if not TARGET_HARD_QUAD.
(seq, sne, sgt, slt, sge, sle, beq, bne, bgt, blt, bge, ble,
bunordered, bordered, bungt, bunlt, buneq, bunge, bunle, bltgt):
Call sparc_emit_float_lib_cmp even on TARGET_ARCH32.
Adjust gen_b* calls so that they reflect return comparison of
sparc_emit_float_lib_cmp.