annotate src/cpu/x86/vm/interp_masm_x86.hpp @ 20504:6948da6d7c13

8052172: Evacuation failure handling in G1 does not evacuate all objects if -XX:-G1DeferredRSUpdate is set Summary: Remove -XX:-G1DeferredRSUpdate functionality as it is racy. During evacuation failure handling, threads where evacuation failure handling occurred may try to add remembered sets to regions which remembered sets are currently being scanned. The iterator to handle the remembered set scan does not support addition of entries during scan and so may skip valid references. Reviewed-by: iveresov, brutisso, mgerdin
author tschatzl
date Tue, 30 Sep 2014 09:44:36 +0200
parents 5ccbab1c69f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12962
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
1 /*
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
4 *
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
7 * published by the Free Software Foundation.
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
8 *
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
13 * accompanied this code).
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
14 *
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
18 *
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
21 * questions.
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
22 *
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
23 */
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
24
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
25 #ifndef CPU_X86_VM_INTERP_MASM_X86_HPP
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
26 #define CPU_X86_VM_INTERP_MASM_X86_HPP
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
27
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
28 #include "asm/macroAssembler.hpp"
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
29 #include "asm/macroAssembler.inline.hpp"
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
30 #include "interpreter/invocationCounter.hpp"
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
31 #include "runtime/frame.hpp"
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
32
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
33 // This file specializes the assember with interpreter-specific macros
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
34
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
35
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
36 class InterpreterMacroAssembler: public MacroAssembler {
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
37
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
38 #ifdef TARGET_ARCH_MODEL_x86_32
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
39 # include "interp_masm_x86_32.hpp"
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
40 #endif
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
41 #ifdef TARGET_ARCH_MODEL_x86_64
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
42 # include "interp_masm_x86_64.hpp"
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
43 #endif
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
44
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
45 private:
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
46
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
47 Register _locals_register; // register that contains the pointer to the locals
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
48 Register _bcp_register; // register that contains the bcp
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
49
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
50 public:
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
51 #ifndef CC_INTERP
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
52 void profile_obj_type(Register obj, const Address& mdo_addr);
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
53 void profile_arguments_type(Register mdp, Register callee, Register tmp, bool is_virtual);
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
54 void profile_return_type(Register mdp, Register ret, Register tmp);
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
55 void profile_parameters_type(Register mdp, Register tmp1, Register tmp2);
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
56 #endif /* !CC_INTERP */
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
57
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
58 };
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
59
5ccbab1c69f3 8026251: New type profiling points: parameters to methods
roland
parents:
diff changeset
60 #endif // CPU_X86_VM_INTERP_MASM_X86_HPP