* libjava/prims.cc: Some old cleanups. The collector now
handles test for out of memory.
* libjava/prims.cc, libjava/gcj/javaprims.h:
(_Jv_AllocObjectNoInitNoFinalizer, _Jv_AllocObjectNoFinalizer):
New functions for finalizer-free allocation.
(jvmpi_notify_alloc): Became separate function.
* libjava/java/lang/Object.h, libjava/include/jvm.h: Adjust for
revised vtable layout on IA64. With TARGET_VTABLE_USES_DESCRIPTORS,
there is only one extra descriptor.
From-SVN: r48002
* resolve.cc (_Jv_PrepareClass): Verify method here...
* defineclass.cc (handleMethodsEnd): ... not here.
* verify.cc (_Jv_BytecodeVerifier::initialize_stack): New method.
(_Jv_BytecodeVerifier::verify_instructions_0) [op_return]: Ensure
there are no uninitialized objects.
(_Jv_BytecodeVerifier::state::this_type): New field.
(_Jv_BytecodeVerifier::state::state): Initialize this_type.
(_Jv_BytecodeVerifier::state::copy): Copy this_type.
(_Jv_BytecodeVerifier::state::merge): Merge this_type.
(_Jv_BytecodeVerifier::state::check_no_uninitialized_objects):
Handle this_type.
(_Jv_BytecodeVerifier::state::check_this_initialized): New
method.
(_Jv_BytecodeVerifier::state::set_initialized): Handle this_type.
(_Jv_BytecodeVerifier::state::set_this_type): New method.
(_Jv_BytecodeVerifier::verify_instructions_0) [op_putfield]: Allow
assignment to fields of `this' before another initializer is run.
From-SVN: r47826
* Makefile.in: Rebuilt.
* Makefile.am (java/lang/reflect/Method.h): ObjectInputStream now
a friend.
* java/lang/natClass.cc (getSignature): Only look at elements of
non-null parameters.
(getPrivateMethod): Removed old FIXME comment.
* java/io/natObjectInputStream.cc (allocateObject): Removed old
FIXME comment.
(callConstructor): Simply use `NULL' for value of parameters.
(ObjectClass): Removed.
(ClassClass): Likewise.
* java/io/ObjectInputStream.java (readObject): Fixed typo.
From-SVN: r47800
* verify.cc (_Jv_BytecodeVerifier::type_val): Added
unused_by_subroutine_type.
(_Jv_BytecodeVerifier::type::merge): Handle
unused_by_subroutine_type.
(_Jv_BytecodeVerifier::state::state): Added `ret_semantics'
argument.
(_Jv_BytecodeVerifier::state::copy): Likewise.
(_Jv_BytecodeVerifier::push_jump_merge): Pass `ret_semantics' to
state constructor.
(_Jv_BytecodeVerifier::state::is_unmerged_ret_state): New method.
(_Jv_BytecodeVerifier::pop_jump): Don't accept a jump which is
from an unmerged ret.
(_Jv_BytecodeVerifier::verify_instructions_0): Don't let an
unmerged ret state skip verification in the fall-through case.
(debug_print): New function.
(_Jv_BytecodeVerifier::type::print): New method.
(_Jv_BytecodeVerifier::state::print): New method.
(_Jv_BytecodeVerifier::push_jump_merge): Print state.
(_Jv_BytecodeVerifier::verify_instructions_0): Likewise.
(_Jv_BytecodeVerifier::get_variable): Don't call note_variable.
(_Jv_BytecodeVerifier::_Jv_BytecodeVerifier): Print debug
information.
From-SVN: r47734
* verify.cc (_Jv_BytecodeVerifier::linked_utf8): New structure.
(_Jv_BytecodeVerifier::utf8_list): New field.
(_Jv_BytecodeVerifier::_Jv_BytecodeVerifier): Initialize it.
(_Jv_BytecodeVerifier::~_Jv_BytecodeVerifier): Free it.
(_Jv_BytecodeVerifier::make_utf8_const): New method.
(_Jv_BytecodeVerifier::get_one_type): Use it.
(_Jv_BytecodeVerifier::type::merge): When using local semantics,
if the destination type is already unsuitable then we didn't
change.
From-SVN: r47634
* defineclass.cc (read_one_method_attribute): `end_pc' for an
exception can be equal to code length.
* verify.cc (_Jv_BytecodeVerifier::verify_instructions_0): Removed
`start_PC' from error invocation where it didn't make sense, and
updated error message. Use `copy' to copy a state. Only try to
merge current state with saved state when we've fallen through
from the previous instruction.
(_Jv_BytecodeVerifier::pop_ref_or_return): New method.
(_Jv_BytecodeVerifier::verify_instructions_0) [op_astore_0]: Use
pop_ref_or_return.
(_Jv_BytecodeVerifier::verify_instructions_0) [op_astore]:
Likewise.
(_Jv_BytecodeVerifier::push_jump_merge): Pass max_locals, not
max_stack, to merge.
(_Jv_BytecodeVerifier::verify_instructions_0): Likewise.
(_Jv_BytecodeVerifier::push_jump_merge): Merge from new state into
state at branch target, not vice versa.
(_Jv_BytecodeVerifier::branch_prepass): Allow end of exception to
be equal to code length. Removed redundant test to see if
exception start is after exception end.
(_Jv_BytecodeVerifier::verify_instructions_0): Type of argument to
`finally' is Throwable.
From-SVN: r47623
* Makefile.am (nat_headers, x_nat_headers): Depend on .class files, not
libgcj.jar.
(nat_files, x_nat_files): Build native files in subdirectories using
the same dependency options as the java files.
(gnu/gcj/runtime/FirstThread.h): Remove explicit rule and friend
declarations.
* configure.in: Put dependencies for .cc files in deps.mak.
* Makefile.in: Rebuilt.
* configure: Rebuilt.
From-SVN: r47471
* verify.cc (_Jv_BytecodeVerifier::branch_prepass): Use
java_opcode as type for switch.
[op_wide]: Likewise.
(_Jv_BytecodeVerifier::verify_instructions_0): Likewise.
[op_invokevirtual]: Likewise.
* include/java-insns.h (java_opcode): Give enum a name.
From-SVN: r47330
* verify.cc (_Jv_BytecodeVerifier::branch_prepass) [op_iinc]:
Uses two operand bytes, not one.
[op_arraylength]: Has no operands in bytecode.
(_Jv_BytecodeVerifier::push_jump): Fixed call to
check_no_uninitialized_objects.
(_Jv_BytecodeVerifier::push_exception_jump): Likewise.
(_Jv_BytecodeVerifier::handle_ret_insn): Likewise.
(_Jv_BytecodeVerifier::handle_jsr_insn): Likewise.
From-SVN: r47202
* verify.cc (_Jv_BytecodeVerifier::require_array_type): Special
case for boolean arrays.
* verify.cc (_Jv_BytecodeVerifier::compute_jump): Put PC into
error message.
From-SVN: r47190
* verify.cc: Include StringBuffer.h.
(verify_fail): Added pc argument. Use StringBuffer to construct
exception message.
(_Jv_BytecodeVerifier::verify_instructions_0): Put PC into error
message.
(_Jv_BytecodeVerifier::check_return_type): Likewise.
(_Jv_BytecodeVerifier::handle_field_or_method): Likewise.
(_Jv_BytecodeVerifier::check_constant): Likewise.
(_Jv_BytecodeVerifier::check_class_constant): Likewise.
(_Jv_BytecodeVerifier::check_pool_index): Likewise.
(_Jv_BytecodeVerifier::get_variable): Likewise.
(_Jv_BytecodeVerifier::branch_prepass): Likewise. Also, correctly
check exception handler endpoint.
(_Jv_BytecodeVerifier::verify_instructions_0): Correctly handle
wide arguments to current method.
(_Jv_BytecodeVerifier::check_wide_constant): New method.
(_Jv_BytecodeVerifier::verify_instructions_0) [op_ldc2_w]: Use
it.
From-SVN: r47155
* verify.cc (_Jv_BytecodeVerifier::is_assignable_from_slow): New
method.
(type::compatible): Use it.
(type::merge): Likewise.
(type::promote): Return a `type&'.
(get_one_type): Promote return value.
From-SVN: r47097
* java/lang/Integer.java (getInteger): Attempt to decode the value
of the system property instead of the name of the system property.
(parseInt): Throw NumberFormatException explicitly in the case of
a null argument in keeping with JDK 1.3.
From-SVN: r47095
* java/util/Timer.java (TaskQueue.isStopped): Remove method.
(Scheduler.run): Try to re-schedule task and ignore exception if
queue has been stopped.
From-SVN: r47093
* java/lang/reflect/Modifier.java: Reindented.
(toString): Only trim trailing space if text was added to
StringBuffer.
* java/lang/reflect/ReflectPermission: Reindented.
From-SVN: r47028
* java/lang/Double.java (parseDouble): Fixed ordering of
modifiers.
* java/lang/reflect/AccessibleObject.java: Javadoc, reindented.
* java/lang/reflect/Member.java: Reindented.
* java/lang/reflect/Modifier.java: Reindented.
(toString): Only trim trailing space if text was added to
StringBuffer.
* java/util/ConcurrentModificationException.java: Javadoc
updates.
* java/util/EmptyStackException.java: Likewise.
* java/util/NoSuchElementException.java: Likewise.
From-SVN: r47018
Fix for PR libgcj/4859:
* java/util/Timer.java (TaskQueue.isStopped): New method.
(Scheduler.run): Don't re-schedule task if queue has been
stopped.
From-SVN: r46994
2001-11-02 Hans Boehm <Hans_Boehm@hp.com>
* java/util/natResourceBundle.cc:getClassContext: return
array of Class instead of array of ClassLoader.
From-SVN: r46727
* configure.in (case $THREADS): Add *-*-freebsd* configuration.
(HAVE_GETHOSTBYADDR_R): Create a valid, non-optimal
configuration when gethostbyaddr_r exists yet no prototype
exists in netdb.h.
* configure: Rebuilt.
* posix-threads.cc (INTR): Reuse path for LINUX_THREADS
with FREEBSD_THREADS. However, comment different reason.
From-SVN: r46476
* java/util/PropertyResourceBundle.java (handleGetObject): Now
public.
* java/util/ListResourceBundle.java (handleGetObject): Now public
and final, per spec.
From-SVN: r46452
* prims.cc (_Jv_Abort): Always print error message using fprintf,
don't try to allocate.
(_Jv_CreateJavaVM): Set gcj::runTimeInitialized.
* include/jvm.h (gcj::runTimeInitialized): New variable declaration.
* java/lang/natClassLoader.cc (_Jv_RegisterClassHookDefault): Handle
duplicate class registration with JvFail if the runtime hasn't been
initialized yet.
From-SVN: r46424
* java/lang/Double.java: More Classpath merging
(isInfinite): Don't use doubleToLongBits
(isNaN (Object)): return v != v
(initIDs): make native
* java/lang/Float.java: Ditto
(isInfinite): Don't use floatToIntBits
(isNaN (Object)): return v != v
* java/lang/natDouble.cc: add empty initIDs()
From-SVN: r46370
* gnu/java/security/provider/SHA1PRNG.java (engineNextBytes):
Rewrote.
* java/security/SecureRandom.java (setSeed(long)): Don't set seed
if secureRandomSpi is not initialized.
From-SVN: r46327
* Makefile.in: Rebuilt.
* Makefile.am (secdir): New macro.
(install-data-local): Install new data files.
* java/security/classpath.security: New file.
* java/security/libgcj.security: New file.
From-SVN: r46326
2001-10-15 Hans Boehm <Hans_Boehm@hp.com>
* java/lang/natObject.cc (heavy_lock): Moved fields
old_client_data, old_finalization_proc near beginning.
(heavy_lock_finalization_proc): Now inline; changed type of
argument.
(JV_SYNC_TABLE_SZ): Now 2048.
(mp): New global.
(spin): `mp' now global.
(heavy_lock_obj_finalization_proc): Updated to correctly handle
heavy lock finalization.
(remove_all_heavy): New function.
(maybe_remove_all_heavy): Likewise.
(_Jv_MonitorEnter): Throw exception if object is NULL.
(_Jv_MonitorExit): Likewise. Also, clear long lists of unlocked
heavy locks.
* include/jvm.h (_Jv_AllocTraceTwo): Declare.
* nogc.cc (_Jv_AllocTraceTwo): New function.
* boehm.cc (trace_two_vtable): New global.
(_Jv_AllocTraceTwo): New function.
From-SVN: r46271
* java/lang/Double.java: Partial merge with Classpath
(TYPE): initialized through VMClassLoader.getPrimitiveClass()
(value): made final
(static): new static block to load native libary (not used in libgcj)
(Double (String)): call parseDouble()
(byteValue): removed, already defined in superclass Number
(shortValue): likewise
(valueOf (String)): call new Double(String) directly
(compare (double,double)): new 1.4 method
(compareTo (Double)): call new compare(double,double) method
(initIDs): new private method (not used in libgcj)
* java/lang/Float.java: Partial merge with Classpath
(TYPE): initialized through VMClassLoader.getPrimitiveClass()
(value): made final
(static): new static block to load native libary (not used in libgcj)
(Float (String)): call parseFloat()
(byteValue): removed, already defined in superclass Number
(shortValue): likewise
(valueOf (String)): call new Float(String) directly
(compare (float,float)): new 1.4 method
(compareTo (Float)): call new compare(double,double) method
From-SVN: r46263
* java/security/AccessController.java (checkPermission): Now
throws AccessControlException.
* java/security/AllPermission.java: Class now final.
* java/security/Permission.java (getName): Now final.
(name): Now private.
(equals): New abstract method.
* java/security/PermissionCollection.java (linesep): Now private.
* java/security/Permissions.java: Class now final.
* java/security/Security.java (Security): New private
constructor.
* java/security/UnresolvedPermission.java: Import
java.security.cert.Certificate. Class now final.
* java/security/acl/Group.java: Now extends Principal.
(isMember): Added Principal argument.
* java/security/spec/X509EncodedKeySpec.java (getFormat): Now
final.
* java/security/spec/PKCS8EncodedKeySpec.java (getFormat): Now
final.
From-SVN: r46246
Fix for PR libgcj/4481:
* java/io/File.java (getParent): Handle case where path is "/".
(normalizePath): Use correct string for UNC leader.
From-SVN: r46093
config:
* acinclude.m4: Fix spelling error of "separate" as "seperate".
gcc:
* ChangeLog.2, c-decl.c, config/i386/i386.md, doc/gcc.texi, gcc.c,
genmultilib, toplev.c: Fix spelling errors of "separate" as
"seperate", and corresponding spelling errors of related words.
gcc/ada:
* 5oosinte.adb: Fix spelling error of "separate" as "seperate".
gcc/testsuite:
* gcc.c-torture/unsorted/unsorted.exp, lib/file-format.exp: Fix
spelling errors of "separate" as "seperate".
libffi:
* src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
libjava:
* defineclass.cc, java/awt/image/ColorModel.java,
java/awt/image/SampleModel.java, java/lang/Package.java,
java/security/cert/X509Extension.java: Fix spelling errors of
"separate" as "seperate", and corresponding spelling errors of
related words.
libstdc++-v3:
* docs/html/22_locale/locale.html, docs/html/faq/index.html: Fix
spelling errors of "separate" as "seperate", and corresponding
spelling errors of related words.
* docs/html/faq/index.txt: Regenerate.
From-SVN: r46063
* java/text/DecimalFormat.java (format): Use localized minus sign
when generating exponent; never use `+'. Use floor to compute
exponent.
From-SVN: r46045
* prims.cc (_Jv_NewMultiArrayUnchecked): New method.
(_Jv_NewMultiArray): Use it. Check each array dimension.
(_Jv_NewMultiArray): Likewise.
* java/lang/reflect/natMethod.cc (can_widen): Nothing promotes to
`char'.
* java/lang/reflect/natArray.cc (newInstance): Throw
IllegalArgumentException if there are no dimensions.
From-SVN: r45951
PR libgcj/4383
* gnu/gcj/protocol/file/Connection.java (connect): Throw
FileNotFoundException if appropriate.
* gnu/gcj/protocol/file/Handler.java (openConnection): Throw an
IOException if we got a file: url with a hostname. Comment out protocol
switch to ftp for now.
* java/net/URL.java (URL): Include protocol name in exception
message
when handler can't be found.
From-SVN: r45898
* java/util/IdentityHashMap.java (containsKey): Use getHash.
(get): Likewise.
(put): Likewise.
(remove): Likewise.
(getHash): New method.
(tombstone, emptyslot): Now static final.
(put): Correctly determine when to rehash, and correctly rehash.
(containsKey, remove): Test against table length with `>='.
From-SVN: r45841
* java/lang/PosixProcess.java (exitValue): Implement here. Throw
IllegalThreadStateException if process hasn't exited yet.
* java/lang/natPosixProcess.cc (exitValue): Removed.
(waitFor): Only check thread interrupted status if waitpid()
returned an error. Use WIFEXITED and WEXITSTATUS to process process's
exit value.
From-SVN: r45766
* posix-threads.cc (_Jv_ThreadInterrupt): Re-enable interrupt of
blocking IO via pthread_kill().
* java/io/natFileDescriptorPosix.cc (write (jint)): Check for thread
interrupted status flag only if ::write returned an error.
(write (jbyteArray, jint, jint): Likewise.
(read (jint)): Likewise.
(read (jbyteArray, jint, jint): Likewise.
From-SVN: r45719
* java/util/Hashtable.java (Enumerator): Ensure that if
hasMoreElements() returns true, nextElement() will always return
something even if the table has been modified.
From-SVN: r45584