mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
7011386: race in objArrayKlass::array_klass_impl
Move _lower_dimension field initialization before _higher_dimension and add storestore barrier. Reviewed-by: dholmes, iveresov, never
This commit is contained in:
parent
6a80d2126c
commit
4912ef0e5d
4 changed files with 11 additions and 9 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -235,8 +235,9 @@ klassOop objArrayKlass::array_klass_impl(objArrayKlassHandle this_oop, bool or_n
|
|||
objArrayKlassKlass::cast(Universe::objArrayKlassKlassObj())->
|
||||
allocate_objArray_klass(dimension + 1, this_oop, CHECK_NULL);
|
||||
ak = objArrayKlassHandle(THREAD, new_klass);
|
||||
this_oop->set_higher_dimension(ak());
|
||||
ak->set_lower_dimension(this_oop());
|
||||
OrderAccess::storestore();
|
||||
this_oop->set_higher_dimension(ak());
|
||||
assert(ak->oop_is_objArray(), "incorrect initialization of objArrayKlass");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue