annotate src/cpu/x86/vm/methodHandles_x86.hpp @ 20304:a22acf6d7598

8048112: G1 Full GC needs to support the case when the very first region is not available Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett. Reviewed-by: brutisso
author tschatzl
date Mon, 21 Jul 2014 10:00:31 +0200
parents 65d07d9ee446
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3363
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
1 /*
4818
82e5a84b7436 7120450: complete information dumped by frame_describe
bdelsart
parents: 4118
diff changeset
2 * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
3363
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
4 *
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
7 * published by the Free Software Foundation.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
8 *
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
13 * accompanied this code).
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
14 *
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
18 *
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
21 * questions.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
22 *
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
23 */
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
24
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
25 // Platform-specific definitions for method handles.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
26 // These definitions are inlined into class MethodHandles.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
27
3753
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents: 3363
diff changeset
28 // Adapters
cba7b5c2d53f 7045514: SPARC assembly code for JSR 292 ricochet frames
never
parents: 3363
diff changeset
29 enum /* platform_dependent_constants */ {
6266
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
30 adapter_code_size = NOT_LP64(16000 DEBUG_ONLY(+ 25000)) LP64_ONLY(32000 DEBUG_ONLY(+ 150000))
3363
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
31 };
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
32
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
33 // Additional helper methods for MethodHandles code generation:
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
34 public:
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
35 static void load_klass_from_Class(MacroAssembler* _masm, Register klass_reg);
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
36
167b70ff3abc 6939861: JVM should handle more conversion operations
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, SystemDictionary::WKID klass_id,
3363
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
39 const char* error_message = "wrong klass") NOT_DEBUG_RETURN;
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
40
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
41 static void verify_method_handle(MacroAssembler* _masm, Register mh_reg) {
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6266
diff changeset
42 verify_klass(_masm, mh_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_invoke_MethodHandle),
3363
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
43 "reference is a MH");
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
44 }
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
45
6266
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
46 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
47
3808
341a57af9b0a 6990212: JSR 292 JVMTI MethodEnter hook is not called for JSR 292 bootstrap and target methods
never
parents: 3753
diff changeset
48 // 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
49 // 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
50 static void jump_from_method_handle(MacroAssembler* _masm, Register method, Register temp,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
51 bool for_compiler_entry);
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
52
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
53 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
54 Register recv, Register method_temp,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
55 Register temp2,
1d7922586cf6 7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents: 4824
diff changeset
56 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
57
3363
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
58 static Register saved_last_sp_register() {
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
59 // Should be in sharedRuntime, not here.
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
60 return LP64_ONLY(r13) NOT_LP64(rsi);
167b70ff3abc 6939861: JVM should handle more conversion operations
never
parents:
diff changeset
61 }