mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8005002: Crash because of a raw oop in ClassLoaderData::add_dependency
Move the handelization of 'last' to a point before the GC might enter. Reviewed-by: dholmes, sspitsyn, coleenp
This commit is contained in:
parent
0d7c6381b3
commit
47424a5d4d
1 changed files with 5 additions and 3 deletions
|
@ -167,16 +167,18 @@ void ClassLoaderData::add_dependency(Handle dependency, TRAPS) {
|
|||
ok = (objArrayOop)ok->obj_at(1);
|
||||
}
|
||||
|
||||
// Must handle over GC points
|
||||
assert (last != NULL, "dependencies should be initialized");
|
||||
objArrayHandle last_handle(THREAD, last);
|
||||
|
||||
// Create a new dependency node with fields for (class_loader or mirror, next)
|
||||
objArrayOop deps = oopFactory::new_objectArray(2, CHECK);
|
||||
deps->obj_at_put(0, dependency());
|
||||
|
||||
// Must handle over more GC points
|
||||
// Must handle over GC points
|
||||
objArrayHandle new_dependency(THREAD, deps);
|
||||
|
||||
// Add the dependency under lock
|
||||
assert (last != NULL, "dependencies should be initialized");
|
||||
objArrayHandle last_handle(THREAD, last);
|
||||
locked_add_dependency(last_handle, new_dependency);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue