Thu, 08 Apr 2010 10:55:40 +0200
6941529: SharedRuntime::raw_exception_handler_for_return_address must reset thread MethodHandle flag
Summary: During testing a bug was hit when an exception returned to the interpreter and the SP was wrong.
Reviewed-by: kvn, never
1 /*
2 * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved.
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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 *
23 */
25 // This file holds the platform specific parts of the StubRoutines
26 // definition. See stubRoutines.hpp for a description on how to
27 // extend it.
29 static bool returns_to_call_stub(address return_pc) { return return_pc == _call_stub_return_address; }
31 enum platform_dependent_constants {
32 code_size1 = 19000, // simply increase if too small (assembler will crash if too small)
33 code_size2 = 22000 // simply increase if too small (assembler will crash if too small)
34 };
36 // MethodHandles adapters
37 enum method_handles_platform_dependent_constants {
38 method_handles_adapters_code_size = 13000
39 };
41 class x86 {
42 friend class StubGenerator;
44 private:
45 static address _get_previous_fp_entry;
46 static address _verify_mxcsr_entry;
48 static address _f2i_fixup;
49 static address _f2l_fixup;
50 static address _d2i_fixup;
51 static address _d2l_fixup;
53 static address _float_sign_mask;
54 static address _float_sign_flip;
55 static address _double_sign_mask;
56 static address _double_sign_flip;
57 static address _mxcsr_std;
59 public:
61 static address get_previous_fp_entry()
62 {
63 return _get_previous_fp_entry;
64 }
66 static address verify_mxcsr_entry()
67 {
68 return _verify_mxcsr_entry;
69 }
71 static address f2i_fixup()
72 {
73 return _f2i_fixup;
74 }
76 static address f2l_fixup()
77 {
78 return _f2l_fixup;
79 }
81 static address d2i_fixup()
82 {
83 return _d2i_fixup;
84 }
86 static address d2l_fixup()
87 {
88 return _d2l_fixup;
89 }
91 static address float_sign_mask()
92 {
93 return _float_sign_mask;
94 }
96 static address float_sign_flip()
97 {
98 return _float_sign_flip;
99 }
101 static address double_sign_mask()
102 {
103 return _double_sign_mask;
104 }
106 static address double_sign_flip()
107 {
108 return _double_sign_flip;
109 }
111 static address mxcsr_std()
112 {
113 return _mxcsr_std;
114 }
115 };