annotate src/os_cpu/linux_zero/vm/thread_linux_zero.hpp @ 17833:bfdf528be8e8

8038498: Fix includes and C inlining after 8035330 Summary: Change 8035330: Remove G1ParScanPartialArrayClosure and G1ParScanHeapEvacClosure broke the debug build on AIX. The method do_oop_partial_array() is added in a header, but requires the inline function par_write_ref() through several inlined calls. In some cpp files, like arguments.cpp, par_write_ref() is not defined as the corresponding inline header and is not included. The AIX debug VM does not start because of the missing symbol. This change solves this by cleaning up include dependencies. Reviewed-by: tschatzl, stefank
author tschatzl
date Fri, 04 Apr 2014 10:43:56 +0200
parents f95d63e2154a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
1 /*
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
1379
f9271ff9d324 6941224: Improved stack overflow handling for Zero
twisti
parents: 1010
diff changeset
3 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
5 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
6 * This code is free software; you can redistribute it and/or modify it
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
7 * under the terms of the GNU General Public License version 2 only, as
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
8 * published by the Free Software Foundation.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
9 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
10 * This code is distributed in the hope that it will be useful, but WITHOUT
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
13 * version 2 for more details (a copy is included in the LICENSE file that
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
14 * accompanied this code).
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
15 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License version
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
17 * 2 along with this work; if not, write to the Free Software Foundation,
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
19 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1512
diff changeset
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1512
diff changeset
21 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1512
diff changeset
22 * questions.
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
23 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
24 */
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
25
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
26 #ifndef OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
27 #define OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
28
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
29 private:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
30 ZeroStack _zero_stack;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
31 ZeroFrame* _top_zero_frame;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
32
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
33 void pd_initialize() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
34 _top_zero_frame = NULL;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
35 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
36
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
37 public:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
38 ZeroStack *zero_stack() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
39 return &_zero_stack;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
40 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
41
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
42 public:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
43 ZeroFrame *top_zero_frame() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
44 return _top_zero_frame;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
45 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
46 void push_zero_frame(ZeroFrame *frame) {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
47 *(ZeroFrame **) frame = _top_zero_frame;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
48 _top_zero_frame = frame;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
49 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
50 void pop_zero_frame() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
51 zero_stack()->set_sp((intptr_t *) _top_zero_frame + 1);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
52 _top_zero_frame = *(ZeroFrame **) _top_zero_frame;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
53 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
54
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
55 public:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
56 static ByteSize zero_stack_offset() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
57 return byte_offset_of(JavaThread, _zero_stack);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
58 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
59 static ByteSize top_zero_frame_offset() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
60 return byte_offset_of(JavaThread, _top_zero_frame);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
61 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
62
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
63 public:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
64 void record_base_of_stack_pointer() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
65 assert(top_zero_frame() == NULL, "junk on stack prior to Java call");
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
66 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
67 void set_base_of_stack_pointer(intptr_t* base_sp) {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
68 assert(base_sp == NULL, "should be");
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
69 assert(top_zero_frame() == NULL, "junk on stack after Java call");
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
70 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
71
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
72 public:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
73 void set_last_Java_frame() {
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
74 set_last_Java_frame(top_zero_frame(), zero_stack()->sp());
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
75 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
76 void reset_last_Java_frame() {
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
77 frame_anchor()->zap();
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
78 }
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
79 void set_last_Java_frame(ZeroFrame* fp, intptr_t* sp) {
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
80 frame_anchor()->set(sp, NULL, fp);
1379
f9271ff9d324 6941224: Improved stack overflow handling for Zero
twisti
parents: 1010
diff changeset
81 }
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
82
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
83 public:
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
84 ZeroFrame* last_Java_fp() {
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
85 return frame_anchor()->last_Java_fp();
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
86 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
87
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
88 private:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
89 frame pd_last_frame() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
90 assert(has_last_Java_frame(), "must have last_Java_sp() when suspended");
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1379
diff changeset
91 return frame(last_Java_fp(), last_Java_sp());
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
92 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
93
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
94 public:
1512
6cfbdb113e52 6950617: Zero/Shark interface updates
twisti
parents: 1505
diff changeset
95 static ByteSize last_Java_fp_offset() {
6cfbdb113e52 6950617: Zero/Shark interface updates
twisti
parents: 1505
diff changeset
96 return byte_offset_of(JavaThread, _anchor) +
6cfbdb113e52 6950617: Zero/Shark interface updates
twisti
parents: 1505
diff changeset
97 JavaFrameAnchor::last_Java_fp_offset();
6cfbdb113e52 6950617: Zero/Shark interface updates
twisti
parents: 1505
diff changeset
98 }
6cfbdb113e52 6950617: Zero/Shark interface updates
twisti
parents: 1505
diff changeset
99
6cfbdb113e52 6950617: Zero/Shark interface updates
twisti
parents: 1505
diff changeset
100 public:
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
101 // Check for pending suspend requests and pending asynchronous
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
102 // exceptions. There are separate accessors for these, but
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
103 // _suspend_flags is volatile so using them would be unsafe.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
104 bool has_special_condition_for_native_trans() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
105 return _suspend_flags != 0;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
106 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
107
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
108 public:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
109 bool pd_get_top_frame_for_signal_handler(frame* fr_addr,
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
110 void* ucontext,
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
111 bool isInJava) {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
112 ShouldNotCallThis();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
113 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
114
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
115 // These routines are only used on cpu architectures that
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
116 // have separate register stacks (Itanium).
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
117 static bool register_stack_overflow() { return false; }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
118 static void enable_register_stack_guard() {}
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
119 static void disable_register_stack_guard() {}
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
120
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
121 #endif // OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP