mirror of
https://github.com/corda/corda.git
synced 2025-02-02 09:18:13 +00:00
fix some OpenJDK update regressions
This commit is contained in:
parent
3111f07430
commit
d94fd952e9
@ -551,12 +551,61 @@ class MyClasspath : public Classpath {
|
|||||||
expect(t, loadLibrary(t, libraryPath, "java", true, true));
|
expect(t, loadLibrary(t, libraryPath, "java", true, true));
|
||||||
#endif // not AVIAN_OPENJDK_SRC
|
#endif // not AVIAN_OPENJDK_SRC
|
||||||
|
|
||||||
object assertionLock = resolveField
|
{ object class_ = resolveClass
|
||||||
(t, type(t, Machine::ClassLoaderType), "assertionLock",
|
(t, root(t, Machine::BootLoader), "java/util/Properties", true,
|
||||||
"Ljava/lang/Object;");
|
Machine::NoClassDefFoundErrorType);
|
||||||
|
|
||||||
set(t, root(t, Machine::BootLoader), fieldOffset(t, assertionLock),
|
PROTECT(t, class_);
|
||||||
root(t, Machine::BootLoader));
|
|
||||||
|
object instance = makeNew(t, class_);
|
||||||
|
|
||||||
|
PROTECT(t, instance);
|
||||||
|
|
||||||
|
object constructor = resolveMethod(t, class_, "<init>", "()V");
|
||||||
|
|
||||||
|
t->m->processor->invoke(t, constructor, instance);
|
||||||
|
|
||||||
|
t->m->processor->invoke
|
||||||
|
(t, root(t, Machine::BootLoader), "java/lang/System",
|
||||||
|
"setProperties", "(Ljava/util/Properties;)V", 0, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
{ object constructor = resolveMethod
|
||||||
|
(t, type(t, Machine::ClassLoaderType), "<init>",
|
||||||
|
"(Ljava/lang/ClassLoader;)V");
|
||||||
|
|
||||||
|
PROTECT(t, constructor);
|
||||||
|
|
||||||
|
t->m->processor->invoke(t, constructor, root(t, Machine::BootLoader), 0);
|
||||||
|
|
||||||
|
t->m->processor->invoke
|
||||||
|
(t, constructor, root(t, Machine::AppLoader),
|
||||||
|
root(t, Machine::BootLoader));
|
||||||
|
}
|
||||||
|
|
||||||
|
{ object assertionLock = resolveField
|
||||||
|
(t, type(t, Machine::ClassLoaderType), "assertionLock",
|
||||||
|
"Ljava/lang/Object;");
|
||||||
|
|
||||||
|
set(t, root(t, Machine::BootLoader), fieldOffset(t, assertionLock),
|
||||||
|
root(t, Machine::BootLoader));
|
||||||
|
}
|
||||||
|
|
||||||
|
{ object scl = resolveField
|
||||||
|
(t, type(t, Machine::ClassLoaderType), "scl",
|
||||||
|
"Ljava/lang/ClassLoader;");
|
||||||
|
|
||||||
|
PROTECT(t, scl);
|
||||||
|
|
||||||
|
object sclSet = resolveField
|
||||||
|
(t, type(t, Machine::ClassLoaderType), "sclSet", "Z");
|
||||||
|
|
||||||
|
set(t, classStaticTable(t, type(t, Machine::ClassLoaderType)),
|
||||||
|
fieldOffset(t, scl), root(t, Machine::AppLoader));
|
||||||
|
|
||||||
|
cast<uint8_t>(classStaticTable(t, type(t, Machine::ClassLoaderType)),
|
||||||
|
fieldOffset(t, sclSet)) = true;
|
||||||
|
}
|
||||||
|
|
||||||
t->m->processor->invoke
|
t->m->processor->invoke
|
||||||
(t, root(t, Machine::BootLoader), "java/lang/System",
|
(t, root(t, Machine::BootLoader), "java/lang/System",
|
||||||
@ -2622,11 +2671,14 @@ extern "C" JNIEXPORT void JNICALL
|
|||||||
Avian_sun_misc_Unsafe_setMemory
|
Avian_sun_misc_Unsafe_setMemory
|
||||||
(Thread*, object, uintptr_t* arguments)
|
(Thread*, object, uintptr_t* arguments)
|
||||||
{
|
{
|
||||||
int64_t p; memcpy(&p, arguments + 1, 8);
|
object base = reinterpret_cast<object>(arguments[1]);
|
||||||
int64_t count; memcpy(&count, arguments + 3, 8);
|
int64_t offset; memcpy(&offset, arguments + 2, 8);
|
||||||
int8_t v = arguments[5];
|
int64_t count; memcpy(&count, arguments + 4, 8);
|
||||||
|
int8_t v = arguments[6];
|
||||||
|
|
||||||
memset(reinterpret_cast<int8_t*>(p), v, count);
|
memset(base
|
||||||
|
? &cast<int8_t>(base, offset)
|
||||||
|
: reinterpret_cast<int8_t*>(offset), v, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT void JNICALL
|
extern "C" JNIEXPORT void JNICALL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user