Mercurial > hg > truffle
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 |
rev | line source |
---|---|
3363 | 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 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
20 * or visit www.oracle.com if you need additional information or have any | |
21 * questions. | |
22 * | |
23 */ | |
24 | |
25 // Platform-specific definitions for method handles. | |
26 // These definitions are inlined into class MethodHandles. | |
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 | 31 }; |
32 | |
33 // Additional helper methods for MethodHandles code generation: | |
34 public: | |
35 static void load_klass_from_Class(MacroAssembler* _masm, Register klass_reg); | |
36 | |
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 | 39 const char* error_message = "wrong klass") NOT_DEBUG_RETURN; |
40 | |
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 | 43 "reference is a MH"); |
44 } | |
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 | 58 static Register saved_last_sp_register() { |
59 // Should be in sharedRuntime, not here. | |
60 return LP64_ONLY(r13) NOT_LP64(rsi); | |
61 } |