annotate src/share/vm/prims/whitebox.hpp @ 20543:e7d0505c8a30

8059758: Footprint regressions with JDK-8038423 Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything. Reviewed-by: jwilhelm, brutisso
author tschatzl
date Fri, 10 Oct 2014 15:51:58 +0200
parents e2452c3ff7fb
children 7848fc12602b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
1 /*
17817
4abb719c5620 8038240: new WB API to get nmethod
iignatyev
parents: 17705
diff changeset
2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
4 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
7 * published by the Free Software Foundation.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
8 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
13 * accompanied this code).
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
14 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
18 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
21 * questions.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
22 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
23 */
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
24
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
25 #ifndef SHARE_VM_PRIMS_WHITEBOX_HPP
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
26 #define SHARE_VM_PRIMS_WHITEBOX_HPP
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
27
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
28 #include "prims/jni.h"
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
29
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
30 #include "memory/allocation.hpp"
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
31 #include "oops/oopsHierarchy.hpp"
20451
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20278
diff changeset
32 #include "oops/symbol.hpp"
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20278
diff changeset
33 #include "runtime/interfaceSupport.hpp"
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
34
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
35 // Entry macro to transition from JNI to VM state.
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
36
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
37 #define WB_ENTRY(result_type, header) JNI_ENTRY(result_type, header)
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
38 #define WB_END JNI_END
8051
12e01444ca2d 8006683: Add WhiteBox API to testing of compiler
iignatyev
parents: 5978
diff changeset
39 #define WB_METHOD_DECLARE(result_type) extern "C" result_type JNICALL
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
40
17705
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
41 #define CHECK_JNI_EXCEPTION_(env, value) \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
42 do { \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
43 JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
44 if (HAS_PENDING_EXCEPTION) { \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
45 return(value); \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
46 } \
17704
56cd09c4a5c9 8028785: [parfait] warnings from b116 for hotspot.src.share.vm.prims: JNI exception pending
ccheung
parents: 17467
diff changeset
47 } while (0)
56cd09c4a5c9 8028785: [parfait] warnings from b116 for hotspot.src.share.vm.prims: JNI exception pending
ccheung
parents: 17467
diff changeset
48
17705
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
49 #define CHECK_JNI_EXCEPTION(env) \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
50 do { \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
51 JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
52 if (HAS_PENDING_EXCEPTION) { \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
53 return; \
ba2cf1fc862b 8034860: Fatal error due to incorrect thread state during nightly testing
ccheung
parents: 17704
diff changeset
54 } \
17704
56cd09c4a5c9 8028785: [parfait] warnings from b116 for hotspot.src.share.vm.prims: JNI exception pending
ccheung
parents: 17467
diff changeset
55 } while (0)
56cd09c4a5c9 8028785: [parfait] warnings from b116 for hotspot.src.share.vm.prims: JNI exception pending
ccheung
parents: 17467
diff changeset
56
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
57 class WhiteBox : public AllStatic {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
58 private:
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
59 static bool _used;
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
60 public:
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
61 static bool used() { return _used; }
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
62 static void set_used() { _used = true; }
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
63 static int offset_for_field(const char* field_name, oop object,
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
64 Symbol* signature_symbol);
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
65 static const char* lookup_jstring(const char* field_name, oop object);
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
66 static bool lookup_bool(const char* field_name, oop object);
20278
2c6ef90f030a 8049421: G1 Class Unloading after completing a concurrent mark cycle
stefank
parents: 17817
diff changeset
67
2c6ef90f030a 8049421: G1 Class Unloading after completing a concurrent mark cycle
stefank
parents: 17817
diff changeset
68 static int array_bytes_to_length(size_t bytes);
20451
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20278
diff changeset
69 static void register_methods(JNIEnv* env, jclass wbclass, JavaThread* thread,
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20278
diff changeset
70 JNINativeMethod* method_array, int method_count);
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20278
diff changeset
71 static void register_extended(JNIEnv* env, jclass wbclass, JavaThread* thread);
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
72 };
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
73
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
74
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
75
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
76 #endif // SHARE_VM_PRIMS_WHITEBOX_HPP