Mercurial > hg > truffle
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 |
rev | line source |
---|---|
5915 | 1 /* |
17817 | 2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. |
5915 | 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 #ifndef SHARE_VM_PRIMS_WHITEBOX_HPP | |
26 #define SHARE_VM_PRIMS_WHITEBOX_HPP | |
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 | 32 #include "oops/symbol.hpp" |
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 | 57 class WhiteBox : public AllStatic { |
58 private: | |
59 static bool _used; | |
60 public: | |
61 static bool used() { return _used; } | |
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 | 69 static void register_methods(JNIEnv* env, jclass wbclass, JavaThread* thread, |
70 JNINativeMethod* method_array, int method_count); | |
71 static void register_extended(JNIEnv* env, jclass wbclass, JavaThread* thread); | |
5915 | 72 }; |
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 | 76 #endif // SHARE_VM_PRIMS_WHITEBOX_HPP |