annotate src/cpu/sparc/vm/methodHandles_sparc.hpp @ 6812:988bf00cc564

7200261: G1: Liveness counting inconsistencies during marking verification Summary: The clipping code in the routine that sets the bits for a range of cards, in the liveness accounting verification code was incorrect. It set all the bits in the card bitmap from the given starting index which would lead to spurious marking verification failures. Reviewed-by: brutisso, jwilhelm, jmasa
author johnc
date Thu, 27 Sep 2012 15:44:01 -0700
parents da91efe96a93
children 65d07d9ee446
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
1 /*
4818
82e5a84b7436 7120450: complete information dumped by frame_describe
bdelsart
parents: 4059
diff changeset
2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
4 *
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
7 * published by the Free Software Foundation.
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
8 *
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
13 * accompanied this code).
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
14 *
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
18 *
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
21 * questions.
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
22 *
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
23 */
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
24
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
25 // Platform-specific definitions for method handles.
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
26 // These definitions are inlined into class MethodHandles.
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
27
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
28 // Adapters
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
29 enum /* platform_dependent_constants */ {
4059
44ce519bc3d1 7104960: JSR 292: +VerifyMethodHandles in product JVM can overflow buffer
never
parents: 3808
diff changeset
30 adapter_code_size = NOT_LP64(23000 DEBUG_ONLY(+ 40000)) LP64_ONLY(35000 DEBUG_ONLY(+ 50000))
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
31 };
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
32
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
33 // Additional helper methods for MethodHandles code generation:
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
34 public:
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
35 static void load_klass_from_Class(MacroAssembler* _masm, Register klass_reg, Register temp_reg, Register temp2_reg);
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
36
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
37 static void verify_klass(MacroAssembler* _masm,
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6266
diff changeset
38 Register obj_reg, SystemDictionary::WKID klass_id,
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
39 Register temp_reg, Register temp2_reg,
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
40 const char* error_message = "wrong klass") NOT_DEBUG_RETURN;
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
41
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
42 static void verify_method_handle(MacroAssembler* _masm, Register mh_reg,
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
43 Register temp_reg, Register temp2_reg) {
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6266
diff changeset
44 verify_klass(_masm, mh_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_invoke_MethodHandle),
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
45 temp_reg, temp2_reg,
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
46 "reference is a MH");
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
47 }
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
48
6266
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
49 static void verify_ref_kind(MacroAssembler* _masm, int ref_kind, Register member_reg, Register temp) NOT_DEBUG_RETURN;
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
50
3808
341a57af9b0a 6990212: JSR 292 JVMTI MethodEnter hook is not called for JSR 292 bootstrap and target methods
never
parents: 3753
diff changeset
51 // Similar to InterpreterMacroAssembler::jump_from_interpreted.
341a57af9b0a 6990212: JSR 292 JVMTI MethodEnter hook is not called for JSR 292 bootstrap and target methods
never
parents: 3753
diff changeset
52 // Takes care of special dispatch from single stepping too.
6266
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
53 static void jump_from_method_handle(MacroAssembler* _masm, Register method,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
54 Register temp, Register temp2,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
55 bool for_compiler_entry);
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
56
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
57 static void jump_to_lambda_form(MacroAssembler* _masm,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
58 Register recv, Register method_temp,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
59 Register temp2, Register temp3,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
60 bool for_compiler_entry);
3808
341a57af9b0a 6990212: JSR 292 JVMTI MethodEnter hook is not called for JSR 292 bootstrap and target methods
never
parents: 3753
diff changeset
61
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents:
diff changeset
62 static void trace_method_handle(MacroAssembler* _masm, const char* adaptername) PRODUCT_RETURN;