mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
6896043: first round of zero fixes
Reviewed-by: kvn
This commit is contained in:
parent
4a2266601a
commit
63cc2211ed
10 changed files with 59 additions and 54 deletions
|
@ -3231,6 +3231,21 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, v
|
|||
jint result = JNI_ERR;
|
||||
DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result);
|
||||
|
||||
// We're about to use Atomic::xchg for synchronization. Some Zero
|
||||
// platforms use the GCC builtin __sync_lock_test_and_set for this,
|
||||
// but __sync_lock_test_and_set is not guaranteed to do what we want
|
||||
// on all architectures. So we check it works before relying on it.
|
||||
#if defined(ZERO) && defined(ASSERT)
|
||||
{
|
||||
jint a = 0xcafebabe;
|
||||
jint b = Atomic::xchg(0xdeadbeef, &a);
|
||||
void *c = &a;
|
||||
void *d = Atomic::xchg_ptr(&b, &c);
|
||||
assert(a == 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works");
|
||||
assert(c == &b && d == &a, "Atomic::xchg_ptr() works");
|
||||
}
|
||||
#endif // ZERO && ASSERT
|
||||
|
||||
// At the moment it's only possible to have one Java VM,
|
||||
// since some of the runtime state is in global variables.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue