1999-04-07 16:42:40 +02:00
|
|
|
// jvm.h - Header file for private implementation information. -*- c++ -*-
|
|
|
|
|
2008-03-13 17:43:54 +01:00
|
|
|
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation
|
1999-04-07 16:42:40 +02:00
|
|
|
|
|
|
|
This file is part of libgcj.
|
|
|
|
|
|
|
|
This software is copyrighted work licensed under the terms of the
|
|
|
|
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
|
|
|
details. */
|
|
|
|
|
|
|
|
#ifndef __JAVA_JVM_H__
|
|
|
|
#define __JAVA_JVM_H__
|
|
|
|
|
2001-12-16 23:33:02 +01:00
|
|
|
// Define this before including jni.h.
|
|
|
|
// jni.h is included by jvmpi.h, which might be included. We define
|
|
|
|
// this unconditionally because it is convenient and it lets other
|
|
|
|
// files include jni.h without difficulty.
|
|
|
|
#define __GCJ_JNI_IMPL__
|
|
|
|
|
1999-09-11 00:03:10 +02:00
|
|
|
#include <gcj/javaprims.h>
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
#include <java-assert.h>
|
1999-09-11 00:03:10 +02:00
|
|
|
#include <java-threads.h>
|
|
|
|
// Must include java-gc.h before Object.h for the implementation.
|
|
|
|
#include <java-gc.h>
|
|
|
|
|
|
|
|
#include <java/lang/Object.h>
|
|
|
|
|
|
|
|
// Include cni.h before field.h to enable all definitions. FIXME.
|
|
|
|
#include <gcj/cni.h>
|
|
|
|
#include <gcj/field.h>
|
1999-04-07 16:42:40 +02:00
|
|
|
|
2007-01-09 20:58:05 +01:00
|
|
|
#include <java/lang/Thread.h>
|
|
|
|
|
|
|
|
#include <sysdep/locks.h>
|
|
|
|
|
2004-02-01 21:05:03 +01:00
|
|
|
/* Macro for possible unused arguments. */
|
|
|
|
#define MAYBE_UNUSED __attribute__((__unused__))
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Structure of the virtual table. */
|
|
|
|
struct _Jv_VTable
|
|
|
|
{
|
2001-09-21 18:59:12 +02:00
|
|
|
#ifdef __ia64__
|
|
|
|
typedef struct { void *pc, *gp; } vtable_elt;
|
|
|
|
#else
|
|
|
|
typedef void *vtable_elt;
|
|
|
|
#endif
|
2001-12-14 19:43:55 +01:00
|
|
|
jclass clas;
|
|
|
|
void *gc_descr;
|
2001-09-21 18:59:12 +02:00
|
|
|
|
|
|
|
// This must be last, as derived classes "extend" this by
|
|
|
|
// adding new data members.
|
|
|
|
vtable_elt method[1];
|
|
|
|
|
|
|
|
#ifdef __ia64__
|
|
|
|
void *get_method(int i) { return &method[i]; }
|
|
|
|
void set_method(int i, void *fptr) { method[i] = *(vtable_elt *)fptr; }
|
2001-12-14 19:43:55 +01:00
|
|
|
void *get_finalizer()
|
|
|
|
{
|
|
|
|
// We know that get_finalizer is only used for checking whether
|
|
|
|
// this object needs to have a finalizer registered. So it is
|
|
|
|
// safe to simply return just the PC component of the vtable
|
|
|
|
// slot.
|
|
|
|
return ((vtable_elt *)(get_method(0)))->pc;
|
|
|
|
}
|
2001-09-21 18:59:12 +02:00
|
|
|
#else
|
|
|
|
void *get_method(int i) { return method[i]; }
|
|
|
|
void set_method(int i, void *fptr) { method[i] = fptr; }
|
2001-12-14 19:43:55 +01:00
|
|
|
void *get_finalizer() { return get_method(0); }
|
2001-09-21 18:59:12 +02:00
|
|
|
#endif
|
|
|
|
|
|
|
|
static size_t vtable_elt_size() { return sizeof(vtable_elt); }
|
java-tree.h (otable_methods, [...]): New field/global tree definitions.
gcc/java:
* java-tree.h (otable_methods, otable_decl, otable_syms_decl,
otable_type, otable_ptr_type, method_symbol_type,
method_symbols_array_type, method_symbols_array_ptr_type): New
field/global tree definitions.
(flag_indirect_dispatch): New flag.
* decl.c (java_init_decl_processing): Initialize new otable and
otable_syms type nodes and decls. Add new field "index" to
method_type_node.
* class.c (build_method_symbols_entry): New function.
(make_method_value): Set "index" to to method's vtable index for
virtual methods when indirect-dispatch is not used.
(make_class_data): For indirect-dispatch, dont emit the dtable_decl,
and set vtable_method_count to -1. Set otable and otable_syms field
if indirect-dispatch is used and there was something to put in them.
(build_method_symbols_entry): New function.
(emit_offset_symbol_table): New function.
* expr.c (get_offset_table_index): New function.
(build_invokevirtual): Build array reference to otable at the index
returned by get_offset_table_index, and use the result as the vtable
offset.
(build_invokeinterface): Similar.
* jcf-parse.c (yyparse): If indirect-dispatch, call
emit_offset_symbol_table at the end of compilation, after all classes
have been generated.
* jvspec.c: Don't pass findirect-dispatch to jvgenmain.
* lang.c (flag_indirect_dispatch): Define.
(lang_f_options): Add indirect-dispatch flag.
libjava:
* include/jvm.h (_Jv_VTable::idx_to_offset): New method.
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Call
_Jv_MakeVTable and _Jv_LinkOffsetTable if needed.
* java/lang/Class.h (_Jv_Method): Add "index" field.
(_Jv_MethodSymbol): New struct type.
(_Jv_LinkOffsetTable, _Jv_LayoutVTableMethods, _Jv_SetVTableEntries,
_Jv_MakeVTable): Friends.
(otable, otable_syms): New Class fields.
* java/lang/natClass.cc (_Jv_LinkOffsetTable): New function.
(isVirtualMethod): New static function.
(_Jv_LayoutVTableMethods): New function.
(_Jv_SetVTableEntries): New function.
(_Jv_MakeVTable): New function.
From-SVN: r48038
2001-12-15 09:31:49 +01:00
|
|
|
|
|
|
|
// Given a method index, return byte offset from the vtable pointer.
|
|
|
|
static jint idx_to_offset (int index)
|
|
|
|
{
|
|
|
|
return (2 * sizeof (void *)) + (index * vtable_elt_size ());
|
|
|
|
}
|
2006-02-08 21:07:29 +01:00
|
|
|
|
2001-09-21 18:59:12 +02:00
|
|
|
static _Jv_VTable *new_vtable (int count);
|
1999-04-07 16:42:40 +02:00
|
|
|
};
|
|
|
|
|
2000-04-21 00:24:33 +02:00
|
|
|
union _Jv_word
|
|
|
|
{
|
|
|
|
jobject o;
|
|
|
|
jint i; // Also stores smaller integral types.
|
|
|
|
jfloat f;
|
|
|
|
jint ia[1]; // Half of _Jv_word2.
|
|
|
|
void* p;
|
|
|
|
|
|
|
|
#if SIZEOF_VOID_P == 8
|
|
|
|
// We can safely put a long or a double in here without increasing
|
|
|
|
// the size of _Jv_Word; we take advantage of this in the interpreter.
|
|
|
|
jlong l;
|
|
|
|
jdouble d;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
jclass clazz;
|
|
|
|
jstring string;
|
|
|
|
struct _Jv_Field *field;
|
|
|
|
struct _Jv_Utf8Const *utf8;
|
|
|
|
struct _Jv_ResolvedMethod *rmethod;
|
|
|
|
};
|
|
|
|
|
|
|
|
union _Jv_word2
|
|
|
|
{
|
|
|
|
jint ia[2];
|
|
|
|
jlong l;
|
|
|
|
jdouble d;
|
|
|
|
};
|
|
|
|
|
2004-07-13 03:04:47 +02:00
|
|
|
union _Jv_value
|
|
|
|
{
|
|
|
|
jbyte byte_value;
|
|
|
|
jshort short_value;
|
|
|
|
jchar char_value;
|
|
|
|
jint int_value;
|
|
|
|
jlong long_value;
|
|
|
|
jfloat float_value;
|
|
|
|
jdouble double_value;
|
|
|
|
jobject object_value;
|
|
|
|
};
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Extract a character from a Java-style Utf8 string.
|
|
|
|
* PTR points to the current character.
|
|
|
|
* LIMIT points to the end of the Utf8 string.
|
|
|
|
* PTR is incremented to point after the character thta gets returns.
|
|
|
|
* On an error, -1 is returned. */
|
|
|
|
#define UTF8_GET(PTR, LIMIT) \
|
|
|
|
((PTR) >= (LIMIT) ? -1 \
|
|
|
|
: *(PTR) < 128 ? *(PTR)++ \
|
|
|
|
: (*(PTR)&0xE0) == 0xC0 && ((PTR)+=2)<=(LIMIT) && ((PTR)[-1]&0xC0) == 0x80 \
|
|
|
|
? (((PTR)[-2] & 0x1F) << 6) + ((PTR)[-1] & 0x3F) \
|
|
|
|
: (*(PTR) & 0xF0) == 0xE0 && ((PTR) += 3) <= (LIMIT) \
|
|
|
|
&& ((PTR)[-2] & 0xC0) == 0x80 && ((PTR)[-1] & 0xC0) == 0x80 \
|
|
|
|
? (((PTR)[-3]&0x0F) << 12) + (((PTR)[-2]&0x3F) << 6) + ((PTR)[-1]&0x3F) \
|
|
|
|
: ((PTR)++, -1))
|
|
|
|
|
link.cc (_Jv_Linker::print_class_loaded): Declare string constants as "const char *".
2006-02-08 Bryce McKinlay <mckinlay@redhat.com>
* link.cc (_Jv_Linker::print_class_loaded): Declare string constants
as "const char *".
* verify.cc (verify_fail): Likewise.
* gnu/classpath/natSystemProperties.cc (file_encoding): Likewise.
* interpret.cc (throw_internal_error, throw_class_format_error):
Likewise.
* gcj/javaprims.h (_Jv_hashUtf8String, _Jv_Utf8Const::space_needed,
_Jv_Utf8Const::init, _Jv_makeUtf8Const): Likewise.
* java/lang/Class.h (_Jv_InitPrimClass): Likewise.
* include/jvm.h (_Jv_strLengthUtf8, _Jv_makeUtf8Const): Likewise.
* defineclass.cc (throw_internal_error, throw_no_class_def_found_error,
is_attribute_name): Likewise.
* prims.cc (_Jv_strLengthUtf8, _Jv_hashUtf8String, _Jv_Utf8Const::init,
_Jv_makeUtf8Const, _Jv_InitPrimClass): Likewise.
From-SVN: r110767
2006-02-08 21:38:13 +01:00
|
|
|
extern int _Jv_strLengthUtf8(const char* str, int len);
|
1999-04-07 16:42:40 +02:00
|
|
|
|
|
|
|
typedef struct _Jv_Utf8Const Utf8Const;
|
link.cc (_Jv_Linker::print_class_loaded): Declare string constants as "const char *".
2006-02-08 Bryce McKinlay <mckinlay@redhat.com>
* link.cc (_Jv_Linker::print_class_loaded): Declare string constants
as "const char *".
* verify.cc (verify_fail): Likewise.
* gnu/classpath/natSystemProperties.cc (file_encoding): Likewise.
* interpret.cc (throw_internal_error, throw_class_format_error):
Likewise.
* gcj/javaprims.h (_Jv_hashUtf8String, _Jv_Utf8Const::space_needed,
_Jv_Utf8Const::init, _Jv_makeUtf8Const): Likewise.
* java/lang/Class.h (_Jv_InitPrimClass): Likewise.
* include/jvm.h (_Jv_strLengthUtf8, _Jv_makeUtf8Const): Likewise.
* defineclass.cc (throw_internal_error, throw_no_class_def_found_error,
is_attribute_name): Likewise.
* prims.cc (_Jv_strLengthUtf8, _Jv_hashUtf8String, _Jv_Utf8Const::init,
_Jv_makeUtf8Const, _Jv_InitPrimClass): Likewise.
From-SVN: r110767
2006-02-08 21:38:13 +01:00
|
|
|
_Jv_Utf8Const *_Jv_makeUtf8Const (const char *s, int len);
|
[multiple changes]
1999-08-09 Anthony Green <green@cygnus.com>
* gij.cc: New file.
* include/config.h.in: Rebuilt.
* acconfig.h: Add INTERPRETER.
* configure: Rebuilt.
* Makefile.in: Rebuilt.
* Makefile.am (libffi_files): Identify the libffi object files for
inclusion in libgcj.
(LIBFFIINCS): Define.
* interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1):
Dummy definition for configurations without an interpreter.
* java/net/natPlainSocketImpl.cc (getOption): Disamiguate call to
java::lang::Boolean constructor.
* include/java-interp.h: Always include java-cpool.h.
* java/lang/natClassLoader.cc (getVMClassLoader0): Always return 0
when INTERPRETER not defined.
* java/lang/Class.h (finalize): Define.
* gnu/gcj/util/path/DirectoryPathEntry.java (getURL): Catch
IOException from File.getCanonicalPath.
(getStream): Likewise.
* NEWS: More news.
* THANKS: More thanks.
1999-08-09 Kresten Krab Thorup <krab@gnu.org>
* resolve.cc (get_ffi_type_from_signature): Generate uint16 for
jchar type.
(_Jv_PrepareClass): Allow non-abstract classes to
have abstract subclasses.
(_Jv_ResolvePoolEntry): Revert subclass check for protected
fields and methods.
* interpret.cc (continue1/perform_invoke): Don't sign extend
uint16 return val.
(continue1/lshl,lshr): Push long, not int.
(continue1/ulshr): Use UINT64, not long long.
* defineclass.cc (handleFieldsEnd): Handle case when all fields
are static.
* java/lang/natClass.cc (forName): Add call to _Jv_InitClass.
* java/lang/FirstThread.java (run): Add top-level exception
handler.
(run0): Renamed from run.
1999-08-08 Kresten Krab Thorup <krab@gnu.org>
* configure.in (--with-interpreter): Added.
* include/config.h.in (INTERPRETER): Added.
* java/lang/ClassLoader.java: File replaced.
* java/lang/VMClassLoader.java: New file.
* java/lang/natClassLoader.cc: New file.
* gnu/gcj/runtime/MethodInvocation.java: New file.
* gnu/gcj/util/path/SearchPath.java: New file.
* gnu/gcj/util/path/PathEntry.java: New file.
* gnu/gcj/util/path/DirectoryPathEntry.java: New file.
* gnu/gcj/util/path/ZipPathEntry.java: New file.
* gnu/gcj/util/path/URLPathEntry.java: New file.
* gnu/gcj/util/path/CacheEntry.java: New file.
* include/java-interp.h: New file.
* include/java-cpool.h: New file.
* include/java-insns.h: New file.
* defineclass.cc: New file.
* interpret.cc: New file.
* resolve.cc: New file.
* java/lang/natClass.cc (loaded_classes, _Jv_RegisterClass,
_Jv_RegisterClasses, _Jv_FindClassInCache, _Jv_FindClass,
_Jv_NewClass, _Jv_FindArrayClass): Moved to natClassLoader.cc.
(finalize): New.
(STATE_NOTHING, STATE_RESOLVED, STATE_IN_PROGRESS, STATE_DONE,
STATE_ERROR): Moved to java/lang/Class.h and renamed with JV_
prefix.
(initializeClass): Use new JV_ prefixed names. Also, call
ClassLoader::resolveClass instead of _Jv_ResolveClass.
* java/lang/Class.h (JV_STATE_PRELOADING, JV_STATE_LOADING,
JV_STATE_LOADED, JV_STATE_COMPILED, JV_STATE_PREPARED,
JV_STATE_LINKED): New.
(_Jv_WaitForState, _Jv_RegisterInitiatingLoader,
_Jv_UnregisterClass, _Jv_InternClassStrings): New friends.
(_Jv_IsInterpretedClass, _Jv_InitField, _Jv_LookupDeclaredMethod,
_Jv_DetermineVTableIndex, _Jv_ResolvePoolEntry, _Jv_PrepareClass,
_Jv_ClassReader, _Jv_InterpClass, _Jv_InterpMethod,
_Jv_InterpMethodInvocation): New friends for interpreter.
(finalize): New.
(CONSTANT_Class, CONSTANT_String, etc.): Moved to
include/java-cpool.h and renamed with JV_ prefix.
* include/jvm.h (_Jv_makeUtf8Const, _Jv_makeUtf8TypeConst): New
decls.
(_Jv_UnregisterClass): New decl.
* java/lang/natClassLoader.cc (_Jv_FindArrayClass): Added
class loader argument.
(_Jv_FindClass): Use class loader.
* prims.cc (_Jv_makeUtf8Const): New function.
(_Jv_NewObjectArray): Change use of _Jv_FindArrayClass.
(_Jv_NewPrimArray): Ditto.
(_Jv_FindClassFromSignature): Ditto.
* java/lang/reflect/natArray.cc (newInstance): Ditto.
* java/lang/reflect/natMethod.cc (getType): Ditto.
* include/java-field.h (_Jv_Field::isRef): Make robust for
non-resolved contexts.
* boehm.cc (_Jv_MarkObj): Mark interpreter-related fields.
Also, don't mark class->next field.
* java/lang/VirtualMachineError.java: Added FIXME note.
* configure.in (INTERPSPEC): New spec.
* libgcj.spec.in: Added INTERPSPEC.
* Makefile.am: Added gcjh friends for java/lang/VMClassLoader and
gnu/gcj/runtime/MethodInvocation.
(libgcj_la_SOURCES): Added resolve.cc defineclass.cc interpret.cc.
(ordinary_java_source_files): Added above mentioned java classes.
* configure: Rebuilt.
* Makefile.in: Rebuilt.
From-SVN: r28597
1999-08-08 16:06:23 +02:00
|
|
|
_Jv_Utf8Const *_Jv_makeUtf8Const (jstring string);
|
2007-01-09 20:58:05 +01:00
|
|
|
static inline _Jv_Utf8Const *_Jv_makeUtf8Const (const char *s)
|
|
|
|
{
|
|
|
|
return _Jv_makeUtf8Const (s, strlen (s));
|
|
|
|
}
|
2003-10-01 18:22:13 +02:00
|
|
|
extern jboolean _Jv_equalUtf8Consts (const _Jv_Utf8Const *, const _Jv_Utf8Const *);
|
1999-04-07 16:42:40 +02:00
|
|
|
extern jboolean _Jv_equal (_Jv_Utf8Const *, jstring, jint);
|
2000-01-04 09:46:52 +01:00
|
|
|
extern jboolean _Jv_equaln (_Jv_Utf8Const *, jstring, jint);
|
1999-04-07 16:42:40 +02:00
|
|
|
|
2003-08-19 13:48:59 +02:00
|
|
|
/* Helper class which converts a jstring to a temporary char*.
|
|
|
|
Uses the supplied buffer, if non-null. Otherwise, allocates
|
|
|
|
the buffer on the heap. Use the JV_TEMP_UTF_STRING macro,
|
|
|
|
which follows, to automatically allocate a stack buffer if
|
|
|
|
the string is small enough. */
|
|
|
|
class _Jv_TempUTFString
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
_Jv_TempUTFString(jstring jstr, char* buf=0);
|
|
|
|
~_Jv_TempUTFString();
|
|
|
|
|
|
|
|
// Accessors
|
|
|
|
operator const char*() const
|
|
|
|
{
|
|
|
|
return buf_;
|
|
|
|
}
|
|
|
|
const char* buf() const
|
|
|
|
{
|
|
|
|
return buf_;
|
|
|
|
}
|
|
|
|
char* buf()
|
|
|
|
{
|
|
|
|
return buf_;
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
char* buf_;
|
|
|
|
bool heapAllocated_;
|
|
|
|
};
|
|
|
|
|
|
|
|
inline _Jv_TempUTFString::_Jv_TempUTFString (jstring jstr, char* buf)
|
|
|
|
: buf_(0), heapAllocated_(false)
|
|
|
|
{
|
|
|
|
if (!jstr) return;
|
|
|
|
jsize len = JvGetStringUTFLength (jstr);
|
|
|
|
if (buf)
|
|
|
|
buf_ = buf;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
buf_ = (char*) _Jv_Malloc (len+1);
|
|
|
|
heapAllocated_ = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
JvGetStringUTFRegion (jstr, 0, jstr->length(), buf_);
|
|
|
|
buf_[len] = '\0';
|
|
|
|
}
|
|
|
|
|
|
|
|
inline _Jv_TempUTFString::~_Jv_TempUTFString ()
|
|
|
|
{
|
|
|
|
if (heapAllocated_)
|
|
|
|
_Jv_Free (buf_);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Macro which uses _Jv_TempUTFString. Allocates a stack-based
|
|
|
|
buffer if the string and its null terminator are <= 256
|
|
|
|
characters in length. Otherwise, a heap-based buffer is
|
|
|
|
used. The parameters to this macro are the variable name
|
|
|
|
which is an instance of _Jv_TempUTFString (above) and a
|
|
|
|
jstring.
|
|
|
|
|
|
|
|
Sample Usage:
|
|
|
|
|
|
|
|
jstring jstr = getAJString();
|
|
|
|
JV_TEMP_UTF_STRING(utfstr, jstr);
|
|
|
|
printf("The string is: %s\n", utfstr.buf());
|
|
|
|
|
|
|
|
*/
|
|
|
|
#define JV_TEMP_UTF_STRING(utfstr, jstr) \
|
|
|
|
jstring utfstr##thejstr = (jstr); \
|
|
|
|
jsize utfstr##_len = utfstr##thejstr ? JvGetStringUTFLength (utfstr##thejstr) + 1 : 0; \
|
|
|
|
char utfstr##_buf[utfstr##_len <= 256 ? utfstr##_len : 0]; \
|
|
|
|
_Jv_TempUTFString utfstr(utfstr##thejstr, sizeof(utfstr##_buf)==0 ? 0 : utfstr##_buf)
|
|
|
|
|
2001-10-16 10:35:17 +02:00
|
|
|
namespace gcj
|
|
|
|
{
|
|
|
|
/* Some constants used during lookup of special class methods. */
|
|
|
|
extern _Jv_Utf8Const *void_signature; /* "()V" */
|
|
|
|
extern _Jv_Utf8Const *clinit_name; /* "<clinit>" */
|
|
|
|
extern _Jv_Utf8Const *init_name; /* "<init>" */
|
|
|
|
extern _Jv_Utf8Const *finit_name; /* "finit$", */
|
2001-10-23 07:42:03 +02:00
|
|
|
|
|
|
|
/* Set to true by _Jv_CreateJavaVM. */
|
|
|
|
extern bool runtimeInitialized;
|
2004-07-08 01:44:12 +02:00
|
|
|
|
|
|
|
/* Print out class names as they are initialized. */
|
|
|
|
extern bool verbose_class_flag;
|
2005-05-13 03:02:39 +02:00
|
|
|
|
|
|
|
/* When true, enable the bytecode verifier and BC-ABI verification. */
|
|
|
|
extern bool verifyClasses;
|
2005-11-17 21:25:57 +01:00
|
|
|
|
|
|
|
/* Thread stack size specified by the -Xss runtime argument. */
|
|
|
|
extern size_t stack_size;
|
2007-01-09 20:58:05 +01:00
|
|
|
|
|
|
|
/* The start time */
|
|
|
|
extern jlong startTime;
|
|
|
|
|
|
|
|
/* The VM arguments */
|
|
|
|
extern JArray<jstring>* vmArgs;
|
|
|
|
|
|
|
|
// Currently loaded classes
|
|
|
|
extern jint loadedClasses;
|
|
|
|
|
|
|
|
// Unloaded classes
|
|
|
|
extern jlong unloadedClasses;
|
2002-12-28 07:38:52 +01:00
|
|
|
}
|
2001-10-16 10:35:17 +02:00
|
|
|
|
2004-11-25 04:47:08 +01:00
|
|
|
// This class handles all aspects of class preparation and linking.
|
|
|
|
class _Jv_Linker
|
|
|
|
{
|
|
|
|
private:
|
2006-06-08 16:00:43 +02:00
|
|
|
typedef unsigned int uaddr __attribute__ ((mode (pointer)));
|
|
|
|
|
2005-03-07 18:18:33 +01:00
|
|
|
static _Jv_Field *find_field_helper(jclass, _Jv_Utf8Const *, _Jv_Utf8Const *,
|
2006-02-01 14:40:05 +01:00
|
|
|
jclass, jclass *);
|
2005-04-29 20:35:36 +02:00
|
|
|
static _Jv_Field *find_field(jclass, jclass, jclass *, _Jv_Utf8Const *,
|
2005-01-10 20:21:46 +01:00
|
|
|
_Jv_Utf8Const *);
|
2008-03-13 17:43:54 +01:00
|
|
|
static void check_loading_constraints (_Jv_Method *, jclass, jclass);
|
2004-11-25 04:47:08 +01:00
|
|
|
static void prepare_constant_time_tables(jclass);
|
|
|
|
static jshort get_interfaces(jclass, _Jv_ifaces *);
|
|
|
|
static void link_symbol_table(jclass);
|
|
|
|
static void link_exception_table(jclass);
|
|
|
|
static void layout_interface_methods(jclass);
|
|
|
|
static void set_vtable_entries(jclass, _Jv_VTable *);
|
|
|
|
static void make_vtable(jclass);
|
|
|
|
static void ensure_fields_laid_out(jclass);
|
|
|
|
static void ensure_class_linked(jclass);
|
|
|
|
static void ensure_supers_installed(jclass);
|
|
|
|
static void add_miranda_methods(jclass, jclass);
|
|
|
|
static void ensure_method_table_complete(jclass);
|
|
|
|
static void verify_class(jclass);
|
|
|
|
static jshort find_iindex(jclass *, jshort *, jshort);
|
|
|
|
static jshort indexof(void *, void **, jshort);
|
|
|
|
static int get_alignment_from_class(jclass);
|
|
|
|
static void generate_itable(jclass, _Jv_ifaces *, jshort *);
|
|
|
|
static jshort append_partial_itable(jclass, jclass, void **, jshort);
|
2006-06-08 16:00:43 +02:00
|
|
|
static _Jv_Method *search_method_in_superclasses (jclass cls, jclass klass,
|
|
|
|
_Jv_Utf8Const *method_name,
|
|
|
|
_Jv_Utf8Const *method_signature,
|
|
|
|
jclass *found_class,
|
|
|
|
bool check_perms = true);
|
ffi.h.in (ffi_closure_alloc, [...]): New.
libffi/ChangeLog:
* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
(ffi_prep_closure_loc): New.
(ffi_prep_raw_closure_loc): New.
(ffi_prep_java_raw_closure_loc): New.
* src/closures.c: New file.
* src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
Replace sflags with exec_offset.
[FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
sub_segment_exec_offset): New macros.
(get_segment_flags, set_segment_flags, check_segment_merge): New
macros.
(is_mmapped_segment, is_extern_segment): Use get_segment_flags.
(add_segment, sys_alloc, create_mspace, create_mspace_with_base,
destroy_mspace): Use new macros.
(sys_alloc): Silence warning.
* Makefile.am (libffi_la_SOURCES): Add src/closures.c.
* Makefile.in: Rebuilt.
* src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
terms of ffi_prep_closure_loc.
* src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
from...
(ffi_prep_raw_closure): ... this. Re-implement in terms of the
renamed version.
* src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
adjusted from...
(ffi_prep_java_raw_closure): ... this. Re-implement in terms of
the renamed version.
* src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
(ffi_prep_closure): ... this.
* src/pa/ffi.c: Likewise.
* src/cris/ffi.c: Likewise. Adjust.
* src/frv/ffi.c: Likewise.
* src/ia64/ffi.c: Likewise.
* src/mips/ffi.c: Likewise.
* src/powerpc/ffi_darwin.c: Likewise.
* src/s390/ffi.c: Likewise.
* src/sh/ffi.c: Likewise.
* src/sh64/ffi.c: Likewise.
* src/sparc/ffi.c: Likewise.
* src/x86/ffi64.c: Likewise.
* src/x86/ffi.c: Likewise.
(FFI_INIT_TRAMPOLINE): Adjust.
(ffi_prep_raw_closure_loc): Renamed and adjusted from...
(ffi_prep_raw_closure): ... this.
* src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
(ffi_prep_closure): ... this.
(flush_icache): Adjust.
boehm-gc/ChangeLog:
* include/gc.h (GC_REGISTER_FINALIZER_UNREACHABLE): New.
(GC_register_finalizer_unreachable): Declare.
(GC_debug_register_finalizer_unreachable): Declare.
* finalize.c (GC_unreachable_finalize_mark_proc): New.
(GC_register_finalizer_unreachable): New.
(GC_finalize): Handle it.
* dbg_mlc.c (GC_debug_register_finalizer_unreachable): New.
(GC_debug_register_finalizer_no_order): Fix whitespace.
libjava/ChangeLog:
* include/jvm.h (_Jv_ClosureListFinalizer): New.
(_Jv_Linker::create_error_method): Adjust.
* boehm.cc (_Jv_ClosureListFinalizer): New.
* nogc.cc (_Jv_ClosureListFinalizer): New.
* java/lang/Class.h (class _Jv_ClosureList): New.
(class java::lang::Class): Declare it as friend.
* java/lang/natClass.cc (_Jv_ClosureList::releaseClosures): New.
(_Jv_ClosureList::registerClousure): New.
* include/execution.h (_Jv_ExecutionEngine): Add get_closure_list.
(_Jv_CompiledEngine::do_get_closure_list): New.
(_Jv_CompiledEngine::_Jv_CompiledEngine): Use it.
(_Jv_IndirectCompiledClass): Add closures.
(_Jv_IndirectCompiledEngine::get_aux_info): New.
(_Jv_IndirectCompiledEngine::do_allocate_field_initializers): Use
it.
(_Jv_IndirectCompiledEngine::do_get_closure_list): New.
(_Jv_IndirectCompiledEngine::_Jv_IndirectCompiledEngine): Use it.
(_Jv_InterpreterEngine::do_get_closure_list): Declare.
(_Jv_InterpreterEngine::_Jv_InterpreterEngine): Use it.
* interpret.cc (FFI_PREP_RAW_CLOSURE): Use _loc variants.
(node_closure): Add closure list.
(_Jv_InterpMethod::ncode): Add jclass argument. Use
ffi_closure_alloc and the separate code pointer. Register the
closure for finalization.
(_Jv_JNIMethod::ncode): Likewise.
(_Jv_InterpreterEngine::do_create_ncode): Pass klass to ncode.
(_Jv_InterpreterEngine::do_get_closure_list): New.
* include/java-interp.h (_Jv_InterpMethod::ncode): Adjust.
(_Jv_InterpClass): Add closures field.
(_Jv_JNIMethod::ncode): Adjust.
* defineclass.cc (_Jv_ClassReader::handleCodeAttribute): Adjust.
(_Jv_ClassReader::handleMethodsEnd): Likewise.
* link.cc (struct method_closure): Add closure list.
(_Jv_Linker::create_error_method): Add jclass argument. Use
ffi_closure_alloc and the separate code pointer. Register the
closure for finalization.
(_Jv_Linker::link_symbol_table): Remove outdated comment about
sharing of otable and atable. Adjust.
* java/lang/reflect/natVMProxy.cc (ncode_closure): Add closure
list.
(ncode): Add jclass argument. Use ffi_closure_alloc and the
separate code pointer. Register the closure for finalization.
(java::lang::reflect::VMProxy::generateProxyClass): Adjust.
* testsuite/libjava.jar/TestClosureGC.java: New.
* testsuite/libjava.jar/TestClosureGC.out: New.
* testsuite/libjava.jar/TestClosureGC.xfail: New.
* testsuite/libjava.jar/TestClosureGC.jar: New.
From-SVN: r122652
2007-03-07 08:27:25 +01:00
|
|
|
static void *create_error_method(_Jv_Utf8Const *, jclass);
|
2004-11-25 04:47:08 +01:00
|
|
|
|
2006-06-08 16:00:43 +02:00
|
|
|
/* The least significant bit of the signature pointer in a symbol
|
|
|
|
table is set to 1 by the compiler if the reference is "special",
|
|
|
|
i.e. if it is an access to a private field or method. Extract
|
|
|
|
that bit, clearing it in the address and setting the LSB of
|
|
|
|
SPECIAL accordingly. */
|
|
|
|
static void maybe_adjust_signature (_Jv_Utf8Const *&s, uaddr &special)
|
|
|
|
{
|
|
|
|
union {
|
|
|
|
_Jv_Utf8Const *signature;
|
|
|
|
uaddr signature_bits;
|
|
|
|
};
|
|
|
|
signature = s;
|
|
|
|
special = signature_bits & 1;
|
|
|
|
signature_bits -= special;
|
|
|
|
s = signature;
|
|
|
|
}
|
|
|
|
|
2008-08-22 18:04:29 +02:00
|
|
|
static _Jv_Mutex_t resolve_mutex;
|
|
|
|
static void init (void) __attribute__((constructor));
|
|
|
|
|
2004-11-25 04:47:08 +01:00
|
|
|
public:
|
|
|
|
|
2005-02-19 02:16:30 +01:00
|
|
|
static bool has_field_p (jclass, _Jv_Utf8Const *);
|
2004-11-25 04:47:08 +01:00
|
|
|
static void print_class_loaded (jclass);
|
|
|
|
static void resolve_class_ref (jclass, jclass *);
|
|
|
|
static void wait_for_state(jclass, int);
|
2007-01-09 20:58:05 +01:00
|
|
|
static _Jv_Method *resolve_method_entry (jclass, jclass &,
|
|
|
|
int, int,
|
|
|
|
bool, bool);
|
2006-02-01 14:40:05 +01:00
|
|
|
static _Jv_word resolve_pool_entry (jclass, int, bool =false);
|
2004-11-25 04:47:08 +01:00
|
|
|
static void resolve_field (_Jv_Field *, java::lang::ClassLoader *);
|
|
|
|
static void verify_type_assertions (jclass);
|
2007-01-09 20:58:05 +01:00
|
|
|
static _Jv_Method *search_method_in_class (jclass, jclass,
|
|
|
|
_Jv_Utf8Const *,
|
|
|
|
_Jv_Utf8Const *,
|
|
|
|
bool check_perms = true);
|
|
|
|
static void layout_vtable_methods(jclass);
|
2008-08-22 18:04:29 +02:00
|
|
|
|
|
|
|
static jbyte read_cpool_entry (_Jv_word *data,
|
|
|
|
const _Jv_Constants *const pool,
|
|
|
|
int index)
|
|
|
|
{
|
|
|
|
_Jv_MutexLock (&resolve_mutex);
|
|
|
|
jbyte tags = pool->tags[index];
|
|
|
|
*data = pool->data[index];
|
|
|
|
_Jv_MutexUnlock (&resolve_mutex);
|
|
|
|
return tags;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void write_cpool_entry (_Jv_word data, jbyte tags,
|
|
|
|
_Jv_Constants *pool,
|
|
|
|
int index)
|
|
|
|
{
|
|
|
|
_Jv_MutexLock (&resolve_mutex);
|
|
|
|
pool->data[index] = data;
|
|
|
|
pool->tags[index] = tags;
|
|
|
|
_Jv_MutexUnlock (&resolve_mutex);
|
|
|
|
}
|
2004-11-25 04:47:08 +01:00
|
|
|
};
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Type of pointer used as finalizer. */
|
|
|
|
typedef void _Jv_FinalizerFunc (jobject);
|
|
|
|
|
|
|
|
/* Allocate space for a new Java object. */
|
2000-09-30 11:56:58 +02:00
|
|
|
void *_Jv_AllocObj (jsize size, jclass cl) __attribute__((__malloc__));
|
2001-05-24 07:40:37 +02:00
|
|
|
/* Allocate space for a potentially uninitialized pointer-free object.
|
|
|
|
Interesting only with JV_HASH_SYNCHRONIZATION. */
|
|
|
|
void *_Jv_AllocPtrFreeObj (jsize size, jclass cl) __attribute__((__malloc__));
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Allocate space for an array of Java objects. */
|
2000-09-30 11:56:58 +02:00
|
|
|
void *_Jv_AllocArray (jsize size, jclass cl) __attribute__((__malloc__));
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Allocate space that is known to be pointer-free. */
|
1999-12-06 07:33:56 +01:00
|
|
|
void *_Jv_AllocBytes (jsize size) __attribute__((__malloc__));
|
2001-09-10 03:21:08 +02:00
|
|
|
/* Allocate space for a new non-Java object, which does not have the usual
|
|
|
|
Java object header but may contain pointers to other GC'ed objects. */
|
|
|
|
void *_Jv_AllocRawObj (jsize size) __attribute__((__malloc__));
|
ffi.h.in (ffi_closure_alloc, [...]): New.
libffi/ChangeLog:
* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
(ffi_prep_closure_loc): New.
(ffi_prep_raw_closure_loc): New.
(ffi_prep_java_raw_closure_loc): New.
* src/closures.c: New file.
* src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
Replace sflags with exec_offset.
[FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
sub_segment_exec_offset): New macros.
(get_segment_flags, set_segment_flags, check_segment_merge): New
macros.
(is_mmapped_segment, is_extern_segment): Use get_segment_flags.
(add_segment, sys_alloc, create_mspace, create_mspace_with_base,
destroy_mspace): Use new macros.
(sys_alloc): Silence warning.
* Makefile.am (libffi_la_SOURCES): Add src/closures.c.
* Makefile.in: Rebuilt.
* src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
terms of ffi_prep_closure_loc.
* src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
from...
(ffi_prep_raw_closure): ... this. Re-implement in terms of the
renamed version.
* src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
adjusted from...
(ffi_prep_java_raw_closure): ... this. Re-implement in terms of
the renamed version.
* src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
(ffi_prep_closure): ... this.
* src/pa/ffi.c: Likewise.
* src/cris/ffi.c: Likewise. Adjust.
* src/frv/ffi.c: Likewise.
* src/ia64/ffi.c: Likewise.
* src/mips/ffi.c: Likewise.
* src/powerpc/ffi_darwin.c: Likewise.
* src/s390/ffi.c: Likewise.
* src/sh/ffi.c: Likewise.
* src/sh64/ffi.c: Likewise.
* src/sparc/ffi.c: Likewise.
* src/x86/ffi64.c: Likewise.
* src/x86/ffi.c: Likewise.
(FFI_INIT_TRAMPOLINE): Adjust.
(ffi_prep_raw_closure_loc): Renamed and adjusted from...
(ffi_prep_raw_closure): ... this.
* src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
(ffi_prep_closure): ... this.
(flush_icache): Adjust.
boehm-gc/ChangeLog:
* include/gc.h (GC_REGISTER_FINALIZER_UNREACHABLE): New.
(GC_register_finalizer_unreachable): Declare.
(GC_debug_register_finalizer_unreachable): Declare.
* finalize.c (GC_unreachable_finalize_mark_proc): New.
(GC_register_finalizer_unreachable): New.
(GC_finalize): Handle it.
* dbg_mlc.c (GC_debug_register_finalizer_unreachable): New.
(GC_debug_register_finalizer_no_order): Fix whitespace.
libjava/ChangeLog:
* include/jvm.h (_Jv_ClosureListFinalizer): New.
(_Jv_Linker::create_error_method): Adjust.
* boehm.cc (_Jv_ClosureListFinalizer): New.
* nogc.cc (_Jv_ClosureListFinalizer): New.
* java/lang/Class.h (class _Jv_ClosureList): New.
(class java::lang::Class): Declare it as friend.
* java/lang/natClass.cc (_Jv_ClosureList::releaseClosures): New.
(_Jv_ClosureList::registerClousure): New.
* include/execution.h (_Jv_ExecutionEngine): Add get_closure_list.
(_Jv_CompiledEngine::do_get_closure_list): New.
(_Jv_CompiledEngine::_Jv_CompiledEngine): Use it.
(_Jv_IndirectCompiledClass): Add closures.
(_Jv_IndirectCompiledEngine::get_aux_info): New.
(_Jv_IndirectCompiledEngine::do_allocate_field_initializers): Use
it.
(_Jv_IndirectCompiledEngine::do_get_closure_list): New.
(_Jv_IndirectCompiledEngine::_Jv_IndirectCompiledEngine): Use it.
(_Jv_InterpreterEngine::do_get_closure_list): Declare.
(_Jv_InterpreterEngine::_Jv_InterpreterEngine): Use it.
* interpret.cc (FFI_PREP_RAW_CLOSURE): Use _loc variants.
(node_closure): Add closure list.
(_Jv_InterpMethod::ncode): Add jclass argument. Use
ffi_closure_alloc and the separate code pointer. Register the
closure for finalization.
(_Jv_JNIMethod::ncode): Likewise.
(_Jv_InterpreterEngine::do_create_ncode): Pass klass to ncode.
(_Jv_InterpreterEngine::do_get_closure_list): New.
* include/java-interp.h (_Jv_InterpMethod::ncode): Adjust.
(_Jv_InterpClass): Add closures field.
(_Jv_JNIMethod::ncode): Adjust.
* defineclass.cc (_Jv_ClassReader::handleCodeAttribute): Adjust.
(_Jv_ClassReader::handleMethodsEnd): Likewise.
* link.cc (struct method_closure): Add closure list.
(_Jv_Linker::create_error_method): Add jclass argument. Use
ffi_closure_alloc and the separate code pointer. Register the
closure for finalization.
(_Jv_Linker::link_symbol_table): Remove outdated comment about
sharing of otable and atable. Adjust.
* java/lang/reflect/natVMProxy.cc (ncode_closure): Add closure
list.
(ncode): Add jclass argument. Use ffi_closure_alloc and the
separate code pointer. Register the closure for finalization.
(java::lang::reflect::VMProxy::generateProxyClass): Adjust.
* testsuite/libjava.jar/TestClosureGC.java: New.
* testsuite/libjava.jar/TestClosureGC.out: New.
* testsuite/libjava.jar/TestClosureGC.xfail: New.
* testsuite/libjava.jar/TestClosureGC.jar: New.
From-SVN: r122652
2007-03-07 08:27:25 +01:00
|
|
|
/* Allocate a double-indirect pointer to a _Jv_ClosureList such that
|
|
|
|
the _Jv_ClosureList gets automatically finalized when it is no
|
|
|
|
longer reachable, not even by other finalizable objects. */
|
|
|
|
_Jv_ClosureList **_Jv_ClosureListFinalizer (void) __attribute__((__malloc__));
|
2001-05-24 07:40:37 +02:00
|
|
|
/* Explicitly throw an out-of-memory exception. */
|
2001-05-30 00:18:41 +02:00
|
|
|
void _Jv_ThrowNoMemory() __attribute__((__noreturn__));
|
2001-05-24 07:40:37 +02:00
|
|
|
/* Allocate an object with a single pointer. The first word is reserved
|
|
|
|
for the GC, and the second word is the traced pointer. */
|
|
|
|
void *_Jv_AllocTraceOne (jsize size /* incl. reserved slot */);
|
2001-10-16 00:42:42 +02:00
|
|
|
/* Ditto, but for two traced pointers. */
|
|
|
|
void *_Jv_AllocTraceTwo (jsize size /* incl. reserved slot */);
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Initialize the GC. */
|
|
|
|
void _Jv_InitGC (void);
|
|
|
|
/* Register a finalizer. */
|
|
|
|
void _Jv_RegisterFinalizer (void *object, _Jv_FinalizerFunc *method);
|
2000-09-30 11:56:58 +02:00
|
|
|
/* Compute the GC descriptor for a class */
|
|
|
|
void * _Jv_BuildGCDescr(jclass);
|
1999-04-07 16:42:40 +02:00
|
|
|
|
2000-02-01 07:14:26 +01:00
|
|
|
/* Allocate some unscanned, unmoveable memory. Return NULL if out of
|
|
|
|
memory. */
|
|
|
|
void *_Jv_MallocUnchecked (jsize size) __attribute__((__malloc__));
|
|
|
|
|
2001-10-11 00:25:43 +02:00
|
|
|
/* Initialize finalizers. The argument is a function to be called
|
|
|
|
when a finalizer is ready to be run. */
|
|
|
|
void _Jv_GCInitializeFinalizers (void (*notifier) (void));
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Run finalizers for objects ready to be finalized.. */
|
|
|
|
void _Jv_RunFinalizers (void);
|
|
|
|
/* Run all finalizers. Should be called only before exit. */
|
|
|
|
void _Jv_RunAllFinalizers (void);
|
|
|
|
/* Perform a GC. */
|
|
|
|
void _Jv_RunGC (void);
|
2000-04-02 17:34:17 +02:00
|
|
|
/* Disable and enable GC. */
|
|
|
|
void _Jv_DisableGC (void);
|
|
|
|
void _Jv_EnableGC (void);
|
2001-10-02 16:31:47 +02:00
|
|
|
/* Register a disappearing link. This is a field F which should be
|
|
|
|
cleared when *F is found to be inaccessible. This is used in the
|
|
|
|
implementation of java.lang.ref.Reference. */
|
|
|
|
void _Jv_GCRegisterDisappearingLink (jobject *objp);
|
|
|
|
/* Return true if OBJECT should be reclaimed. This is used to
|
|
|
|
implement soft references. */
|
|
|
|
jboolean _Jv_GCCanReclaimSoftReference (jobject obj);
|
1999-04-07 16:42:40 +02:00
|
|
|
|
2003-09-29 23:13:55 +02:00
|
|
|
/* Register a finalizer for a String object. This is only used by
|
|
|
|
the intern() implementation. */
|
|
|
|
void _Jv_RegisterStringFinalizer (jobject str);
|
|
|
|
/* This is called to actually finalize a possibly-intern()d String. */
|
|
|
|
void _Jv_FinalizeString (jobject str);
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
/* Return approximation of total size of heap. */
|
|
|
|
long _Jv_GCTotalMemory (void);
|
|
|
|
/* Return approximation of total free memory. */
|
|
|
|
long _Jv_GCFreeMemory (void);
|
|
|
|
|
1999-10-22 21:43:41 +02:00
|
|
|
/* Set initial heap size. If SIZE==0, ignore. Should be run before
|
|
|
|
_Jv_InitGC. Not required to have any actual effect. */
|
|
|
|
void _Jv_GCSetInitialHeapSize (size_t size);
|
|
|
|
|
|
|
|
/* Set maximum heap size. If SIZE==0, unbounded. Should be run
|
|
|
|
before _Jv_InitGC. Not required to have any actual effect. */
|
|
|
|
void _Jv_GCSetMaximumHeapSize (size_t size);
|
|
|
|
|
|
|
|
/* External interface to setting the heap size. Parses ARG (a number
|
|
|
|
which can optionally have "k" or "m" appended and calls
|
|
|
|
_Jv_GCSetInitialHeapSize. */
|
|
|
|
void _Jv_SetInitialHeapSize (const char *arg);
|
|
|
|
|
|
|
|
/* External interface to setting the maximum heap size. Parses ARG (a
|
|
|
|
number which can optionally have "k" or "m" appended and calls
|
|
|
|
_Jv_GCSetMaximumHeapSize. */
|
|
|
|
void _Jv_SetMaximumHeapSize (const char *arg);
|
|
|
|
|
2007-10-22 23:24:35 +02:00
|
|
|
/* External interface for setting the GC_free_space_divisor. Calls
|
|
|
|
GC_set_free_space_divisor and returns the old value. */
|
|
|
|
int _Jv_SetGCFreeSpaceDivisor (int div);
|
|
|
|
|
2005-09-27 22:03:09 +02:00
|
|
|
/* Free the method cache, if one was allocated. This is only called
|
|
|
|
during thread deregistration. */
|
|
|
|
void _Jv_FreeMethodCache ();
|
|
|
|
|
2005-11-17 21:25:57 +01:00
|
|
|
/* Set the stack size for threads. Parses ARG, a number which can
|
|
|
|
optionally have "k" or "m" appended. */
|
|
|
|
void _Jv_SetStackSize (const char *arg);
|
|
|
|
|
1999-10-22 21:43:41 +02:00
|
|
|
extern "C" void JvRunMain (jclass klass, int argc, const char **argv);
|
2007-01-09 20:58:05 +01:00
|
|
|
extern "C" void JvRunMainName (const char *name, int argc, const char **argv);
|
|
|
|
|
2001-08-26 13:30:09 +02:00
|
|
|
void _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
|
|
|
|
bool is_jar);
|
1999-10-22 21:43:41 +02:00
|
|
|
|
2005-04-02 04:26:51 +02:00
|
|
|
void _Jv_RunMain (struct _Jv_VMInitArgs *vm_args, jclass klass,
|
|
|
|
const char *name, int argc, const char **argv, bool is_jar);
|
|
|
|
|
2006-02-08 21:07:29 +01:00
|
|
|
// Delayed until after _Jv_AllocRawObj is declared.
|
2001-09-21 18:59:12 +02:00
|
|
|
inline _Jv_VTable *
|
|
|
|
_Jv_VTable::new_vtable (int count)
|
|
|
|
{
|
|
|
|
size_t size = sizeof(_Jv_VTable) + (count - 1) * vtable_elt_size ();
|
2006-02-08 21:07:29 +01:00
|
|
|
return (_Jv_VTable *) _Jv_AllocRawObj (size);
|
2001-09-21 18:59:12 +02:00
|
|
|
}
|
|
|
|
|
2003-10-26 03:25:42 +01:00
|
|
|
// Determine if METH gets an entry in a VTable.
|
|
|
|
static inline jboolean _Jv_isVirtualMethod (_Jv_Method *meth)
|
|
|
|
{
|
|
|
|
using namespace java::lang::reflect;
|
|
|
|
return (((meth->accflags & (Modifier::STATIC | Modifier::PRIVATE)) == 0)
|
2004-08-12 08:53:42 +02:00
|
|
|
&& meth->name->first() != '<');
|
2003-10-26 03:25:42 +01:00
|
|
|
}
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
// This function is used to determine the hash code of an object.
|
|
|
|
inline jint
|
|
|
|
_Jv_HashCode (jobject obj)
|
|
|
|
{
|
2000-08-16 17:30:02 +02:00
|
|
|
// This was chosen to yield relatively well distributed results on
|
2000-09-07 00:25:56 +02:00
|
|
|
// both 32- and 64-bit architectures. Note 0x7fffffff is prime.
|
|
|
|
// FIXME: we assume sizeof(long) == sizeof(void *).
|
|
|
|
return (jint) ((unsigned long) obj % 0x7fffffff);
|
1999-04-07 16:42:40 +02:00
|
|
|
}
|
|
|
|
|
1999-11-25 01:36:51 +01:00
|
|
|
// Return a raw pointer to the elements of an array given the array
|
|
|
|
// and its element type. You might think we could just pick a single
|
|
|
|
// array type and use elements() on it, but we can't because we must
|
2000-04-04 01:36:49 +02:00
|
|
|
// account for alignment of the element type. When ARRAY is null, we
|
|
|
|
// obtain the number of bytes taken by the base part of the array.
|
1999-11-25 01:36:51 +01:00
|
|
|
inline char *
|
|
|
|
_Jv_GetArrayElementFromElementType (jobject array,
|
|
|
|
jclass element_type)
|
|
|
|
{
|
|
|
|
char *elts;
|
|
|
|
if (element_type == JvPrimClass (byte))
|
|
|
|
elts = (char *) elements ((jbyteArray) array);
|
|
|
|
else if (element_type == JvPrimClass (short))
|
|
|
|
elts = (char *) elements ((jshortArray) array);
|
|
|
|
else if (element_type == JvPrimClass (int))
|
|
|
|
elts = (char *) elements ((jintArray) array);
|
|
|
|
else if (element_type == JvPrimClass (long))
|
|
|
|
elts = (char *) elements ((jlongArray) array);
|
|
|
|
else if (element_type == JvPrimClass (boolean))
|
|
|
|
elts = (char *) elements ((jbooleanArray) array);
|
|
|
|
else if (element_type == JvPrimClass (char))
|
|
|
|
elts = (char *) elements ((jcharArray) array);
|
|
|
|
else if (element_type == JvPrimClass (float))
|
|
|
|
elts = (char *) elements ((jfloatArray) array);
|
|
|
|
else if (element_type == JvPrimClass (double))
|
|
|
|
elts = (char *) elements ((jdoubleArray) array);
|
|
|
|
else
|
|
|
|
elts = (char *) elements ((jobjectArray) array);
|
|
|
|
return elts;
|
|
|
|
}
|
|
|
|
|
2002-04-11 17:57:56 +02:00
|
|
|
extern "C" void _Jv_ThrowBadArrayIndex (jint bad_index)
|
|
|
|
__attribute__((noreturn));
|
|
|
|
extern "C" void _Jv_ThrowNullPointerException (void)
|
|
|
|
__attribute__((noreturn));
|
2005-12-08 15:19:13 +01:00
|
|
|
extern "C" void _Jv_ThrowNoSuchMethodError (void)
|
|
|
|
__attribute__((noreturn));
|
|
|
|
extern "C" void _Jv_ThrowNoSuchFieldError (int)
|
|
|
|
__attribute__((noreturn));
|
1999-12-06 07:33:56 +01:00
|
|
|
extern "C" jobject _Jv_NewArray (jint type, jint size)
|
|
|
|
__attribute__((__malloc__));
|
|
|
|
extern "C" jobject _Jv_NewMultiArray (jclass klass, jint dims, ...)
|
|
|
|
__attribute__((__malloc__));
|
1999-04-07 16:42:40 +02:00
|
|
|
extern "C" void *_Jv_CheckCast (jclass klass, jobject obj);
|
|
|
|
extern "C" void *_Jv_LookupInterfaceMethod (jclass klass, Utf8Const *name,
|
resolve.cc (_Jv_SearchMethodInClass): New function.
2000-03-07 Bryce McKinlay <bryce@albatross.co.nz>
* resolve.cc (_Jv_SearchMethodInClass): New function.
(_Jv_ResolvePoolEntry): Search superinterfaces for interface
methods.
* java/lang/Class.h (_Jv_SearchMethodInClass): New prototype.
2000-03-07 Bryce McKinlay <bryce@albatross.co.nz>
* java/lang/Class.h (union _Jv_IDispatchTable): New declaration.
(struct _Jv_ifaces): New declaration.
JV_CLASS: New macro definition.
(getComponentType): Relocate below isArray() for inlining.
(getModifiers): Declare `inline'.
(getSuperclass): Ditto.
(isArray): Ditto.
(isPrimitive): Ditto.
(_Jv_IsAssignableFrom): New prototype.
(_Jv_LookupInterfaceMethodIdx): New prototype. Predeclare with "C"
linkage.
(_Jv_InitClass): Move from natClass.cc. Declare `inline'.
Check for JV_STATE_DONE before invoking initializeClass().
(_Jv_PrepareConstantTimeTables): New prototype.
(_Jv_GetInterfaces): Ditto.
(_Jv_GenerateITable): Ditto.
(_Jv_GetMethodString): Ditto.
(_Jv_AppendPartialITable): Ditto.
(_Jv_FindIIndex): Ditto.
depth, ancestors, idt: New class fields.
* java/lang/natClass.cc (isAssignableFrom): Move functionality to
inline function `_Jv_IsAssignableFrom'. Use that function.
(isInstance): Declare `inline'.
(initializeClass): Get lock on class before checking `state'. Unlock
before calling resolveClass0. Call _Jv_PrepareConstantTimeTables
with the lock held.
(_Jv_LookupInterfaceMethod): Use _Jv_GetMessageString.
(_Jv_IsAssignableFrom): New inline function. Test assignability
using class->depth and ancestor table.
(_Jv_IsInstanceOf): Use _Jv_IsAssignableFrom.
(_Jv_CheckCast): Move from prims.cc. Use JV_CLASS and
_Jv_IsAssignableFrom.
(_Jv_CheckArrayStore): Ditto.
(_Jv_LookupInterfaceMethodIdx): New function.
INITIAL_IOFFSETS_LEN, INITIAL_IFACES_LEN: New #defines.
(_Jv_PrepareConstantTimeTables): New function.
(_Jv_IndexOf): Ditto.
(_Jv_GetInterfaces): Ditto.
(_Jv_GenerateITable): Ditto.
(_Jv_GetMethodString): Ditto.
(_Jv_AppendPartialITable): Ditto.
iindex_mutex, iindex_mutex_initialized: New static fields.
(_Jv_FindIIndex): New function.
* java/lang/natClassLoader.cc (_Jv_NewClass): Set new jclass fields.
* prims.cc (_Jv_CheckCast): Moved to natClass.cc.
(_Jv_CheckArrayStore): Ditto.
(JvNewCharArray, JvNewBooleanArray, JvNewByteArray, JvNewShortArray,
JvNewIntArray, JvNewLongArray, JvNewFloatArray, JvNewDoubleArray):
Moved to gcj/array.h.
(_Jv_Realloc): New function.
* gcj/cni.h: Move _Jv_PrimClass definitions to gcj/array.h.
* gcj/array.h: _Jv_PrimClass definitions moved from gcj/cni.h.
(JvNewCharArray, JvNewBooleanArray, JvNewByteArray,
JvNewShortArray, JvNewIntArray, JvNewLongArray, JvNewFloatArray,
JvNewDoubleArray): Implementations moved from prims.cc and
declared `inline'.
* gcj/javaprims.h (_Jv_Realloc): Prototype.
* include/jvm.h (_Jv_LookupInterfaceMethodIdx): Prototype.
From-SVN: r32382
2000-03-07 10:52:56 +01:00
|
|
|
Utf8Const *signature);
|
|
|
|
extern "C" void *_Jv_LookupInterfaceMethodIdx (jclass klass, jclass iface,
|
|
|
|
int meth_idx);
|
1999-04-07 16:42:40 +02:00
|
|
|
extern "C" void _Jv_CheckArrayStore (jobject array, jobject obj);
|
|
|
|
extern "C" void _Jv_RegisterClass (jclass klass);
|
2004-10-26 08:09:05 +02:00
|
|
|
extern "C" void _Jv_RegisterClasses (const jclass *classes);
|
|
|
|
extern "C" void _Jv_RegisterClasses_Counted (const jclass *classes,
|
|
|
|
size_t count);
|
2001-09-07 00:32:54 +02:00
|
|
|
extern "C" void _Jv_RegisterResource (void *vptr);
|
[multiple changes]
1999-08-09 Anthony Green <green@cygnus.com>
* gij.cc: New file.
* include/config.h.in: Rebuilt.
* acconfig.h: Add INTERPRETER.
* configure: Rebuilt.
* Makefile.in: Rebuilt.
* Makefile.am (libffi_files): Identify the libffi object files for
inclusion in libgcj.
(LIBFFIINCS): Define.
* interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1):
Dummy definition for configurations without an interpreter.
* java/net/natPlainSocketImpl.cc (getOption): Disamiguate call to
java::lang::Boolean constructor.
* include/java-interp.h: Always include java-cpool.h.
* java/lang/natClassLoader.cc (getVMClassLoader0): Always return 0
when INTERPRETER not defined.
* java/lang/Class.h (finalize): Define.
* gnu/gcj/util/path/DirectoryPathEntry.java (getURL): Catch
IOException from File.getCanonicalPath.
(getStream): Likewise.
* NEWS: More news.
* THANKS: More thanks.
1999-08-09 Kresten Krab Thorup <krab@gnu.org>
* resolve.cc (get_ffi_type_from_signature): Generate uint16 for
jchar type.
(_Jv_PrepareClass): Allow non-abstract classes to
have abstract subclasses.
(_Jv_ResolvePoolEntry): Revert subclass check for protected
fields and methods.
* interpret.cc (continue1/perform_invoke): Don't sign extend
uint16 return val.
(continue1/lshl,lshr): Push long, not int.
(continue1/ulshr): Use UINT64, not long long.
* defineclass.cc (handleFieldsEnd): Handle case when all fields
are static.
* java/lang/natClass.cc (forName): Add call to _Jv_InitClass.
* java/lang/FirstThread.java (run): Add top-level exception
handler.
(run0): Renamed from run.
1999-08-08 Kresten Krab Thorup <krab@gnu.org>
* configure.in (--with-interpreter): Added.
* include/config.h.in (INTERPRETER): Added.
* java/lang/ClassLoader.java: File replaced.
* java/lang/VMClassLoader.java: New file.
* java/lang/natClassLoader.cc: New file.
* gnu/gcj/runtime/MethodInvocation.java: New file.
* gnu/gcj/util/path/SearchPath.java: New file.
* gnu/gcj/util/path/PathEntry.java: New file.
* gnu/gcj/util/path/DirectoryPathEntry.java: New file.
* gnu/gcj/util/path/ZipPathEntry.java: New file.
* gnu/gcj/util/path/URLPathEntry.java: New file.
* gnu/gcj/util/path/CacheEntry.java: New file.
* include/java-interp.h: New file.
* include/java-cpool.h: New file.
* include/java-insns.h: New file.
* defineclass.cc: New file.
* interpret.cc: New file.
* resolve.cc: New file.
* java/lang/natClass.cc (loaded_classes, _Jv_RegisterClass,
_Jv_RegisterClasses, _Jv_FindClassInCache, _Jv_FindClass,
_Jv_NewClass, _Jv_FindArrayClass): Moved to natClassLoader.cc.
(finalize): New.
(STATE_NOTHING, STATE_RESOLVED, STATE_IN_PROGRESS, STATE_DONE,
STATE_ERROR): Moved to java/lang/Class.h and renamed with JV_
prefix.
(initializeClass): Use new JV_ prefixed names. Also, call
ClassLoader::resolveClass instead of _Jv_ResolveClass.
* java/lang/Class.h (JV_STATE_PRELOADING, JV_STATE_LOADING,
JV_STATE_LOADED, JV_STATE_COMPILED, JV_STATE_PREPARED,
JV_STATE_LINKED): New.
(_Jv_WaitForState, _Jv_RegisterInitiatingLoader,
_Jv_UnregisterClass, _Jv_InternClassStrings): New friends.
(_Jv_IsInterpretedClass, _Jv_InitField, _Jv_LookupDeclaredMethod,
_Jv_DetermineVTableIndex, _Jv_ResolvePoolEntry, _Jv_PrepareClass,
_Jv_ClassReader, _Jv_InterpClass, _Jv_InterpMethod,
_Jv_InterpMethodInvocation): New friends for interpreter.
(finalize): New.
(CONSTANT_Class, CONSTANT_String, etc.): Moved to
include/java-cpool.h and renamed with JV_ prefix.
* include/jvm.h (_Jv_makeUtf8Const, _Jv_makeUtf8TypeConst): New
decls.
(_Jv_UnregisterClass): New decl.
* java/lang/natClassLoader.cc (_Jv_FindArrayClass): Added
class loader argument.
(_Jv_FindClass): Use class loader.
* prims.cc (_Jv_makeUtf8Const): New function.
(_Jv_NewObjectArray): Change use of _Jv_FindArrayClass.
(_Jv_NewPrimArray): Ditto.
(_Jv_FindClassFromSignature): Ditto.
* java/lang/reflect/natArray.cc (newInstance): Ditto.
* java/lang/reflect/natMethod.cc (getType): Ditto.
* include/java-field.h (_Jv_Field::isRef): Make robust for
non-resolved contexts.
* boehm.cc (_Jv_MarkObj): Mark interpreter-related fields.
Also, don't mark class->next field.
* java/lang/VirtualMachineError.java: Added FIXME note.
* configure.in (INTERPSPEC): New spec.
* libgcj.spec.in: Added INTERPSPEC.
* Makefile.am: Added gcjh friends for java/lang/VMClassLoader and
gnu/gcj/runtime/MethodInvocation.
(libgcj_la_SOURCES): Added resolve.cc defineclass.cc interpret.cc.
(ordinary_java_source_files): Added above mentioned java classes.
* configure: Rebuilt.
* Makefile.in: Rebuilt.
From-SVN: r28597
1999-08-08 16:06:23 +02:00
|
|
|
extern void _Jv_UnregisterClass (_Jv_Utf8Const*, java::lang::ClassLoader*);
|
|
|
|
|
2005-11-29 19:34:58 +01:00
|
|
|
extern "C" jobject _Jv_UnwrapJNIweakReference (jobject);
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
extern jclass _Jv_FindClass (_Jv_Utf8Const *name,
|
|
|
|
java::lang::ClassLoader *loader);
|
2006-02-01 14:40:05 +01:00
|
|
|
|
|
|
|
extern jclass _Jv_FindClassNoException (_Jv_Utf8Const *name,
|
|
|
|
java::lang::ClassLoader *loader);
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
extern jclass _Jv_FindClassFromSignature (char *,
|
2005-04-06 00:26:26 +02:00
|
|
|
java::lang::ClassLoader *loader,
|
|
|
|
char ** = NULL);
|
2006-02-01 14:40:05 +01:00
|
|
|
|
|
|
|
extern jclass _Jv_FindClassFromSignatureNoException (char *,
|
|
|
|
java::lang::ClassLoader *loader,
|
|
|
|
char ** = NULL);
|
|
|
|
|
2000-01-04 09:46:52 +01:00
|
|
|
extern void _Jv_GetTypesFromSignature (jmethodID method,
|
|
|
|
jclass declaringClass,
|
|
|
|
JArray<jclass> **arg_types_out,
|
|
|
|
jclass *return_type_out);
|
natConstructor.cc (newInstance): Use _Jv_CallAnyMethodA.
* java/lang/reflect/natConstructor.cc (newInstance): Use
_Jv_CallAnyMethodA.
* include/jvm.h: Declare _Jv_CallAnyMethodA.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Renamed
from _Jv_CallNonvirtualMethodA. Changed interface; overloaded.
Include <jni.h>.
(COPY): Removed.
(invoke): Use _Jv_CallAnyMethodA.
(VAL): Redefined.
* java/lang/Class.h (Class): Declare JvGetFirstStaticField,
JvNumStaticFields, JvNumMethods, and JvGetFirstMethod as friend
functions.
(struct _Jv_Method): Added getNextMethod method.
(JvNumMethods): New function.
(JvGetFirstMethod): Likewise.
* gcj/field.h (JvGetFirstStaticField): New function.
(JvNumStaticFields): Likewise.
(getNextField): Renamed from getNextInstanceField.
(struct _Jv_Field): New method getClass.
* jni.cc: Wrote many new functions.
* include/jni.h (JNI_TRUE): Define.
(JNI_FALSE): Likewise.
(jobject, jclass, jstring, jarray, jthrowable, jobjectArray,
jbyteArray, jshortArray, jintArray, jlongArray, jbooleanArray,
jcharArray, jfloatArray, jdoubleArray): New typedefs.
(jfieldID, jmethodID): Likewise.
(JNI_COMMIT, JNI_ABORT): New defines.
(JNINativeMethod): New struct.
(struct JNINativeInterface): Correctly declared more entries.
(class _Jv_JNIEnv): Added `ex' member.
(JNI_VERSION_1_1): New define.
(JNI_VERSION_1_2): Likewise.
* boehm.cc (_Jv_MarkObj): Use getNextField, not
getNextInstanceField.
From-SVN: r31553
2000-01-22 00:50:31 +01:00
|
|
|
|
2003-07-21 03:54:06 +02:00
|
|
|
extern jboolean _Jv_CheckAccess (jclass self_klass, jclass other_klass,
|
|
|
|
jint flags);
|
|
|
|
|
natConstructor.cc (newInstance): Use _Jv_CallAnyMethodA.
* java/lang/reflect/natConstructor.cc (newInstance): Use
_Jv_CallAnyMethodA.
* include/jvm.h: Declare _Jv_CallAnyMethodA.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Renamed
from _Jv_CallNonvirtualMethodA. Changed interface; overloaded.
Include <jni.h>.
(COPY): Removed.
(invoke): Use _Jv_CallAnyMethodA.
(VAL): Redefined.
* java/lang/Class.h (Class): Declare JvGetFirstStaticField,
JvNumStaticFields, JvNumMethods, and JvGetFirstMethod as friend
functions.
(struct _Jv_Method): Added getNextMethod method.
(JvNumMethods): New function.
(JvGetFirstMethod): Likewise.
* gcj/field.h (JvGetFirstStaticField): New function.
(JvNumStaticFields): Likewise.
(getNextField): Renamed from getNextInstanceField.
(struct _Jv_Field): New method getClass.
* jni.cc: Wrote many new functions.
* include/jni.h (JNI_TRUE): Define.
(JNI_FALSE): Likewise.
(jobject, jclass, jstring, jarray, jthrowable, jobjectArray,
jbyteArray, jshortArray, jintArray, jlongArray, jbooleanArray,
jcharArray, jfloatArray, jdoubleArray): New typedefs.
(jfieldID, jmethodID): Likewise.
(JNI_COMMIT, JNI_ABORT): New defines.
(JNINativeMethod): New struct.
(struct JNINativeInterface): Correctly declared more entries.
(class _Jv_JNIEnv): Added `ex' member.
(JNI_VERSION_1_1): New define.
(JNI_VERSION_1_2): Likewise.
* boehm.cc (_Jv_MarkObj): Use getNextField, not
getNextInstanceField.
From-SVN: r31553
2000-01-22 00:50:31 +01:00
|
|
|
extern jobject _Jv_CallAnyMethodA (jobject obj, jclass return_type,
|
|
|
|
jmethodID meth, jboolean is_constructor,
|
|
|
|
JArray<jclass> *parameter_types,
|
2004-04-14 19:45:20 +02:00
|
|
|
jobjectArray args,
|
|
|
|
jclass iface = NULL);
|
natConstructor.cc (newInstance): Use _Jv_CallAnyMethodA.
* java/lang/reflect/natConstructor.cc (newInstance): Use
_Jv_CallAnyMethodA.
* include/jvm.h: Declare _Jv_CallAnyMethodA.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Renamed
from _Jv_CallNonvirtualMethodA. Changed interface; overloaded.
Include <jni.h>.
(COPY): Removed.
(invoke): Use _Jv_CallAnyMethodA.
(VAL): Redefined.
* java/lang/Class.h (Class): Declare JvGetFirstStaticField,
JvNumStaticFields, JvNumMethods, and JvGetFirstMethod as friend
functions.
(struct _Jv_Method): Added getNextMethod method.
(JvNumMethods): New function.
(JvGetFirstMethod): Likewise.
* gcj/field.h (JvGetFirstStaticField): New function.
(JvNumStaticFields): Likewise.
(getNextField): Renamed from getNextInstanceField.
(struct _Jv_Field): New method getClass.
* jni.cc: Wrote many new functions.
* include/jni.h (JNI_TRUE): Define.
(JNI_FALSE): Likewise.
(jobject, jclass, jstring, jarray, jthrowable, jobjectArray,
jbyteArray, jshortArray, jintArray, jlongArray, jbooleanArray,
jcharArray, jfloatArray, jdoubleArray): New typedefs.
(jfieldID, jmethodID): Likewise.
(JNI_COMMIT, JNI_ABORT): New defines.
(JNINativeMethod): New struct.
(struct JNINativeInterface): Correctly declared more entries.
(class _Jv_JNIEnv): Added `ex' member.
(JNI_VERSION_1_1): New define.
(JNI_VERSION_1_2): Likewise.
* boehm.cc (_Jv_MarkObj): Use getNextField, not
getNextInstanceField.
From-SVN: r31553
2000-01-22 00:50:31 +01:00
|
|
|
|
|
|
|
union jvalue;
|
2003-08-18 16:36:07 +02:00
|
|
|
extern void _Jv_CallAnyMethodA (jobject obj,
|
|
|
|
jclass return_type,
|
|
|
|
jmethodID meth,
|
|
|
|
jboolean is_constructor,
|
2003-10-26 03:25:42 +01:00
|
|
|
jboolean is_virtual_call,
|
2003-08-18 16:36:07 +02:00
|
|
|
JArray<jclass> *parameter_types,
|
Import GNU Classpath (libgcj-import-20070727).
libjava/
2007-08-04 Matthias Klose <doko@ubuntu.com>
Import GNU Classpath (libgcj-import-20070727).
* Regenerate class and header files.
* Regenerate auto* files.
* include/jvm.h:
* jni-libjvm.cc (Jv_JNI_InvokeFunctions): Rename type.
* jni.cc (_Jv_JNIFunctions, _Jv_JNI_InvokeFunctions): Likewise.
* jni.cc (_Jv_JNI_CallAnyMethodA, _Jv_JNI_CallAnyVoidMethodA,
_Jv_JNI_CallMethodA, _Jv_JNI_CallVoidMethodA,
_Jv_JNI_CallStaticMethodA, _Jv_JNI_CallStaticVoidMethodA,
_Jv_JNI_NewObjectA, _Jv_JNI_SetPrimitiveArrayRegion): Constify
jvalue parameter.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise.
* java/lang/VMFloat.java (toString, parseFloat): New.
* gnu/awt/xlib/XToolkit.java (setAlwaysOnTop, isModalityTypeSupported,
isModalExclusionTypeSupported): New (stub only).
* gnu/awt/xlib/XCanvasPeer.java (requestFocus): Likewise.
* gnu/awt/xlib/XFramePeer.java (updateMinimumSize, updateIconImages,
updateFocusableWindowState, setModalBlocked, getBoundsPrivate,
setAlwaysOnTop): Likewise.
* gnu/awt/xlib/XFontPeer.java (canDisplay): Update signature.
* scripts/makemake.tcl: Ignore gnu/javax/sound/sampled/gstreamer,
ignore javax.sound.sampled.spi.MixerProvider, ignore .in files.
* HACKING: Mention --enable-gstreamer-peer, removal of generated files.
libjava/classpath/
2007-08-04 Matthias Klose <doko@ubuntu.com>
* java/util/EnumMap.java (clone): Add cast.
From-SVN: r127204
2007-08-04 12:53:49 +02:00
|
|
|
const jvalue *args,
|
2003-08-18 16:36:07 +02:00
|
|
|
jvalue *result,
|
2004-04-14 19:45:20 +02:00
|
|
|
jboolean is_jni_call = true,
|
|
|
|
jclass iface = NULL);
|
1999-04-07 16:42:40 +02:00
|
|
|
|
2008-03-13 17:43:54 +01:00
|
|
|
extern void _Jv_CheckOrCreateLoadingConstraint (jclass,
|
|
|
|
java::lang::ClassLoader *);
|
|
|
|
|
1999-12-06 07:33:56 +01:00
|
|
|
extern jobject _Jv_NewMultiArray (jclass, jint ndims, jint* dims)
|
|
|
|
__attribute__((__malloc__));
|
1999-04-07 16:42:40 +02:00
|
|
|
|
2005-06-15 21:11:43 +02:00
|
|
|
extern "C" void _Jv_ThrowAbstractMethodError () __attribute__((__noreturn__));
|
|
|
|
|
1999-07-21 17:11:56 +02:00
|
|
|
/* Checked divide subroutines. */
|
|
|
|
extern "C"
|
|
|
|
{
|
|
|
|
jint _Jv_divI (jint, jint);
|
|
|
|
jint _Jv_remI (jint, jint);
|
|
|
|
jlong _Jv_divJ (jlong, jlong);
|
|
|
|
jlong _Jv_remJ (jlong, jlong);
|
|
|
|
}
|
|
|
|
|
2003-04-25 18:48:13 +02:00
|
|
|
/* Get the number of arguments (cf. argc) or 0 if our argument
|
|
|
|
list was never initialized. */
|
|
|
|
extern int _Jv_GetNbArgs (void);
|
|
|
|
|
|
|
|
/* Get the specified argument (cf. argv[index]) or "" if either
|
|
|
|
our argument list was never initialized or the specified index
|
|
|
|
is out of bounds. */
|
|
|
|
extern const char * _Jv_GetSafeArg (int index);
|
|
|
|
|
|
|
|
/* Sets our argument list. Can be used by programs with non-standard
|
|
|
|
entry points. */
|
|
|
|
extern void _Jv_SetArgs (int argc, const char **argv);
|
|
|
|
|
|
|
|
/* Get the name of the running executable. */
|
2003-03-10 20:45:30 +01:00
|
|
|
extern const char *_Jv_ThisExecutable (void);
|
2000-01-17 16:45:24 +01:00
|
|
|
|
2000-02-04 21:49:27 +01:00
|
|
|
/* Return a pointer to a symbol in executable or loaded library. */
|
|
|
|
void *_Jv_FindSymbolInExecutable (const char *);
|
|
|
|
|
2000-02-01 07:14:26 +01:00
|
|
|
/* Initialize JNI. */
|
|
|
|
extern void _Jv_JNI_Init (void);
|
|
|
|
|
2000-02-10 21:31:48 +01:00
|
|
|
/* Get or set the per-thread JNIEnv used by the invocation API. */
|
|
|
|
_Jv_JNIEnv *_Jv_GetCurrentJNIEnv ();
|
|
|
|
void _Jv_SetCurrentJNIEnv (_Jv_JNIEnv *);
|
|
|
|
|
2005-01-14 08:36:27 +01:00
|
|
|
/* Free a JNIEnv. */
|
|
|
|
void _Jv_FreeJNIEnv (_Jv_JNIEnv *);
|
|
|
|
|
2007-01-23 00:04:16 +01:00
|
|
|
extern "C" void _Jv_JNI_PopSystemFrame (_Jv_JNIEnv *);
|
|
|
|
_Jv_JNIEnv *_Jv_GetJNIEnvNewFrameWithLoader (::java::lang::ClassLoader *);
|
[multiple changes]
2005-02-15 Mark Wielaard <mark@klomp.org>
* java/awt/BasicStroke.java (hashCode): Check for null dash.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GtkArg.java,
gnu/java/awt/peer/gtk/GtkArgList.java:
Removed.
2005-02-15 Craig Black <craig.black@aonix.com>
* gnu/java/awt/peer/gtk/GtkCheckboxMenuItem.java
(postMenuActionEvent): Implement to notify ItemListeners.
* java/awt/CheckboxMenuItem.java
(dispatchEventImpl): Update state on ItemEvent.
* java/awt/MenuItem.java
(processActionEvent): Retarget event source.
2005-02-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/java/awt/color/ClutProfileConverter.java,
gnu/java/awt/peer/ClasspathTextLayoutPeer.java,
gnu/java/awt/peer/gtk/GdkFontPeer.java,
gnu/java/awt/peer/gtk/GdkGlyphVector.java,
gnu/java/awt/peer/gtk/GdkGraphics2D.java,
gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
gnu/java/awt/peer/gtk/GdkRobotPeer.java,
gnu/java/awt/peer/gtk/GdkTextLayout.java,
gnu/java/awt/peer/gtk/GtkButtonPeer.java,
gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
gnu/java/awt/peer/gtk/GtkChoicePeer.java,
gnu/java/awt/peer/gtk/GtkComponentPeer.java,
gnu/java/awt/peer/gtk/GtkContainerPeer.java,
gnu/java/awt/peer/gtk/GtkDialogPeer.java,
gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
gnu/java/awt/peer/gtk/GtkFontPeer.java,
gnu/java/awt/peer/gtk/GtkFramePeer.java,
gnu/java/awt/peer/gtk/GtkLabelPeer.java,
gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java,
gnu/java/awt/peer/gtk/GtkMenuItemPeer.java,
gnu/java/awt/peer/gtk/GtkScrollPanePeer.java,
gnu/java/awt/peer/gtk/GtkTextComponentPeer.java,
gnu/java/awt/peer/gtk/GtkToolkit.java,
gnu/java/awt/peer/gtk/GtkWindowPeer.java,
javax/swing/JPopupMenu.java,
javax/swing/JSpinner.java,
javax/swing/SortingFocusTraversalPolicy.java,
javax/swing/SwingUtilities.java,
javax/swing/plaf/basic/BasicComboBoxEditor.java,
javax/swing/plaf/basic/BasicComboBoxRenderer.java,
javax/swing/tree/DefaultMutableTreeNode.java:
Removed unused imports and expanded starred
imports.
2005-02-15 Mark Wielaard <mark@klomp.org>
* java/awt/AWTKeyStroke.java (getAWTKeyStroke(String)): Throw
IllegalArgumentException when the given String is null.
* javax/swing/KeyStroke.java (getKeyStroke(String)): Return null
when given keystoke sequence cannot be parsed.
* javax/swing/JRootPane.java (setJMenuBar): Remove current menubar
if one is installed. Only install the given menubar is not null.
* javax/swing/JViewport.java (getViewSize): Return an empty
Dimension when the view isn't set or preferred component size when
no viewSize is set.
* javax/swing/ViewportLayout.java (preferredLayoutSize): Return an
empty Dimension when there is no view set.
(minimumLayoutSize): Likewise.
(layoutContainer): Don't try to layout when there is no view.
2005-02-15 Anthony Green <green@redhat.com>
* jni/gtk-peer/gtk_jawt.c (classpath_jawt_get_drawable,
classpath_jawt_lock, classpath_jawt_unlock): New functions.
* jawt.c (_Jv_JAWT_Lock, _Jv_JAWT_Unlock): New functions.
(_Jv_GetDrawingSurface): Set visualID.
(_Jv_FreeDrawingSurfaceInfo): Clear visualID.
(JAWT_GetAWT): Set Lock and Unlock.
* include/jawt_md.h (struct _JAWT_X11DrawingSurfaceInfo): Add visualID.
* include/jawt.h (JAWT_VERSION_1_4, JAWT_LOCK_ERROR,
JAWT_LOCK_CLIP_CHANGED, JAWT_LOCK_BOUNDS_CHANGED,
JAWT_LOCK_SURFACE_CHANGED): New macros.
(struct _JAWT): Add Lock and Unlock.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* jawt.c: New file.
* include/jawt.h: Likewise.
* include/jawt_md.h: Likewise.
* include/Makefile.am (tool_include__HEADERS): Add jawt.h and
jawt_md.h files.
* jni/classpath/classpath_jawt.h: Likewise.
* jni/gtk-peer/gtk_jawt.c: Likewise.
* Makefile.am: Build libjawt.so.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkGraphics2D.java:
Merged file header with classpath CVS head.
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java:
Merged code formatting with classpath CVS head.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c:
Removed debug code.
(Java_gnu_java_awt_peer_gtk_GdkFontPeer_getGlyphVector):
Handle special JNI strings with 2 '\0' at the end.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c:
Merged file header with classpath CVS head.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c:
Merged code formatting with classpath CVS head.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c (create):
Use GTK's built-in file system backend. Use GTK_RESPONSE_ACCEPT.
(handle_response): Use GTK_RESPONSE_ACCEPT.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* Makefile.am: Fix library build breakage.
* Makefile.in: Regenerate.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTabbedPane.java
(Page.setDisplayedMnemonicIndex): Handle empty menmonic.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/tree/DefaultMutableTreeNode.java:
Reworked Javadocs all over.
(getPathToRoot): Fixed direction of result array initialization.
2005-02-15 Michael Koch <konqueror@gmx.de>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c:
Fix includes for cairo 0.3.0 snappshot.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c:
Merged file header from classpath CVS HEAD.
2005-02-15 Craig Black <craig.black@aonix.com>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
(copyState): Pass a JNI global reference to signal handler.
(realize_cb): Use and free JNI global reference.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c
(create): Pass a JNI global reference to signal handler.
(selection_changed): Match declaration.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
(dispose): Do not remove entries from state tables until after widget is
destroyed.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/Container.javai (paramString):
If layoutMgr is null just return result of super.paramString().
* java/awt/Scrollbar.java: Reformatted.
* java/awt/im/InputContext.java (static):
Removed redundant initializations.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/ImageIcon.java,
javax/swing/UIManager.java,
javax/swing/text/EditorKit.java,
javax/swing/text/Segment.java:
More whitespace cleanups.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/EmbeddedWindow.java,
gnu/java/awt/image/ImageDecoder.java,
gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
java/awt/DefaultKeyboardFocusManager.java,
java/awt/Frame.java,
java/awt/image/RGBImageFilter.java,
javax/swing/AbstractButton.java,
javax/swing/ActionMap.java,
javax/swing/ComponentInputMap.java,
javax/swing/DefaultDesktopManager.java,
javax/swing/ImageIcon.java,
javax/swing/InputMap.java,
javax/swing/JButton.java,
javax/swing/JCheckBox.java,
javax/swing/JCheckBoxMenuItem.java,
javax/swing/JEditorPane.java,
javax/swing/JMenu.java,
javax/swing/JMenuItem.java,
javax/swing/JOptionPane.java,
javax/swing/JRootPane.java,
javax/swing/JTable.java,
javax/swing/MenuSelectionManager.java,
javax/swing/RepaintManager.java,
javax/swing/ScrollPaneLayout.java,
javax/swing/SortingFocusTraversalPolicy.java,
javax/swing/UIManager.java,
javax/swing/ViewportLayout.java,
javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java,
javax/swing/plaf/basic/BasicInternalFrameUI.java,
javax/swing/plaf/basic/BasicLabelUI.java,
javax/swing/plaf/basic/BasicListUI.java,
javax/swing/plaf/basic/BasicMenuItemUI.java,
javax/swing/plaf/basic/BasicMenuUI.java,
javax/swing/plaf/basic/BasicOptionPaneUI.java,
javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java,
javax/swing/plaf/basic/BasicRootPaneUI.java,
javax/swing/plaf/basic/BasicScrollPaneUI.java,
javax/swing/plaf/basic/BasicSplitPaneDivider.java,
javax/swing/plaf/basic/BasicTextUI.java,
javax/swing/table/TableColumnModel.java,
javax/swing/text/AbstractDocument.java,
javax/swing/text/EditorKit.java,
javax/swing/text/Position.java,
javax/swing/text/Segment.java,
javax/swing/text/StyledEditorKit.java,
javax/swing/text/ViewFactory.java:
Cleanup whitespace differences to classpath CVS HEAD.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java:
(finalize): Call finish from here.
(produce): Not from here.
* Makefile.am (gtk_c_source_files):
Remove jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c.
* Makefile.in: Regenerate.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java
(cairoSetFont):
(cairoDrawGdkTextLayout):
(cairoDrawString):
(getPeerTextMetrics):
(getPeerFontMetrics): Remove.
(setFont): Don't call cairoSetFont.
(cairoDrawGlyphVector): Accept font peer argument.
(drawGlyphVector): Pass font peer to cairoDrawGlyphVector.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(ensure_metrics_cairo):
(gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetFont):
(gnu_java_awt_peer_gtk_GdkGraphics2D_cairoDrawString):
(gnu_java_awt_peer_gtk_GdkGraphics2D_getPeerFontMetrics):
(gnu_java_awt_peer_gtk_GdkGraphics2D_getPeerTextMetrics):
(metrics_cairo):
(metrics_surface): Remove.
(gnu_java_awt_peer_gtk_GdkGraphics2D_cairoDrawGlyphVector):
Pass and install font peer.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* Makefile.am: Create "split library" structure.
* Makefile.in: Regenerate.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:
Release GDK lock during upcalls.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c: Remove.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
(Java_gnu_java_awt_peer_gtk_GdkFontPeer_getGlyphVector):
(Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics):
(Java_gnu_java_awt_peer_gtk_GdkFontPeer_getTextMetrics): New methods.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c: Remove.
* gnu/java/awt/peer/gtk/GdkFontPeer.java
(getGlyphVector):
(getFontMetrics):
(getTextMetrics): New native methods.
* gnu/java/awt/peer/gtk/GdkFontMetrics.java: Remove native parts.
* gnu/java/awt/peer/gtk/GdkGlyphVector.java: Likewise.
* Makefile.am: Remove native entries for GdkFontMetrics, GdkGlyphVector.
* Makefile.in: Regenerate.
2005-02-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
* javax/swing/SwingUtilities.java:
(getAccessibleAt(java.awt.Component, java.awt.Point)):
Implemented and documented.
(getAccessibleChild(java.awt.Component, int)): Likewise.
(getAccessibleChildrenCount(java.awt.Component)): Likewise.
(getAccessibleIndexInParent(java.awt.Component)): Likewise.
(getAccessibleStateSet(java.awt.Component)): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/SwingUtilities.java
(getFontMetrics): Removed.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/Container.java
(paramString): Implemented.
* javax/swing/AbstractButton.java
(paramString): Implemented.
* javax/swing/JComponent.java
(paramString): Implemented.
* javax/swing/JMenu.java
(paramString): Implemented.
* javax/swing/JMenuBar.java
(paramString): Implemented.
* javax/swing/JMenuItem.java
(paramString): Implemented.
* javax/swing/JPopupMenu.java
(paramString): Implemented.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JMenu.java
(uiClassID): Removed.
(JMenu): Set invoker on popup menu.
(getUIClassID): Return id directly.
(getItemCount): Simply return getMenuComponentCount().
Fixed javadoc.
(isTopLevelMenu): Simplified.
* javax/swing/JMenuItem.java
(uiClassID): Removed.
(getUIClassID): Return id directly.
* javax/swing/JPopupMenu.java
(uiClassID): Removed.
(JPopupMenu): Always initialize correctly.
(getSubElements): Only return components implementing MenuElement
interface.
(HeavyWeightPopup.hide): Removed.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/image/ReplicateScaleFilter.java
(replicatePixels): Made private.
* javax/swing/colorchooser/DefaultRGBChooserPanel.java
(DefaultRGBChooserPanel): Made package private.
* javax/swing/colorchooser/DefaultSwatchChooserPanel.java
(RecentSwatchPanel): Likewise.
* javax/swing/event/MouseInputAdapter.java: Reformatted.
(MouseInputAdapter): Made abstract.
* javax/swing/tree/DefaultMutableTreeNode.java
(random): Removed.
(growTree): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/dnd/DropTarget.java (addDropTargetListener):
Clarified comments.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JComponent.java (getComponentGraphics):
Removed accidently commited code.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* java/awt/dnd/DropTarget.java
(addDropTargetListener): Despite documentation, do not throw.
* javax/swing/JComponent.java: Set a default DropTarget.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractAction.java
(ENABLED_PROPERTY): Removed.
(setEnabled): Replaced constant with real string.
* javax/swing/AbstractButton.java
(createActionPropertyChangeListener.propertyChange): Likewise.
* javax/swing/JComboBox.java
(DEFAULT_MAXIMUM_ROW_COUNT): Made private.
(EDITABLE_CHANGED_PROPERTY): Removed.
(MAXIMUM_ROW_COUNT_CHANGED_PROPERTY):Likewise.
(ENABLED_CHANGED_PROPERTY):Likewise.
(RENDERER_CHANGED_PROPERTY):Likewise.
(EDITOR_CHANGED_PROPERTY):Likewise.
(MODEL_CHANGED_PROPERTY):Likewise.
(uiClassID):Likewise.
(getUIClassID): Replaced constant with real string.
(setModel):Likewise.
(setEditable):Likewise.
(setMaximumRowCount):Likewise.
(setRenderer):Likewise.
(setEditor):Likewise.
(setEnabled):Likewise.
* javax/swing/JLabel.java
(DISABLED_ICON_CHANGED_PROPERTY): Removed.
(DISPLAYED_MNEMONIC_CHANGED_PROPERTY): Likewise.
(DISPLAYED_MNEMONIC_INDEX_CHANGED_PROPERTY): Likewise.
(HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY): Likewise.
(HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY): Likewise.
(ICON_CHANGED_PROPERTY): Likewise.
(ICON_TEXT_GAP_CHANGED_PROPERTY): Likewise.
(LABEL_FOR_CHANGED_PROPERTY): Likewise.
(TEXT_CHANGED_PROPERTY): Likewise.
(VERTICAL_ALIGNMENT_CHANGED_PROPERTY): Likewise.
(VERTICAL_TEXT_POSITION_CHANGED_PROPERTY): Likewise.
(setText): Replaced constant with real string.
(setIcon): Likewise.
(setDisabledIcon): Likewise.
(setDisplayedMnemonic): Likewise.
(setIconTextGap): Likewise.
(setVerticalAlignment): Likewise.
(setHorizontalAlignment): Likewise.
(setVerticalTextPosition): Likewise.
(setHorizontalTextPosition): Likewise.
(setLabelFor): Replaced constant with real string.
Fire property change event after property got changed.
* javax/swing/JList.java
(CELL_RENDERER_PROPERTY_CHANGED): Likewise.
(FIXED_CELL_HEIGHT_PROPERTY_CHANGED): Likewise.
(FIXED_CELL_WIDTH_PROPERTY_CHANGED): Likewise.
(LAYOUT_ORIENTATION_PROPERTY_CHANGED): Likewise.
(MODEL_PROPERTY_CHANGED): Likewise.
(PROTOTYPE_CELL_VALUE_PROPERTY_CHANGED): Likewise.
(SELECTION_BACKGROUND_PROPERTY_CHANGED): Likewise.
(SELECTION_FOREGROUND_PROPERTY_CHANGED): Likewise.
(SELECTION_MODEL_PROPERTY_CHANGED): Likewise.
(setFixedCellWidth): Reimplemented.
(setFixedCellHeight): Exit if new value is identical.
Replaced constant with real string.
(setSelectionBackground): Likewise.
(setSelectionForeground): Likewise.
(setPrototypeCellValue): Likewise.
(setCellRenderer): Replaced constant with real string.
(setModel): Likewise.
(setSelectionModel): Likewise.
* javax/swing/JMenuBar.java
(BORDER_PAINTED_CHANGED_PROPERTY): Removed.
(MODEL_CHANGED_PROPERTY): Likewise.
(MARGIN_CHANGED_PROPERTY): Likewise.
(setBorderPainted): Reimplemented.
(setMargin): Likewise.
(setSelectionModel): Replaced constant with real string.
* javax/swing/JPopupMenu.java
(LABEL_CHANGED_PROPERTY): Removed.
(VISIBLE_CHANGED_PROPERTY): Likewise.
(borderPainted): Likewise.
(setLabel): Replaced constant with real string.
(setVisible): Exit if new value is identical.
Replaced constant with real string.
* javax/swing/JProgressBar.java
(BORDER_PAINTED_CHANGED_PROPERTY): Removed.
(ORIENTATION_CHANGED_PROPERTY): Likewise.
(STRING_CHANGED_PROPERTY): Likewise.
(STRING_PAINTED_CHANGED_PROPERTY): Likewise.
(INDETERMINATE_CHANGED_PROPERTY): Likewise.
(setOrientation): Replaced constant with real string.
(setStringPainted): Likewise.
(setString): Likewise.
(setBorderPainted): Likewise.
(setIndeterminate): Likewise.
* javax/swing/JScrollBar.java
(BLOCK_INCREMENT_CHANGED_PROPERTY): Removed.
(MODEL_CHANGED_PROPERTY): Likewise.
(ORIENTATION_CHANGED_PROPERTY): Likewise.
(setOrientation): Replaced constant with real string.
(setModel): Likewise.
(setUnitIncrement): Likewise.
(setBlockIncrement): Likewise.
* javax/swing/JScrollPane.java
(COLUMN_HEADER_CHANGED_PROPERTY): Removed.
(COMPONENT_ORIENTATION_CHANGED_PROPERTY): Likewise.
(HORIZONTAL_SCROLLBAR_CHANGED_PROPERTY): Likewise.
(HORIZONTAL_SCROLLBAR_POLICY_CHANGED_PROPERTY): Likewise.
(LAYOUT_CHANGED_PROPERTY): Likewise.
(ROW_HEADER_CHANGED_PROPERTY): Likewise.
(VERTICAL_SCROLLBAR_CHANGED_PROPERTY): Likewise.
(VERTICAL_SCROLLBAR_POLICY_CHANGED_PROPERTY): Likewise.
(VIEWPORT_CHANGED_PROPERTY): Likewise.
(VIEWPORT_BORDER_CHANGED_PROPERTY): Likewise.
(WHEEL_SCROLLING_ENABLED_CHANGED_PROPERTY): Likewise.
(setComponentOrientation): Replaced constant with real string.
(setColumnHeader): Likewise.
(setHorizontalScrollBar): Likewise.
(setHorizontalScrollBarPolicy): Likewise.
(setRowHeader): Likewise.
(setVerticalScrollBar): Likewise.
(setVerticalScrollBarPolicy): Likewise.
(setWheelScrollingEnabled): Likewise.
(setViewport): Likewise.
(setViewportBorder): Likewise.
* javax/swing/JSlider.java
(INVERTED_CHANGED_PROPERTY): Removed.
(LABEL_TABLE_CHANGED_PROPERTY): Likewise.
(MAJOR_TICK_SPACING_CHANGED_PROPERTY): Likewise.
(MINOR_TICK_SPACING_CHANGED_PROPERTY): Likewise.
(MODEL_CHANGED_PROPERTY): Likewise.
(ORIENTATION_CHANGED_PROPERTY): Likewise.
(PAINT_LABELS_CHANGED_PROPERTY): Likewise.
(PAINT_TICKS_CHANGED_PROPERTY): Likewise.
(setModel): Replaced constant with real string.
(setOrientation): Likewise.
(setLabelTable): Likewise.
(setInverted): Likewise.
(setMajorTickSpacing): Likewise.
(setMinorTickSpacing): Likewise.
(setPaintTicks): Likewise.
(setPaintLabels): Likewise.
* javax/swing/JTabbedPane.java
(MODEL_CHANGED_PROPERTY): Removed.
(TAB_PLACEMENT_CHANGED_PROPERTY): Likewise.
(TAB_LAYOUT_POLICY_CHANGED_PROPERTY): Likewise.
(setModel): Replaced constant with real string.
(setTabPlacement): Likewise.
(setTabLayoutPolicy): Likewise.
* javax/swing/JToolBar.java
(ORIENTATION_CHANGED_PROPERTY): Removed.
(FLOATABLE_CHANGED_PROPERTY): Likewise.
(BORDER_PAINTED_CHANGED_PROPERTY): Likewise.
(MARGIN_CHANGED_PROPERTY): Likewise.
(ROLLOVER_CHANGED_PROPERTY): Likewise.
(setRollover): Replaced constant with real string.
(setMargin): Likewise.
(setBorderPainted): Likewise.
(setFloatable): Likewise.
(setOrientation): Likewise.
* javax/swing/plaf/basic/BasicComboBoxUI.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicComboPopup.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicMenuBarUI.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicProgressBarUI.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicScrollBarUI.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicSliderUI.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicTabbedPaneUI.java
(PropertyChangeHandler.propertyChange): Likewise.
* javax/swing/plaf/basic/BasicToolBarUI.java
(PropertyChangeHandler.propertyChange): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultButtonModel.java
(changeState): Made private.
* javax/swing/DefaultDesktopManager.java
(setWasIcon): Fixed second argument to be java.lang.Boolean.
* javax/swing/JLayeredPane.java
(layerToRange): Made private.
(incrLayer): Likewise.
(decrLayer): Likewise.
* javax/swing/JTable.java
(dragEnabled): Likewise.
(preferredViewportSize): Renamed from preferredScrollableViewportSize.
* javax/swing/KeyStroke.java
(Keystroke): Made private.
* javax/swing/TransferHandler.java
(COMMAND_COPY): Likewise.
(COMMAND_CUT): Likewise.
(COMMAND_PASTE): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextField.java
(postActionEvent): Use text in field when actionCommand is null.
(getActionCommand): Removed.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractSet.java: Removed.
* Makefile.am: Removed javax/swing/AbstractSet.java.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/Window.java
(AccessibleWindow.getAccessibleStateSet): Fixed method name.
* java/awt/dnd/DnDConstants.java
(DnDConstants): New private constructor.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultCellRenderer.java: Removed.
* Makefile.am: Removed javax/swing/DefaultCellRenderer.java.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractButton.java
(fireItemStateChanged): Made protected.
(fireActionPerformed): Likewise.
(fireStateChanged): Likewise.
* javax/swing/DefaultButtonModel.java
(fireItemStateChanged): Likewise.
(fireActionPerformed): Likewise.
(fireStateChanged): Likewise.
* javax/swing/JApplet.java
(JApplet): Removed.
(frameInit): Likewise.
(setRootPane): Made protected.
(createRootPane): Likewise.
* javax/swing/JComponent.java
(getClientProperty): Likewise.
(putClientProperty): Likewise.
* javax/swing/JEditorPane.java
(getContentType): Likewise.
(setContentType): Likewise.
* javax/swing/JFrame.java
(setRootPane): Likewise.
(createRootPane): Likewise.
* javax/swing/JInternalFrame.java
(getFocusCycleRootAncestor): Made final. Added @since tag.
(isFocusCycleRoot): Likewise.
(getWarningString): Made final.
* javax/swing/JScrollBar.java
(changeListener): Removed.
(changeEvent): Likewise.
(createChangeListener): Likewise.
(fireStateChanged): Likewise.
(addChangeListener): Likewise.
(removeChangeListener): Likewise.
(getChangeListeners): Likewise.
* javax/swing/JScrollPane.java
(createViewport): Made protected.
* javax/swing/JViewport.java
(addImpl): Likewise.
(setBorder): New method.
* javax/swing/JWindow.java
(setRootPane): Made protected.
(createRootPane): Likewise.
* javax/swing/plaf/basic/BasicButtonUI.java
(installListeners): Likewise.
(uninstallListeners): Likewise.
* javax/swing/plaf/basic/BasicProgressBarUI.java
(incrementAnimationIndex): Likewise.
* javax/swing/plaf/basic/BasicTabbedPaneUI.java
(createLayoutManager): Likewise.
* javax/swing/table/DefaultTableCellRenderer.java
(firePropertyChange): Likewise.
* javax/swing/table/JTableHeader.java
(AccessibleJTableHeaderEntry.AccessibleJTableHeaderEntry):
New constructor.
* javax/swing/text/PlainDocument.java
(reindex): Made private.
* javax/swing/text/PlainView.java
(drawLine): Made protected.
(getTabSize): Likewise.
* javax/swing/text/View.java
(setSize): Removed.
(preferenceChanged): New method.
(getBreakWeight): Likewise.
(breakView): Likewise.
(getViewIndex): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JScrollPane.java
(ScrollBar): Made class protected.
* javax/swing/JSpinner.java
(JSpinner): Added @since tag.
(listenerList): Removed.
* javax/swing/JTable.java
(setValueAt): New method.
(getColumn): Likewise.
* javax/swing/JWindow.java
(rootPaneCheckingEnabled): Renamed from checking.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/basic/BasicTextUI.java
(RootView.modelToView): Made it public and return a java.awt.Shape.
Handle null subview.
(uninstall): Set textComponent to null when its not possible used
anymore.
* javax/swing/text/View.java
(setParent): Use better argument name.
(getContainer): Get parent via getParent().
(getViewFactory): Likewise.
(getAttributes): Get element via getElement().
(getStartOffset): Likewise.
(getEndOffset): Likewise.
(getResizeWeight): New method.
(getMaximumSpan): Likewise.
(getMinimumSpan): Likewise.
(setSize): Likewise.
(getGraphics): Likewise.
2005-02-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/Checkbox.java:
(AccessibleAWTCheckbox()): Added public constructor
to call superclass.
* java/awt/Choice.java:
(AccessibleAWTChoice): Added class documentation.
(AccessibleAWTChoice()): Added public constructor
to call superclass.
(AccessibleAWTChoice.getAccessibleAction()): Documented.
(AccessibleAWTChoice.getAccessibleRole()): Documented,
and changed role to COMBO_BOX.
(AccessibleAWTChoice.getAccessibleActionCount()): Documented.
(AccessibleAWTChoice.getAccessibleActionDescription(int)): Documented.
(AccessibleAWTChoice.doAccessibleAction(int)): Documented.
2005-02-15 Graydon Hoare <graydon@redhat.com>
Michael Koch <konqueror@gmx.de>
* javax/swing/LayoutFocusTraversalPolicy.java,
javax/swing/SortingFocusTraversalPolicy.java:
New classes.
* Makefile.am: Added new classes.
* Makefike.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DebugGraphics.java: Mostly implemented.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/SwingUtilities.java
(findFocusOwner): New method.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/DefaultEditorKit.java
(read): Added '\n' after each line.
* javax/swing/text/PlainView.java
(modelToView): Update metrics.
(drawLine): Use offsets from element.
(paint): Update metrics. Draw all lines.
2005-02-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/Checkbox.java:
(AccessibleAWTCheckbox): Added class documentation
* java/awt/Scrollbar.java:
(AccessibleAWTScrollBar): typo corrected and docs added
(AccessibleAWTScrollBar.getAccessibleRole()): documented
(AccessibleAWTScrollBar.getAccessibleStateSet()): likewise
(AccessibleAWTScrollBar.getAccessibleValue()): likewise
(AccessibleAWTScrollBar.getCurrentAccessibleValue()): likewise
(AccessibleAWTScrollBar.setCurrentAccessibleValue(int)): likewise
(AccessibleAWTScrollBar.getMinimumAccessibleValue()): likewise
(AccessibleAWTScrollBar.getMaximumAccessibleValue()): likewise
(getAccessibleContext()): name of accessible class corrected
2005-02-15 Mark Wielaard <mark@klomp.org>
* java/awt/BasicStroke.java (hashCode): Implement.
(equals): Document.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/print/PrinterJob.java
(pageDialog): Throws java.awt.HeadlessException.
(printDialog): Likewise.
2005-02-15 Mark Wielaard <mark@klomp.org>
* jni/gtk-peer/gtkpeer.h (gdk_env): Fix prototype.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTable.java
(getValueAt): New method.
* javax/swing/table/JTableHeader.java
(columnAtPoint): New method.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextField.java
(actions): New field.
(static): Initalize actions field.
(getActions): New method.
2005-02-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/Checkbox.java:
(AccessibleAWTCheckbox): name capitalization corrected
and serialization UID added.
(AccessibleAWTCheckbox.itemStateChanged(java.awt.event.ItemEvent)):
documented.
(AccessibleAWTCheckbox.getAccessibleAction()): likewise
(AccessibleAWTCheckbox.getAccessibleValue()): likewise
(AccessibleAWTCheckbox.getAccessibleActionCount()): likewise
(AccessibleAWTCheckbox.getAccessibleActionDescription(int)): likewise
(AccessibleAWTCheckbox.doAccessibleAction(int)): likewise
(AccessibleAWTCheckbox.getCurrentAccessibleValue()): likewise
(AccessibleAWTCheckbox.setCurrentAccessibleValue(int)): likewise
(AccessibleAWTCheckbox.getMinimumAccessibleValue()): likewise
(AccessibleAWTCheckbox.getMaximumAccessibleValue()): likewise
(AccessibleAWTCheckbox.getAccessibleRole()): likewise
(AccessibleAWTCheckbox.getAccessibleStateSet()): implemented and
documented
(getAccessibleContext()): name of accessible class corrected
2005-02-15 Sven de Marothy <sven@physto.se>
* java/awt/geom/doc-files/Area-1.png,
java/awt/geom/doc-files/Ellipse-1.png,
java/awt/geom/doc-files/GeneralPath-1.png:
New files.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c (env_union):
Use union to avoid type-punning warning.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultListSelectionModel.java
(clone): New method.
2005-02-15 Mark Wielaard <mark@klomp.org>
Reported by Martin Platter <motse@complang.tuwien.ac.at>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFile):
Correct method signature of gtkSetFilename.
2005-02-15 Arnaud Vandyck <avdyk@gnu.org>
* javax/swing/text/StringContent.java: New file.
2005-02-15 Michael Koch <konqueror@gmx.de>
* Makefile.am: Added javax/swing/text/StringContent.java.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/ClasspathToolkit.java:
Import statements reworked.
(imageCache): Made it of type java.util.HashMap.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/imageio/stream/MemoryCacheImageInputStream.java:
Reworked import statements.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:
Rewrite uses of extern variable to be function calls.
* jni/gtk-peer/gtkpeer.h (gdk_env): Change declaration to
function, from extern variable.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
(gdk_env): Remove variable, add new function.
(java_vm): Add new variable.
(Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Initialize
java_vm rather than old gdk_env variable.
2005-02-15 David Gilbert <david.gilbert@object-refinery.com>
* javax/swing/DefaultListModel.java
(add): fire correct event,
(addElement): corrected interval indices in event,
(clear): corrected upper bound for interval, only fire event if
list is not empty,
(setSize): fire appropriate event.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* gnu/awt/xlib/XEventLoop.java: Add non-blocking event mode.
* gnu/awt/xlib/XToolkit.java: Likewise.
* gnu/gcj/xlib/XAnyEvent.java: Likewise.
* gnu/gcj/xlib/natXAnyEvent.cc: Likewise.
* gnu/java/awt/ClasspathToolkit.java: Likewise.
* gnu/java/awt/peer/gtk/GtkToolkit.java: Likewise.
* java/awt/EventQueue.java (getNextEvent):
Adjust event loop to switch to native mode after 100ms.
* javax/swing/Timer.java (drainEvents): Reuse Runnable.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
(Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose):
Wake up event thread.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
(Java_gnu_java_awt_peer_gtk_GtkToolkit_iterateNativeQueue):
Adjust event loop to switch to java mode after 100ms.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* jni.cc (_Jv_JNI_RegisterNatives): Re-add sync, which was
accidentally removed in last change.
2005-02-15 Michael Koch <konqueror@gmx.de>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c,
gnu/java/awt/peer/gtk/GtkMainThread.java: Removed.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* include/jni.h (_Jv_JNIEnv::bottom_locals): New field.
* include/jvm.h (_Jv_FreeJNIEnv): Declare.
* java/lang/natThread.cc (finalize_native): Call _Jv_FreeJNIEnv.
* jni.cc: Reuse bottom frame between calls, avoid clearing
frame when no local references are made.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/UIDefaults.java (UIDefaults):
Fixed typo in javadoc (Thanks to Thomas Zander for reporting)
Fixed HTML entity and removed a redundant comma.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/DefaultEditorKit.java
(deinstall): Removed.
(install): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/UIDefaults.java (put): Handle value of null.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/Robot.java,
java/awt/Scrollbar.java,
java/awt/print/PrinterJob.java,
javax/swing/JTable.java,
javax/swing/text/AbstractDocument.java:
Reworked import statements.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JEditorPane.java
(read): Implemented.
(write): Likewise.
* javax/swing/text/DefaultEditorKit.java
(page): Renamed from page_url. Made private.
(editorKit): Renamed from kit. Made private.
(ctype): Removed.
(JEditorPane): All constructors reimplemented.
(getContentType): Use content type from editor kit.
(getEditorKit): Return editorKit.
(getEditorKitForContentType):Likewise.
(getPage): Return page.
(setContentType): Reimplemented.
(setEditorKit): Likewise.
(setEditorKitForContentType): Removed wrong implementation.
(setPage): Implemented.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
(nativeSetIconImageFromData): Re-add native implementation.
2005-02-15 David Gilbert <david.gilbert@object-refinery.com>
* javax/swing/table/DefaultTableModel.java
(DefaultTableModel()): Added Javadocs.
(DefaultTableModel(int, int)): Fixed implementation.
(DefaultTableModel(Vector, int)): Throw IllegalArgumentException
for negative rowCount.
(DefaultTableModel(Object[], int)): Added Javadocs.
(DefaultTableModel(Vector, Vector)): Likewise.
(DefaultTableModel(Object[][], Object[])): Likewise.
(getDataVector): Likewise.
(setDataVector(Vector, Vector)): Likewise.
(setDataVector(Object[][], Object[])): Likewise.
(newDataAvailable): Likewise.
(newRowsAdded): Likewise.
(rowsRemoved): Likewise.
(setColumnIdentifiers(Vector)): Allow for null argument.
(setColumnIdentifiers(Object[])): Added Javadocs.
(setNumRows): Likewise.
(setRowCount): Adds new rows if necessary, and sends more specific
TableModelEvent.
(setColumnCount): Allow for null columnIdentifiers.
(addColumn(Object)): Added Javadocs.
(addColumn(Object, Vector)): Handle null columnData.
(addColumn(Object, Object[])): Handle columnData with more or less
entries than rows in the table.
(addRow(Vector)): Fire appropriate event.
(addRow(Object[])): Added Javadocs.
(insertRow(int, Vector)): Fire appropriate event.
(insertRow(int, Object[])): Added Javadocs.
(moveRow): Reimplemented.
(removeRow(int)): Fire appropriate event.
(getColumnCount): Allow for null columnIdentifiers.
(getColumnName): Now returns empty string when column index is too
large.
(isCellEditable): Added Javadocs.
(getValueAt): Likewise.
(setValueAt): Fire more specific event.
(convertToVector): Added Javadocs.
* javax/swing/table/TableModel.java
Added Javadocs.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* libgcj.spec.in (lib): Add -l-javax-imageio.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java: Replace direct
references to event queue q with method call q().
* gnu/java/awt/peer/gtk/GtkDialogPeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkFramePeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkScrollbarPeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkTextComponentPeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkGenericPeer.java: Likewise.
(q): New method.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* gnu/java/awt/ClasspathToolkit.java
(registerImageIOSpis): New method.
* gnu/java/awt/image/ImageDecoder.java
(imageDecoder): New constructor using InputStream
(startProduction): Handle existing InputStream.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java
(findSimpleIntegerArray): Make public and static.
(updateBufferedImage): Set each pixel, in a loop.
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java:
Implement ImageIO SPI classes.
(createBufferedImage): Rewrite in terms of SPI classes.
* gnu/java/awt/peer/gtk/GtkToolkit.java
(registerImageIOSpis): New method.
* java/lang/reflect/natMethod.cc
(_Jv_CallAnyMethodA): Borrow a patch from aph, applied to trunk,
which lets JNI call interface methods properly.
* javax/imageio/ImageIO.java
(WriterFormatFilter.filter): Fix copy-and-paste typos.
(WriterMIMETypeFilter.filter): Likewise.
(ImageReaderIterator): Pass extension argument through to SPI.
(getReadersByFilter): Likewise.
(getWritersByFilter): Likewise.
(getImageReadersByFormatName): Likewise.
(getImageReadersByMIMEType): Likewise.
(getImageReadersBySuffix): Likewise.
(getImageWritersByFormatName): Likewise.
(getImageWritersByMIMEType): Likewise.
(getImageWritersBySuffix): Likewise.
(read): Implement.
(write): Implement.
* javax/imageio/ImageReader.java
(progressListeners): Initialize.
(setInput): Implement.
* javax/imageio/ImageWriter.java
(progressListeners): Initialize.
(warningListeners): Likewise.
(warningLocales): Likewise.
(setOutput): Test "isInstance" rather than class equality.
* javax/imageio/spi/IIORegistry.java
(static): Add reader and writer SPIs.
(IIORegistry): Call ClasspathToolkit.registerImageIOSpis.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c
(query_formats): New function.
(save_to_stream): Likewise.
(Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_streamImage): Likewise.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c (mouseWheel):
Call XFlush.
(keyPress): Likewise.
(keyRelease): Likewise.
2005-02-15 Olga Rodimina <rodimina@redhat.com>
* javax/swing/JTable.java
(columnAtPoint): New Method. Implemented.
(rowAtPoint): Likewise.
(countSelections): Fixed few small count errors.
(getSelections): Likewise.
(setSelectionMode): Set selection mode for column
selection model in addition to row selection model.
* javax/swing/plaf/basic/BasicTableUI.java:
(getRowForPoint): Removed. Replaced by
JTable.rowAtPoint().
(getColForPoint): Removed. Replaced by
JTable.columnAtPoint().
(updateSelection): Updated to call JTable.columnAtPoint
and JTable.rowAtPoint.
* javax/swing/table/DefaultTableColumnModel.java:
(getSelectedColumns): Implemented.
(getSelectedColumnCount): Implemented.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* Makefile.am
(jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c)
(gnu/java/awt/peer/gtk/GtkMainThread.java) : Remove.
* Makefile.in: Regenerate.
* gnu/awt/xlib/XEventLoop.java: Fix to match thread model.
* gnu/awt/xlib/XFramePeer.java: Likewise.
* gnu/awt/xlib/XToolkit.java: Likewise.
* gnu/gcj/xlib/XAnyEvent.java: Likewise.
* gnu/gcj/xlib/natXAnyEvent.cc: Likewise.
* gnu/java/awt/ClasspathToolkit.java
(nativeQueueEmpty)
(wakeNativeQueue)
(iterateNativeQueue): New methods.
* gnu/java/awt/peer/gtk/GtkMainThread.java: Remove.
* gnu/java/awt/peer/gtk/GtkToolkit.java
(gtkInit): Absorb from defunct GtkMainThread class.
(static): Run gtkInit in static startup block.
(GtkToolkit): Remove construction of GtkMainThread and queue.
(getSystemEventQueueImpl): Construct queue when requested.
(nativeQueueEmpty)
(wakeNativeQueue)
(iterateNativeQueue): New methods.
* java/awt/Component.java (removeNotify): Remove race.
* java/awt/EventDispatchThread.java
(EventDispatchThread): Don't start on construction.
(run): Remove isInterrupted check.
* java/awt/EventQueue.java (shutdown): New flag.
(isShutdown): New method checking J2SE shutdown condition.
(setShutdown): New method.
(getNextEvent): Restructure to use ClasspathToolkit.
(postEvent): Activate new thread on posting, wake thread on
post of possible shutdown condition event.
* java/awt/Frame.java
(Frame): Call noteFrame in all constructors.
(fireDummyEvent): New helper method.
(addNotify): Fire a dummy event to wake up queue.
(removeNotify): Fire a dummy event to wake up queue.
(noteFrame): New method.
(weakFrames): New static field.
(getFrames): Implement.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c:
Remove.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:
Move everything from GtkMainThread into this file
(Java_gnu_java_awt_peer_gtk_GtkToolkit_iterateNativeQueue)
(Java_gnu_java_awt_peer_gtk_GtkToolkit_wakeNativeQueue)
(Java_gnu_java_awt_peer_gtk_GtkToolkit_nativeQueueEmpty):
New functions to implement single-threaded queue semantics.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/metal/MetalLookAndFeel.java
(getControlTextFont): New method.
(getMenuTextFont): Likewise.
(getSubTextFont): Likewise.
(getSystemTextFont): Likewise.
(getUserTextFont): Likewise.
(getWindowTitleFont): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/AbstractDocument.java
(documentFilter): New field.
(getDocumentFilter): New method.
(setDocumentFilter): Likewise.
(dump): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTree.java
(DynamicUtilTreeNode.hasChildren): Clarify javadoc.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/AbstractDocument.java
(AbstractElement.getLength): Fixed off-by-one error.
(AbstractElement.children): Made abstract.
(AbstractElement.getAllowsChildren): Likewise.
(AbstractElement.getElement): Likewise.
(AbstractElement.dumpElement): New private method.
(AbstractElement.dump): New method.
(BranchElememt.getName): Fixed implementation.
(BranchElememt.toString): Likewise.
(BranchElememt.getElement): Fixed arguments.
(LeafElement.getName): Fixed implementation.
(LeafElement.toString): Likewise.
* javax/swing/text/GapContent.java
(GapContent): Put default content into buffer.
* javax/swing/text/PlainDocument.java
(reindex): Use empty attribute sets instead of null.
(createDefaultRoot): Reimplemented.
(insertUpdate): Call super method.
(removeUpdate): Likewise.
(getParagraphElement): Implemented.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/ClasspathToolkit.java
(createRobot): Throws java.awt.AWTException.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c:
Added '__attribute__((unused))' to all unused method arguments.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultBoundedRangeModel.java
(fireValueChanged): Fixed off-by-one error.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* Makefile.am (gtk_c_source_files): Add GdkRobotPeer.c.
(gtk_awt_peer_sources): Add GdkScreenGraphicsDevice.java and
GdkRobotPeer.java.
(lib_gnu_java_awt_peer_gtk_la_CFLAGS): Add X flags.
(lib_gnu_java_awt_peer_gtk_la_LDFLAGS): Add XTest flags.
* gnu/awt/xlib/XToolkit.java (createRobot): New method.
* gnu/java/awt/ClasspathToolkit.java (createRobot): New method.
* gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
(getDefaultScreenDevice): Implement.
* gnu/java/awt/peer/gtk/GdkRobotPeer.java: New file.
* gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java: Likewise.
* gnu/java/awt/peer/gtk/GtkToolkit.java (createRobot): New method.
* java/awt/Robot.java: Implement.
* java/awt/peer/RobotPeer.java: Rename parameters.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c: New file.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(awt_keycode_to_keysym): Make non-static.
* jni/gtk-peer/gtkpeer.h (AWT_BUTTON1_MASK, AWT_BUTTON2_MASK,
AWT_BUTTON3_MASK): Declare constants.
(awt_keycode_to_keysym): Declare.
* Makefile.am (AM_MAKEFLAGS): Set KEYS variable.
* testsuite/libjava.mauve/mauve.exp (test_mauve): If KEYS exists
and is non-empty pass its value to "make check".
(test_mauve_sim): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/imageio/IIOParam.java
(setSourceBands): New method.
(setSourceSubsampling): Likewise.
* javax/imageio/ImageReadParam.java
(setDestination): Likewise.
(setDestinationBands): Likewise.
(setSourceProgressivePasses): Likewise.
* javax/imageio/metadata/IIOInvalidTreeException.java
(serialVersionUID): New static field.
* javax/imageio/metadata/IIOMetadataNode.java
(IIOMetadataNode): Don't explicitely implement org.w3c.dom.Node.
(parent): Dont initailize with default value explicitely.
(Object): Likewise.
(removeAttribute): Doesn't throws org.w3c.dom.DOMException.
(removeAttributeNode): Likewise.
(removeAttributeNS): Likewise.
(setAttribute): Likewise.
(setAttributeNode): Likewise.
(setAttributeNodeNS): Likewise.
(setAttributeNS): Likewise.
(appendChild): Likewise.
(getNodeValue): Likewise.
(insertBefore): Likewise.
(removeChild): Likewise.
(replaceChild): Likewise.
(setPrefix): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/LookAndFeel.java
(getDesktopPropertyValue): New method.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTree.java
(hasChildren): New instance field.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JComponent.java
(getToolTipText): New method.
(getTitledBorderText): Likewise.
(getAccessibleKeyBinding): Likewise.
(getVerifyInputWhenFocusTarget): Likewise.
(setVerifyInputWhenFocusTarget): Likewise.
(verifyInputWhenFocusTarget): New instance field.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultListSelectionModel.java
(fireValueChanged): New method.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultBoundedRangeModel.java:
Fixed javadocs all over.
(fireStateChanged): Simplified.
* javax/swing/BoundedRangeModel.java:
Reformatted.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JRootPane.java
(setMenuBar): Added @deprecated tag.
(getMenuBar): Likewise.
* javax/swing/JTable.java
(sizeColumnsToFit): Likewise.
2005-02-15 Paul Jenner <psj.home@ntlworld.com>
* javax/swing/ImageIcon.java (setImage): Implemented.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTable.java:
Removed unused imports.
2005-02-15 Olga Rodimina <rodimina@redhat.com>
(prepareRenderer): Get column's index in dataModel instead
of column's view index.
(getColumnCount): return count of the columns in ColumnModel,
not in dataModel.
(removeColumn): Implemented.
(moveColumm): Likewise.
(setRowHeight): throw IllegalArgumentException if height is
less then 1.
* javax/swing/table/DefaultTableColumnModel.java: Add javadocs.
(DefaultTableColumnModel):Add call to createSelectionModel().
(addColumn): Fire columnAdded event to registered listeners.
(removeColumn): Fire columnRemoved event to registered listeners.
(moveColumn): Fire columnMoved event to registered listeners.
(setColumnMargin): Fire ColumnMarginChanged event to registered listeners.
(getColumnIndex): Changed parameter name.
(setColumnSelectionAllowed): Likewise.
(fireColumnAdded): Implemented.
(fireColumnRemoved): Likewise.
(fireColumnMoved): Likewise.
(fireColumnMarginChanged): Likewise.
(getListeners): Changed parameter name.
(propertyChange): Implemented.
(valueChanged): Changed parameter name.
(createSelectionModel): Implemented.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GtkToolkit.java:
Explicitely import used classes.
(getLocalGraphicsEnvironment): Simplify.
* java/awt/Window.java (Window):
Enable code to get the default GraphicsConfiguration.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/metal/DefaultMetalTheme.java
(CONTROL_TEXT_FONT): New static field.
(MENU_TEXT_FONT): Likewise.
(SUB_TEXT_FONT): Likewise.
(SYSTEM_TEXT_FONT): Likewise.
(USER_TEXT_FONT): Likewise.
(WINDOW_TITLE_FONT): Likewise.
(getControlTextFont): New method.
(getMenuTextFont): Likewise.
(getSubTextFont): Likewise.
(getSystemTextFont): Likewise.
(getUserTextFont): Likewise.
(getWindowTitleFont): Likewise.
* javax/swing/plaf/metal/MetalTheme.java
(BLACK): Initialize with Color.BLACK.
(WHITE): Initialize with Color.WHITE.
(getInactiveControlTextColor): Return getControlDisabled().
(getMenuDisabledForeground): Return getSecondary3().
(getControlTextFont): New abstract method.
(getMenuTextFont): Likewise.
(getSubTextFont): Likewise.
(getSystemTextFont): Likewise.
(getUserTextFont): Likewise.
(getWindowTitleFont): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JFormattedTextField.java
(getFocusLostBehavior): Fixed typo in method name.
(setFocusLostBehavior): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/TransferHandler.java:
Reworked import statements.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Button.java,
java/awt/Canvas.java,
java/awt/Checkbox.java,
java/awt/CheckboxMenuItem.java,
java/awt/Choice.java,
java/awt/Dialog.java,
java/awt/Frame.java,
java/awt/Label.java,
java/awt/List.java,
java/awt/Menu.java,
java/awt/MenuBar.java,
java/awt/MenuItem.java,
java/awt/PopupMenu.java,
java/awt/ScrollPane.java,
java/awt/Scrollbar.java,
java/awt/TextArea.java,
java/awt/Window.java (getAccessibleContext): Clean up comments.
Reformat.
* java/awt/Button.java,
java/awt/Checkbox.java,
java/awt/Choice.java,
java/awt/Menu.java,
java/awt/PopupMenu.java,
java/awt/TextArea.java (getAccessibleContext): Only create new
accessible once.
* java/awt/TextComponent.java (getAccessibleContext): Implement.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/Button.java,
javax/swing/JApplet.java,
javax/swing/JFormattedTextField.java,
javax/swing/JWindow.java,
javax/swing/JTree.java,
javax/swing/plaf/basic/BasicEditorPaneUI.java,
javax/swing/plaf/basic/BasicTextPaneUI.java,
javax/swing/plaf/basic/BasicTreeUI.java:
Reworked import statements.
2005-02-15 Michael Koch <konqueror@gmx.de>
* Makefile.am: Put javax.imageio into its own library and link it
against lib-org-w3c-dom.la to fix bootstrapping.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/TextAction.java
(getTextComponent): Simplified. Added Javadoc.
(augmentList): Implemented. Added Javadoc.
(getFocusedComponent): Added javadoc.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Scrollbar.java (AccessibleAWTScrollbar,
getAccessibleContext): Implement.
* java/awt/ScrollPane.java (AccessibleAWTScrollPane,
getAccessibleContext): Implement.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Dialog.java (AccessibleAWTFrame, getAccessibleContext):
Implement.
* java/awt/Frame.java (AccessibleAWTFrame, getAccessibleContext):
Implement.
* java/awt/Window.java (getAccessibleContext): Fix comment.
Remove extra import.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Window.java (AccessibleAWTWindow): Implement.
(isActive, isFocused, getAccessibleContext): Implement.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/MenuItem.java (getAccessibleContext): Implement.
* java/awt/MenuComponent.java (accessibleContext): Make package
visible.
* java/awt/CheckboxMenuItem.java (getAccessibleContext,
AccessibleAWTCheckboxMenuItem): Implement.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/List.java: Implement AccessibleAWTList,
AccessibleAWTListChild.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Choice.java: Add implements declaration for
Accessible.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* javax/imageio/metadata/IIOInvalidTreeException.java: Use Node
instead of Object.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* javax/imageio/metadata/IIOMetadataNode.java: Add Node to
implemented interface list.
2005-02-15 Jerry Quinn <jlquinn@optonline.net>
* javax/imageio/metadata/IIOMetadataNode.java: Implement.
* javax/imageio/metadata/IIOAttr.java: New class.
* javax/imageio/metadata/IIONamedNodeMap.java: New class.
* javax/imageio/metadata/IIONodeList.java: New class.
* Makefile.am: Added new files.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractAction.java,
javax/swing/AbstractCellEditor.java,
javax/swing/AbstractListModel.java,
javax/swing/DefaultBoundedRangeModel.java,
javax/swing/DefaultButtonModel.java,
javax/swing/DefaultCellEditor.java,
javax/swing/DefaultComboBoxModel.java,
javax/swing/DefaultDesktopManager.java,
javax/swing/JMenu.java,
javax/swing/JSlider.java,
javax/swing/KeyStroke.java,
javax/swing/OverlayLayout.java,
javax/swing/ScrollPaneLayout.java,
javax/swing/SizeRequirements.java,
javax/swing/ViewportLayout.java:
Made serialVersionUID private.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java:
Reformatted.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkGraphics2D.java: More reformatting.
2005-02-15 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkGraphics2D.java: Reformatted.
2005-02-15 Jeroen Frijters <jeroen@frijters.net>
* java/awt/EventDispatchThread.java,
java/awt/Toolkit.java:
Don't catch java.lang.ThreadDeath.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/PasswordView.java
(drawEchoCharacter): Added javadoc.
(drawSelectedText): Likewise.
(drawUnselectedText): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JRootPane.java
(windowDecorationStyle): New field.
(setMenuBar): New method.
(getMenuBar): Likewise.
(getWindowDecorationStyle): Likewise.
(setWindowDecorationStyle): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultListSelectionModel.java
(leadAnchorNotificationEnabled): Made protected.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/InternalFrameFocusTraversalPolicy.java: New file.
* Makefile.am: Added InternalFrameFocusTraversalPolicy.java.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JFormattedTextField.java: Implemented.
* javax/swing/JWindow.java
(JWindow): New constructors.
(initWindow): Renamed from initFrame.
* javax/swing/UIDefaults.java
(ActiveValue): Made interface static.
(LazyValue): Likewise.
* javax/swing/plaf/basic/BasicInternalFrameTitlePane.java
(TitlePaneLayout.TitlePaneLayout): New constructor.
* javax/swing/plaf/basic/BasicSliderUI.java
(ChangeHandler): Made public.
(FocusHandler): Likewise.
(PropertyChangeHandler): Likewise.
(ScrollListener): Likewise.
* javax/swing/plaf/basic/BasicTabbedPaneUI.java
(FocusHandler): Likewise.
(MouseHandler): Likewise.
* javax/swing/plaf/basic/BasicTextPaneUI.java
(BasicTextPaneUI): Extend BasicEditorPaneUI.
* javax/swing/plaf/basic/BasicToolBarUI.java
(BasicToolBarUI): Simplified. Reworked javadoc.
(canDock): Simplified. Make public.
(DockingListener): Made public.
* javax/swing/text/JTextComponent.java
(navigationFilter): New field.
(getNavigationFilter): New method.
(setNavigationFilter): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/metal/MetalTheme.java
(getControlTextColor): Return getControlInfo().
(getHighlightedTextColor): Return getControlTextColor().
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/basic/BasicButtonListener.java
(BasicButtonListener): New constructor.
* javax/swing/plaf/basic/BasicButtonUI.java
(createButtonListener): Usw new BasicButtonListener constructor.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/imageio/event/package.html,
javax/imageio/metadata/package.html: New files.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/image/MemoryImageSource.java: Reformatted.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/tree/TreeCellEditor.java: Refomatted.
2005-02-15 Jeroen Frijters <jeroen@frijters.net>
* java/awt/color/ICC_Profile.java
(finalize): Removed pointless field assignments.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/basic/BasicEditorPaneUI.java: New file.
* Makefile.am: Added javax/swing/plaf/basic/BasicEditorPaneUI.java.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/DefaultStyledDocument.java: New file.
* Makefile.am: Added javax/swing/text/DefaultStyledDocument.java.
* Makefile.in: Regenerated.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JFileChooser.java
(showDialog): Return CANCEL_OPTION for now.
(showOpenDialog): Likewise.
(showSaveDialog): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JApplet.java
(HIDE_ON_CLOSE): Removed.
(EXIT_ON_CLOSE): Likewise.
(DISPOSE_ON_CLOSE): Likewise.
(DO_NOTHING_ON_CLOSE): Likewise.
(close_action): Likewise.
(getDefaultCloseOperation): Likewise.
(setDefaultCloseOperation): Likewise.
(processWindowEvent): Likewise.
(getPreferredSize): Simplified.
* javax/swing/JInternalFrame.java
(setDefaultCloseOperation): Fixed throwing exception on wrong argument
value.
* javax/swing/JWindow.java
(HIDE_ON_CLOSE): Removed.
(EXIT_ON_CLOSE): Likewise.
(DISPOSE_ON_CLOSE): Likewise.
(DO_NOTHING_ON_CLOSE): Likewise.
(close_action): Likewise.
(processKeyEvent): Likewise.
(setDefaultCloseOperation): Likewise.
(getPreferredSize): Simplified.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextField.java
(getPreferredSize): Re-implemented.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JLabel.java
(setDisplayedMnemonic): Use only upper case characters.
(setDisplayedMnemonicIndex): Handle index == -1 and fire
PropertyChangeEvent after property got set to the new index.
2005-02-15 Robert Schuster <thebohemian@gmx.net>
* javax/swing/JComboBox.java:
(JComboBox): Removed selection of the
first item in the model.
2005-02-15 Robert Schuster <thebohemian@gmx.net>
* javax/swing/JComboBox.java
added support for no item being selected
(JComboBox): select first or nothing depending on element count
(setModel): cleaned up unneeded "this." usage, added more
docs, made exception behavior match that of the JDK
(setLighWeightPopupEnabled): removed unneeded "this." usage
(setEditable): dito
(setMaximumRowCount): dito
(setRenderer): dito
(setPrototypeDisplayValue): dito
(getSelectedItem): simplified, added more user doc
(setSelectedIndex): corrected exception behavior, added more user doc
(getSelectedIndex): fixed hardcoded dependency on DefaultComboBoxModel,
added performance warning to user doc
(addItem): fixed exception behavior, added user doc
(insertItemAt): dito
(removeItem): dito
(removeItemAt): dito
(removeAll): fixed exception behavior, added user doc, added support
for model not being instance of DefaultComboBoxModel
(getSelectedItemObjects): simplified
(getItemCount): fixed dependency on DefaultComboBoxModel
(getItemAt): fixed dependency on MutableComboBoxModel
* javax/swing/DefaultComboBoxModel.java:
(setSelectedItem): updates selected item only if new
value is null or known (match JDK behavior)
* javax/swing/plaf/basic/BasicComboBoxUI.java:
(paintCurrentValue): renders "" if no item is selected
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/metal/MetalTheme.java,
javax/swing/plaf/metal/DefaultMetalTheme.java:
New files.
* javax/swing/plaf/metal/MetalLookAndFeel.java
* Makefile.am: Added the new files.
* Makefile.in: Regenerated.
2005-02-15 Olga Rodimina <rodimina@redhat.com>
* javax/swing/JTable.java
(editorComp): New field.
(JTable): Initialize local variables and call updateUI
(selectionBackground): Make protected.
(selectionForeground): Likewise.
(initializeLocalVars): Create default editors and renderers,
initialize editingColumn, editingRow variables.
(createDefaultEditors): New Method.
(createDefaultRenderers): Likewise.
(createDefaultListSelectionModel): Removed
(createDefaultSelectionModel): New Method.
(createDefaultTableHeader): Likewise
(removeColumn): Likewise.
(getEditingColumn): Likewise.
(setEditingColumn): Likewise.
(getEditingRow): Likewise.
(setEditingRow): Likewise.
(getEditorComponent): Likewise.
(isEditing): Likewise.
(setDefaultEditor): Likewise.
(addColumnSelectionInterval): Likewise.
(addRowSelectionInterval): Likewise.
(setColumnSelectionInterval): Likewise.
(setRowSelectionInterval): Likewise.
(removeColumnSelectionInterval): Likewise.
(removeRowSelectionInterval): Likewise.
(isColumnSelected): Likewise.
(isRowSelected): Likewise.
(isCellSelected): Likewise.
(selectAll): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTable.java
(addColumn): New method.
(getColumnClass): Likewise.
(getColumnName): Likewise.
2005-02-15 Paul Jenner <psj.home@ntlworld.com>
* javax/swing/TransferHandler.java
(createTransferable): Made protected.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTable.java,
javax/swing/plaf/basic/BasicTableHeaderUI.java,
javax/swing/plaf/basic/BasicTableUI.java:
Use fixed get/setIntercellSpacing() methods.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTable.java
(getIntercellSpacing): Fixed typo in method name.
(setIntercellSpacing): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/text/JTextComponent.java
(focusAccelerator): New variable.
(getFocusAccelerator): New method.
(setFocusAccelerator): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JComponent.java
(setTransferHandler): Made public. Fire property change event.
* javax/swing/TransferHandler.java: Implemented.
* javax/swing/text/JTextComponent.java
(DefaultTransferHandler): New inner class.
(defaultTransferHandler): New variable.
(copy): New method.
(cut): Likewise.
(paste): Likewise.
(doTransferAction): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTree.java
(collapsePath): New method.
(collapseRow): Likewise.
(expandPath): Likewise.
(expandRow): Likewise.
(checkExpandParents): Likewise.
(doExpandParents): Likewise.
(setExpandedState): Likewise.
(makeVisible): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JPasswordField.java: Updated javadocs.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JLayeredPane.java
(getLayer): Fixed return type, made public.
(getPosition): Use new getLayer().
(SetPosition): Likewise.
(getIndexOf): Likewise.
(remove): Likewise.
* javax/swing/JInternalFrame.java
(getLayer): Use new JLayeredPane.getLayer().
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/table/TableColumn.java: Added/fixed javadocs over all.
(setHeaderValue): Simplified. Do nothing when old value == new value.
2005-02-15 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GdkGraphics.java (setClip): Protect
against null clip region.
* gnu/java/awt/peer/gtk/GtkFramePeer.java (create): Call
gtkWindowSetResizable.
(postConfigureEvent): Only revalidate if frame size has changed.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java (postConfigureEvent):
Only revalidate if frame size has changed.
* java/awt/Component.java (reshape): Only repaint and post
component events if component is showing.
* java/awt/Container.java (addImpl): Only post container event if
container is showing.
(remove): Likewise.
* java/awt/Window.java (setLocationRelativeTo): Implement.
(setBoundsCallback): Only post component events if component is
showing.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (clearRect):
Protect against null graphics structure. Flush gdk event queue.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageReader.java,
javax/imageio/ImageTranscoder.java,
javax/imageio/ImageWriter.java,
javax/imageio/spi/ImageInputStreamSpi.java,
javax/imageio/spi/ImageOutputStreamSpi.java,
javax/imageio/spi/ServiceRegistry.java,
javax/imageio/stream/ImageInputStream.java,
javax/imageio/stream/ImageOutputStream.java: Updated.
* javax/imageio/IIOException.java,
javax/imageio/IIOImage.java,
javax/imageio/IIOParam.java,
javax/imageio/IIOParamController.java,
javax/imageio/ImageIO.java,
javax/imageio/ImageReadParam.java,
javax/imageio/ImageTypeSpecifier.java,
javax/imageio/ImageWriteParam.java,
javax/imageio/spi/IIORegistry.java,
javax/imageio/spi/ImageReaderSpi.java,
javax/imageio/spi/ImageWriterSpi.java,
javax/imageio/stream/FileCacheImageInputStream.java,
javax/imageio/stream/FileCacheImageOutputStream.java,
javax/imageio/stream/FileImageInputStream.java,
javax/imageio/stream/FileImageOutputStream.java,
javax/imageio/stream/ImageInputStreamImpl.java,
javax/imageio/stream/ImageOutputStreamImpl.java,
javax/imageio/stream/MemoryCacheImageInputStream.java,
javax/imageio/stream/MemoryCacheImageOutputStream.java,
javax/imageio/event/IIOReadProgressListener.java,
javax/imageio/event/IIOReadUpdateListener.java,
javax/imageio/event/IIOReadWarningListener.java,
javax/imageio/event/IIOWriteProgressListener.java,
javax/imageio/event/IIOWriteWarningListener.java,
javax/imageio/metadata/IIOMetadata.java,
javax/imageio/metadata/IIOMetadataController.java,
javax/imageio/metadata/IIOMetadataFormat.java,
javax/imageio/metadata/IIOInvalidTreeException.java,
javax/imageio/metadata/IIOMetadataFormatImpl.java,
javax/imageio/metadata/IIOMetadataNode.java: New files.
* Makefile.am (javax_source_files): Added new files
* Makefile.in: Regenerated.
2005-02-15 Graydon Hoare <graydon@redhat.com>
* gnu/java/awt/peer/gtk/GdkGraphics2D.java:
Rework painting into BufferedImages
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java:
Construct BufferedImage with alpha only when alpha is
present in colormodel.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c:
Rework painting into client-side jint arrays.
* jni/gtk-peer/gtkcairopeer.h:
Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultListCellRenderer.java
(serialVersionUID): Made private.
(getListCellRendererComponent): Set horizontal alignment.
* javax/swing/JLabel.java
(setVerticalAlignment): Re-implemented.
(setHorizontalAlignment): Do nothing if old value = new value.
* javax/swing/JList.java
(setCellRenderer): Likewise.
(setModel): Re-implemented.
(setSelectionModel): Likewise.
2005-02-15 David Gilbert <david.gilbert@object-refinery.com>
* java/awt/Component.java,
java/awt/geom/Rectangle2D.java:
Javadoc fixes.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractListModel.java
(fireContentsChanged): Simplified.
(fireIntervalAdded): Likewise.
(fireIntervalRemoved): Likewise.
* javax/swing/DefaultSingleSelectionModel.java:
Reformatted.
(fireStateChanged): Simplified.
* javax/swing/JPopupMenu.java
(setSelectionModel): Set property.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/print/Book.java: Reformatted.
2005-02-15 Michael Koch <konqueror@gmx.de>
* java/awt/geom/Area.java
(QuadSegment.curveArea): Remove unused variables.
(CubicSegment.curveArea): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JTree.java
(ANCHOR_SELECTION_PATH_PROPERTY): Added @since tag.
(LEAD_SELECTION_PATH_PROPERTY): Likewise.
(EXPANDS_SELECTED_PATHS_PROPERTY): Likewise.
(EXPANDED): New constant.
(COLLAPSED): Likewise.
(nodeStates): New field.
(cellEditor): New method.
(cellRenderer): Likewise.
(selectionModel): Likewise.
(treeModel): Likewise.
(scrollPathToVisible): Likewise.
(scrollRowToVisible): Likewise.
(isCollapsed): Likewise.
(isExpanded): Likewise.
(clearToggledPaths): Likewise.
(getDescendantToggledPaths): Likewise.
(hasBeenExpanded): Likewise.
(isVisible): Likewise.
(isPathEditable): Likewise.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JLayeredPane.java: Reformatted.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/tree/DefaultMutableTreeNode.java:
Completely Revised.
* javax/swing/tree/MutableTreeNode.java:
Reformatted.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JFormattedTextField.java
(setDocument): Call setDocument of super class. Don't fire property
change event.
2005-02-15 Sven de Marothy <sven@physto.se>
* java/awt/image/IndexColorModel.java:
Add FIXME with respect to alpha handling.
(getAlpha): Default to returning opaque pixels.
* java/awt/image/MultiPixelPackedSampleModel.java
(MultiPixelPackedSampleModel): Corrected parameters, order of
bit shifts and masks, stride length off by one.
2005-02-15 Michael Koch <konqueror@gmx.de>
* javax/swing/JList.java, javax/swing/JTree.java:
Added much new methods and fixed much methods setting bound properties.
From-SVN: r95115
2005-02-16 21:03:29 +01:00
|
|
|
|
2000-02-18 22:22:06 +01:00
|
|
|
struct _Jv_JavaVM;
|
2001-08-26 13:30:09 +02:00
|
|
|
_Jv_JavaVM *_Jv_GetJavaVM ();
|
2000-02-18 22:22:06 +01:00
|
|
|
|
2006-09-01 19:42:23 +02:00
|
|
|
/* Get a JVMTI environment */
|
2006-07-20 21:30:30 +02:00
|
|
|
struct _Jv_JVMTIEnv;
|
|
|
|
_Jv_JVMTIEnv *_Jv_GetJVMTIEnv (void);
|
|
|
|
|
2006-09-01 19:42:23 +02:00
|
|
|
/* Initialize JVMTI */
|
|
|
|
extern void _Jv_JVMTI_Init (void);
|
|
|
|
|
2001-11-26 07:40:06 +01:00
|
|
|
// Some verification functions from defineclass.cc.
|
|
|
|
bool _Jv_VerifyFieldSignature (_Jv_Utf8Const*sig);
|
|
|
|
bool _Jv_VerifyMethodSignature (_Jv_Utf8Const*sig);
|
|
|
|
bool _Jv_VerifyClassName (unsigned char* ptr, _Jv_ushort length);
|
|
|
|
bool _Jv_VerifyClassName (_Jv_Utf8Const *name);
|
|
|
|
bool _Jv_VerifyIdentifier (_Jv_Utf8Const *);
|
|
|
|
bool _Jv_ClassNameSamePackage (_Jv_Utf8Const *name1, _Jv_Utf8Const *name2);
|
|
|
|
|
2003-08-29 00:17:37 +02:00
|
|
|
struct _Jv_core_chain
|
|
|
|
{
|
|
|
|
int name_length;
|
|
|
|
const char *name;
|
|
|
|
int data_length;
|
|
|
|
const void *data;
|
|
|
|
|
|
|
|
struct _Jv_core_chain *next;
|
|
|
|
};
|
|
|
|
|
|
|
|
// This is called when new core data is loaded.
|
|
|
|
extern void (*_Jv_RegisterCoreHook) (_Jv_core_chain *);
|
|
|
|
|
|
|
|
_Jv_core_chain *_Jv_FindCore (_Jv_core_chain *node, jstring name);
|
|
|
|
void _Jv_FreeCoreChain (_Jv_core_chain *chain);
|
|
|
|
|
2000-04-02 17:34:17 +02:00
|
|
|
#ifdef ENABLE_JVMPI
|
2001-12-16 23:33:02 +01:00
|
|
|
|
2000-04-02 17:34:17 +02:00
|
|
|
#include "jvmpi.h"
|
|
|
|
|
|
|
|
extern void (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (JVMPI_Event *event);
|
|
|
|
extern void (*_Jv_JVMPI_Notify_THREAD_START) (JVMPI_Event *event);
|
|
|
|
extern void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event);
|
|
|
|
#endif
|
|
|
|
|
2004-11-27 13:37:32 +01:00
|
|
|
/* FIXME: this should really be defined in some more generic place */
|
|
|
|
#define ROUND(V, A) (((((unsigned) (V))-1) | ((A)-1))+1)
|
|
|
|
|
2005-01-10 20:39:26 +01:00
|
|
|
extern void _Jv_RegisterBootstrapPackages ();
|
|
|
|
|
2005-05-26 23:07:04 +02:00
|
|
|
#define FLAG_BINARYCOMPAT_ABI (1<<31) /* Class is built with the BC-ABI. */
|
2005-01-24 20:05:34 +01:00
|
|
|
|
2005-05-26 23:07:04 +02:00
|
|
|
#define FLAG_BOOTSTRAP_LOADER (1<<30) /* Used when defining a class that
|
|
|
|
should be loaded by the bootstrap
|
|
|
|
loader. */
|
2005-01-24 20:05:34 +01:00
|
|
|
|
2005-05-26 23:07:04 +02:00
|
|
|
// These are used to find ABI versions we recognize.
|
|
|
|
#define GCJ_CXX_ABI_VERSION (__GNUC__ * 100000 + __GNUC_MINOR__ * 1000)
|
|
|
|
|
|
|
|
// This is the old-style BC version ID used by GCJ 4.0.0.
|
|
|
|
#define OLD_GCJ_40_BC_ABI_VERSION (4 * 10000 + 0 * 10 + 5)
|
|
|
|
|
|
|
|
// New style version IDs used by GCJ 4.0.1 and later.
|
|
|
|
#define GCJ_40_BC_ABI_VERSION (4 * 100000 + 0 * 1000)
|
2005-03-23 21:27:12 +01:00
|
|
|
|
2007-01-09 20:58:05 +01:00
|
|
|
void _Jv_CheckABIVersion (unsigned long value);
|
|
|
|
|
2005-05-12 03:27:15 +02:00
|
|
|
|
|
|
|
inline bool
|
|
|
|
_Jv_ClassForBootstrapLoader (unsigned long value)
|
|
|
|
{
|
2005-05-26 23:07:04 +02:00
|
|
|
return (value & FLAG_BOOTSTRAP_LOADER);
|
2005-01-24 20:05:34 +01:00
|
|
|
}
|
|
|
|
|
2005-03-17 01:18:50 +01:00
|
|
|
// It makes the source cleaner if we simply always define this
|
|
|
|
// function. If the interpreter is not built, it will never return
|
|
|
|
// 'true'.
|
|
|
|
extern inline jboolean
|
|
|
|
_Jv_IsInterpretedClass (jclass c)
|
|
|
|
{
|
|
|
|
return (c->accflags & java::lang::reflect::Modifier::INTERPRETED) != 0;
|
|
|
|
}
|
|
|
|
|
2005-08-17 22:44:10 +02:00
|
|
|
// Return true if the class was compiled with the BC ABI.
|
|
|
|
extern inline jboolean
|
|
|
|
_Jv_IsBinaryCompatibilityABI (jclass c)
|
|
|
|
{
|
|
|
|
// There isn't really a better test for the ABI type at this point,
|
|
|
|
// that will work once the class has been registered.
|
|
|
|
return c->otable_syms || c->atable_syms || c->itable_syms;
|
|
|
|
}
|
|
|
|
|
2006-02-01 14:40:05 +01:00
|
|
|
// Returns whether the given class does not really exists (ie. we have no
|
|
|
|
// bytecode) but still allows us to do some very conservative actions.
|
|
|
|
// E.g. throwing a NoClassDefFoundError with the name of the missing
|
|
|
|
// class.
|
|
|
|
extern inline jboolean
|
|
|
|
_Jv_IsPhantomClass (jclass c)
|
|
|
|
{
|
|
|
|
return c->state == JV_STATE_PHANTOM;
|
|
|
|
}
|
|
|
|
|
2006-05-30 23:38:51 +02:00
|
|
|
// A helper function defined in prims.cc.
|
|
|
|
char* _Jv_PrependVersionedLibdir (char* libpath);
|
|
|
|
|
2007-01-09 20:58:05 +01:00
|
|
|
|
|
|
|
// An enum for use with JvSetThreadState. We use a C++ enum rather
|
|
|
|
// than the Java enum to avoid problems with class initialization
|
|
|
|
// during VM bootstrap.
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
JV_BLOCKED,
|
|
|
|
JV_NEW,
|
|
|
|
JV_RUNNABLE,
|
|
|
|
JV_TERMINATED,
|
|
|
|
JV_TIMED_WAITING,
|
|
|
|
JV_WAITING
|
|
|
|
} JvThreadState;
|
|
|
|
|
|
|
|
// Temporarily set the thread's state.
|
|
|
|
class JvSetThreadState
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
::java::lang::Thread *thread;
|
|
|
|
jint saved;
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
// Note that 'cthread' could be NULL -- during VM startup there may
|
|
|
|
// not be a Thread available.
|
|
|
|
JvSetThreadState(::java::lang::Thread *cthread, JvThreadState nstate)
|
|
|
|
: thread (cthread),
|
|
|
|
saved (cthread ? cthread->state : (jint)JV_NEW)
|
|
|
|
{
|
|
|
|
if (thread)
|
|
|
|
thread->state = nstate;
|
|
|
|
}
|
|
|
|
|
|
|
|
~JvSetThreadState()
|
|
|
|
{
|
|
|
|
if (thread)
|
|
|
|
thread->state = saved;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// This structure is used to represent all the data the native side
|
|
|
|
// needs. An object of this type is assigned to the `data' member of
|
|
|
|
// the Thread class.
|
|
|
|
struct natThread
|
|
|
|
{
|
|
|
|
// A thread is either alive, dead, or being sent a signal; if it is
|
|
|
|
// being sent a signal, it is also alive. Thus, if you want to know
|
|
|
|
// if a thread is alive, it is sufficient to test alive_status !=
|
|
|
|
// THREAD_DEAD.
|
|
|
|
volatile obj_addr_t alive_flag;
|
|
|
|
|
|
|
|
// These are used to interrupt sleep and join calls. We can share a
|
|
|
|
// condition variable here since it only ever gets notified when the thread
|
|
|
|
// exits.
|
|
|
|
_Jv_Mutex_t join_mutex;
|
|
|
|
_Jv_ConditionVariable_t join_cond;
|
|
|
|
|
|
|
|
// These are used by Unsafe.park() and Unsafe.unpark().
|
|
|
|
ParkHelper park_helper;
|
|
|
|
|
|
|
|
// This is private data for the thread system layer.
|
|
|
|
_Jv_Thread_t *thread;
|
|
|
|
|
|
|
|
// Each thread has its own JNI object.
|
2007-01-17 02:36:33 +01:00
|
|
|
_Jv_JNIEnv *jni_env;
|
2007-01-09 20:58:05 +01:00
|
|
|
};
|
|
|
|
|
1999-04-07 16:42:40 +02:00
|
|
|
#endif /* __JAVA_JVM_H__ */
|