Commit 415791db by Tom Tromey Committed by Tom Tromey

* jni.cc (call): Synchronize if required.

From-SVN: r47949
parent 242f4945
2001-12-12 Tom Tromey <tromey@redhat.com> 2001-12-12 Tom Tromey <tromey@redhat.com>
* jni.cc (call): Synchronize if required.
* gij.cc (main): Clarify --help output. * gij.cc (main): Clarify --help output.
* gnu/gcj/runtime/StringBuffer.java * gnu/gcj/runtime/StringBuffer.java
......
...@@ -2066,6 +2066,17 @@ _Jv_JNIMethod::call (ffi_cif *, void *ret, ffi_raw *args, void *__this) ...@@ -2066,6 +2066,17 @@ _Jv_JNIMethod::call (ffi_cif *, void *ret, ffi_raw *args, void *__this)
if ((_this->self->accflags & java::lang::reflect::Modifier::STATIC)) if ((_this->self->accflags & java::lang::reflect::Modifier::STATIC))
real_args[offset++].ptr = _this->defining_class; real_args[offset++].ptr = _this->defining_class;
// In libgcj, the callee synchronizes.
jobject sync = NULL;
if ((_this->self->accflags & java::lang::reflect::Modifier::SYNCHRONIZED))
{
if ((_this->self->accflags & java::lang::reflect::Modifier::STATIC))
sync = _this->defining_class;
else
sync = (jobject) args[0].ptr;
_Jv_MonitorEnter (sync);
}
// Copy over passed-in arguments. // Copy over passed-in arguments.
memcpy (&real_args[offset], args, _this->args_raw_size); memcpy (&real_args[offset], args, _this->args_raw_size);
...@@ -2073,6 +2084,9 @@ _Jv_JNIMethod::call (ffi_cif *, void *ret, ffi_raw *args, void *__this) ...@@ -2073,6 +2084,9 @@ _Jv_JNIMethod::call (ffi_cif *, void *ret, ffi_raw *args, void *__this)
ffi_raw_call (&_this->jni_cif, (void (*)()) _this->function, ffi_raw_call (&_this->jni_cif, (void (*)()) _this->function,
ret, real_args); ret, real_args);
if (sync != NULL)
_Jv_MonitorExit (sync);
_Jv_JNI_PopSystemFrame (env); _Jv_JNI_PopSystemFrame (env);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment