annotate src/share/vm/runtime/atomic.inline.hpp @ 9126:bc26f978b0ce

HotSpotResolvedObjectType: implement hasFinalizeSubclass() correctly don't use the (wrong) cached value, but ask the runtime on each request. Fixes regression on xml.* benchmarks @ specjvm2008. The problem was: After the constructor of Object was deoptimized due to an assumption violation, it was recompiled again after some time. However, on recompilation, the value of hasFinalizeSubclass for the class was not updated and it was compiled again with a, now wrong, assumption, which then triggers deoptimization again. This was repeated until it hit the recompilation limit (defined by PerMethodRecompilationCutoff), and therefore only executed by the interpreter from now on, causing the performance regression.
author Bernhard Urban <bernhard.urban@jku.at>
date Mon, 15 Apr 2013 19:54:58 +0200
parents cd3d6a6b95d9
children bdd155477289
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7199
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
1 /*
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
4 *
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
7 * published by the Free Software Foundation.
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
8 *
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
13 * accompanied this code).
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
14 *
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
18 *
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
21 * questions.
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
22 *
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
23 */
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
24
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
25 #ifndef SHARE_VM_RUNTIME_ATOMIC_INLINE_HPP
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
26 #define SHARE_VM_RUNTIME_ATOMIC_INLINE_HPP
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
27
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
28 #include "runtime/atomic.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
29
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
30 // Linux
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
31 #ifdef TARGET_OS_ARCH_linux_x86
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
32 # include "atomic_linux_x86.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
33 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
34 #ifdef TARGET_OS_ARCH_linux_sparc
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
35 # include "atomic_linux_sparc.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
36 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
37 #ifdef TARGET_OS_ARCH_linux_zero
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
38 # include "atomic_linux_zero.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
39 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
40 #ifdef TARGET_OS_ARCH_linux_arm
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
41 # include "atomic_linux_arm.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
42 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
43 #ifdef TARGET_OS_ARCH_linux_ppc
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
44 # include "atomic_linux_ppc.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
45 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
46
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
47 // Solaris
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
48 #ifdef TARGET_OS_ARCH_solaris_x86
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
49 # include "atomic_solaris_x86.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
50 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
51 #ifdef TARGET_OS_ARCH_solaris_sparc
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
52 # include "atomic_solaris_sparc.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
53 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
54
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
55 // Windows
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
56 #ifdef TARGET_OS_ARCH_windows_x86
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
57 # include "atomic_windows_x86.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
58 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
59
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
60 // BSD
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
61 #ifdef TARGET_OS_ARCH_bsd_x86
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
62 # include "atomic_bsd_x86.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
63 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
64 #ifdef TARGET_OS_ARCH_bsd_zero
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
65 # include "atomic_bsd_zero.inline.hpp"
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
66 #endif
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
67
cd3d6a6b95d9 8003240: x86: move MacroAssembler into separate file
twisti
parents:
diff changeset
68 #endif // SHARE_VM_RUNTIME_ATOMIC_INLINE_HPP