mirror of git://gcc.gnu.org/git/gcc.git
resolve.cc (ncode): Use _Jv_platform_ffi_abi.
* resolve.cc (ncode): Use _Jv_platform_ffi_abi. Include platform.h. * java/lang/natRuntime.cc (insertSystemProperties): Use _Jv_platform_path_separator. (nativeGetLibname): Use _Jv_platform_file_separator. (_load): Use _Jv_platform_onload_names. (onload_names): New global. * include/win32.h (_Jv_platform_file_separator): New define. (_Jv_platform_path_separator): Likewise. (_Jv_platform_onload_names): Likewise. (_Jv_platform_ffi_abi): Likewise. * include/posix.h (_Jv_platform_file_separator): New define. (_Jv_platform_path_separator): Likewise. (_Jv_platform_onload_names): Likewise. (_Jv_platform_ffi_abi): Likewise. From-SVN: r64461
This commit is contained in:
parent
01cca2d84d
commit
2b7f1f8f41
|
|
@ -1,3 +1,21 @@
|
||||||
|
2003-03-16 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* resolve.cc (ncode): Use _Jv_platform_ffi_abi.
|
||||||
|
Include platform.h.
|
||||||
|
* java/lang/natRuntime.cc (insertSystemProperties): Use
|
||||||
|
_Jv_platform_path_separator.
|
||||||
|
(nativeGetLibname): Use _Jv_platform_file_separator.
|
||||||
|
(_load): Use _Jv_platform_onload_names.
|
||||||
|
(onload_names): New global.
|
||||||
|
* include/win32.h (_Jv_platform_file_separator): New define.
|
||||||
|
(_Jv_platform_path_separator): Likewise.
|
||||||
|
(_Jv_platform_onload_names): Likewise.
|
||||||
|
(_Jv_platform_ffi_abi): Likewise.
|
||||||
|
* include/posix.h (_Jv_platform_file_separator): New define.
|
||||||
|
(_Jv_platform_path_separator): Likewise.
|
||||||
|
(_Jv_platform_onload_names): Likewise.
|
||||||
|
(_Jv_platform_ffi_abi): Likewise.
|
||||||
|
|
||||||
2003-03-14 Hans Boehm <Hans.Boehm@hp.com>
|
2003-03-14 Hans Boehm <Hans.Boehm@hp.com>
|
||||||
|
|
||||||
* java/lang/natObject.cc (JV_SYNC_HASH): replace signed % by &.
|
* java/lang/natObject.cc (JV_SYNC_HASH): replace signed % by &.
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,18 @@ details. */
|
||||||
#define _Jv_platform_solib_prefix "lib"
|
#define _Jv_platform_solib_prefix "lib"
|
||||||
#define _Jv_platform_solib_suffix ".so"
|
#define _Jv_platform_solib_suffix ".so"
|
||||||
|
|
||||||
|
// Separator for file name components.
|
||||||
|
#define _Jv_platform_file_separator ((jchar) '/')
|
||||||
|
// Separator for path components.
|
||||||
|
#define _Jv_platform_path_separator ((jchar) ':')
|
||||||
|
|
||||||
|
// List of names for `JNI_OnLoad'.
|
||||||
|
#define _Jv_platform_onload_names { "JNI_OnLoad", NULL }
|
||||||
|
|
||||||
|
// Type of libffi ABI used by JNICALL methods. NOTE: This must agree
|
||||||
|
// with the JNICALL definition in jni.h
|
||||||
|
#define _Jv_platform_ffi_abi FFI_DEFAULT_ABI
|
||||||
|
|
||||||
#ifndef DISABLE_JAVA_NET
|
#ifndef DISABLE_JAVA_NET
|
||||||
#include <java/net/InetAddress.h>
|
#include <java/net/InetAddress.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,22 @@ details. */
|
||||||
#define _Jv_platform_solib_prefix ""
|
#define _Jv_platform_solib_prefix ""
|
||||||
#define _Jv_platform_solib_suffix ".dll"
|
#define _Jv_platform_solib_suffix ".dll"
|
||||||
|
|
||||||
|
// Separator for file name components.
|
||||||
|
#define _Jv_platform_file_separator ((jchar) '\\')
|
||||||
|
// Separator for path components.
|
||||||
|
#define _Jv_platform_path_separator ((jchar) ';')
|
||||||
|
|
||||||
|
// List of names for `JNI_OnLoad'. On Win32, JNI_OnLoad is an
|
||||||
|
// "stdcall" function taking two pointers (8 bytes) as arguments. It
|
||||||
|
// could also have been exported as "JNI_OnLoad@8" (MinGW) or
|
||||||
|
// "_JNI_OnLoad@8" (MSVC).
|
||||||
|
#define _Jv_platform_onload_names \
|
||||||
|
{ "JNI_OnLoad", "JNI_OnLoad@8", "_JNI_OnLoad@8", NULL }
|
||||||
|
|
||||||
|
// Type of libffi ABI used by JNICALL methods. NOTE: This must agree
|
||||||
|
// with the JNICALL definition in jni.h
|
||||||
|
#define _Jv_platform_ffi_abi FFI_STDCALL
|
||||||
|
|
||||||
#ifndef DISABLE_JAVA_NET
|
#ifndef DISABLE_JAVA_NET
|
||||||
|
|
||||||
// these errors cannot occur on Win32
|
// these errors cannot occur on Win32
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,11 @@ java::lang::Runtime::gc (void)
|
||||||
_Jv_RunGC ();
|
_Jv_RunGC ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_LTDL
|
||||||
|
// List of names for JNI_OnLoad.
|
||||||
|
static const char *onload_names[] = _Jv_platform_onload_names;
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
java::lang::Runtime::_load (jstring path, jboolean do_search)
|
java::lang::Runtime::_load (jstring path, jboolean do_search)
|
||||||
{
|
{
|
||||||
|
|
@ -221,19 +226,16 @@ java::lang::Runtime::_load (jstring path, jboolean do_search)
|
||||||
throw new UnsatisfiedLinkError (str);
|
throw new UnsatisfiedLinkError (str);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *onload = lt_dlsym (h, "JNI_OnLoad");
|
// Search for JNI_OnLoad function.
|
||||||
|
void *onload = NULL;
|
||||||
#ifdef WIN32
|
const char **name = onload_names;
|
||||||
// On Win32, JNI_OnLoad is an "stdcall" function taking two pointers
|
while (*name != NULL)
|
||||||
// (8 bytes) as arguments. It could also have been exported as
|
|
||||||
// "JNI_OnLoad@8" (MinGW) or "_JNI_OnLoad@8" (MSVC).
|
|
||||||
if (onload == NULL)
|
|
||||||
{
|
{
|
||||||
onload = lt_dlsym (h, "JNI_OnLoad@8");
|
onload = lt_dlsym (h, *name);
|
||||||
if (onload == NULL)
|
if (onload != NULL)
|
||||||
onload = lt_dlsym (h, "_JNI_OnLoad@8");
|
break;
|
||||||
|
++name;
|
||||||
}
|
}
|
||||||
#endif /* WIN32 */
|
|
||||||
|
|
||||||
if (onload != NULL)
|
if (onload != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -570,11 +572,7 @@ java::lang::Runtime::insertSystemProperties (java::util::Properties *newprops)
|
||||||
if (classpath)
|
if (classpath)
|
||||||
{
|
{
|
||||||
sb->append (JvNewStringLatin1 (classpath));
|
sb->append (JvNewStringLatin1 (classpath));
|
||||||
#ifdef WIN32
|
sb->append (_Jv_platform_path_separator);
|
||||||
sb->append ((jchar) ';');
|
|
||||||
#else
|
|
||||||
sb->append ((jchar) ':');
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (cp != NULL)
|
if (cp != NULL)
|
||||||
sb->append (cp);
|
sb->append (cp);
|
||||||
|
|
@ -632,14 +630,7 @@ java::lang::Runtime::nativeGetLibname (jstring pathname, jstring libname)
|
||||||
java::lang::StringBuffer *sb = new java::lang::StringBuffer ();
|
java::lang::StringBuffer *sb = new java::lang::StringBuffer ();
|
||||||
sb->append(pathname);
|
sb->append(pathname);
|
||||||
if (pathname->length() > 0)
|
if (pathname->length() > 0)
|
||||||
{
|
sb->append (_Jv_platform_file_separator);
|
||||||
// FIXME: use platform function here.
|
|
||||||
#ifdef WIN32
|
|
||||||
sb->append ((jchar) '\\');
|
|
||||||
#else
|
|
||||||
sb->append ((jchar) '/');
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
sb->append (JvNewStringLatin1 (_Jv_platform_solib_prefix));
|
sb->append (JvNewStringLatin1 (_Jv_platform_solib_prefix));
|
||||||
sb->append(libname);
|
sb->append(libname);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ details. */
|
||||||
/* Author: Kresten Krab Thorup <krab@gnu.org> */
|
/* Author: Kresten Krab Thorup <krab@gnu.org> */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#include <platform.h>
|
||||||
|
|
||||||
#include <java-interp.h>
|
#include <java-interp.h>
|
||||||
|
|
||||||
|
|
@ -1003,14 +1004,7 @@ _Jv_JNIMethod::ncode ()
|
||||||
memcpy (&jni_arg_types[offset], &closure->arg_types[0],
|
memcpy (&jni_arg_types[offset], &closure->arg_types[0],
|
||||||
arg_count * sizeof (ffi_type *));
|
arg_count * sizeof (ffi_type *));
|
||||||
|
|
||||||
// NOTE: This must agree with the JNICALL definition in jni.h
|
if (ffi_prep_cif (&jni_cif, _Jv_platform_ffi_abi,
|
||||||
#ifdef WIN32
|
|
||||||
#define FFI_JNI_ABI FFI_STDCALL
|
|
||||||
#else
|
|
||||||
#define FFI_JNI_ABI FFI_DEFAULT_ABI
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ffi_prep_cif (&jni_cif, FFI_JNI_ABI,
|
|
||||||
extra_args + arg_count, rtype,
|
extra_args + arg_count, rtype,
|
||||||
jni_arg_types) != FFI_OK)
|
jni_arg_types) != FFI_OK)
|
||||||
throw_internal_error ("ffi_prep_cif failed for JNI function");
|
throw_internal_error ("ffi_prep_cif failed for JNI function");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue