Mercurial > hg > truffle
annotate test/compiler/8009761/Test8009761.java @ 10988:cd54c7e92908
8015660: Test8009761.java "Failed: init recursive calls: 24. After deopt 25"
Summary: Windows reserves and only partially commits thread stack. For detecting more thread stack space for execution, Windows installs one-shot page as guard page just before the current commited edge. It will trigger STACK_OVERFLOW_EXCEPTION when lands on last 4 pages of thread stack space. StackYellowPages default value is 2 on Windows (plus 1 page of StackRedPages, 3 pages guarded by hotspot) so the exception happens one page before Yellow pages. Same route executed second time will have one more page brought in, this leads same execution with different stack depth(interpreter mode). We need match Windows settings so the stack overflow exception will not happen before Yellow pages.
Reviewed-by: dholmes
Contributed-by: andreas.schoesser@sap.com
author | minqi |
---|---|
date | Tue, 18 Jun 2013 09:08:35 -0700 |
parents | d15464bfd4d0 |
children |
rev | line source |
---|---|
8727
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
1 /* |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
4 * |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
8 * |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
13 * accompanied this code). |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
14 * |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
18 * |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
21 * questions. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
22 */ |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
23 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
24 /* |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
25 * @test |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
26 * @bug 8009761 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
27 * @summary Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates |
10273
d15464bfd4d0
8012037: Test8009761.java "Failed: init recursive calls: 7224. After deopt 58824"
roland
parents:
8876
diff
changeset
|
28 * @run main/othervm -XX:CompileCommand=exclude,Test8009761::m2 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -Xss256K Test8009761 |
8727
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
29 * |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
30 */ |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
31 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
32 public class Test8009761 { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
33 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
34 static class UnloadedClass { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
35 volatile int i; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
36 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
37 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
38 static Object m1(boolean deopt) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
39 // When running interpreted, on sparc, the caller's stack is |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
40 // extended for the locals and the caller's frame is restored |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
41 // on return. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
42 long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
43 l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
44 l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
45 l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
46 l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
47 l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
48 l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
49 l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
50 l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
51 l108, l109, l110, l111, l112, l113, l114, l115, l116, l117, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
52 l118, l119, l120, l121, l122, l123, l124, l125, l126, l127, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
53 l128, l129, l130, l131, l132, l133, l134, l135, l136, l137, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
54 l138, l139, l140, l141, l142, l143, l144, l145, l146, l147, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
55 l148, l149, l150, l151, l152, l153, l154, l155, l156, l157, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
56 l158, l159, l160, l161, l162, l163, l164, l165, l166, l167, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
57 l168, l169, l170, l171, l172, l173, l174, l175, l176, l177, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
58 l178, l179, l180, l181, l182, l183, l184, l185, l186, l187, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
59 l188, l189, l190, l191, l192, l193, l194, l195, l196, l197, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
60 l198, l199, l200, l201, l202, l203, l204, l205, l206, l207, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
61 l208, l209, l210, l211, l212, l213, l214, l215, l216, l217, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
62 l218, l219, l220, l221, l222, l223, l224, l225, l226, l227, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
63 l228, l229, l230, l231, l232, l233, l234, l235, l236, l237, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
64 l238, l239, l240, l241, l242, l243, l244, l245, l246, l247, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
65 l248, l249, l250, l251, l252, l253, l254, l255, l256, l257, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
66 l258, l259, l260, l261, l262, l263, l264, l265, l266, l267, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
67 l268, l269, l270, l271, l272, l273, l274, l275, l276, l277, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
68 l278, l279, l280, l281, l282, l283, l284, l285, l286, l287, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
69 l288, l289, l290, l291, l292, l293, l294, l295, l296, l297, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
70 l298, l299, l300, l301, l302, l303, l304, l305, l306, l307, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
71 l308, l309, l310, l311, l312, l313, l314, l315, l316, l317, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
72 l318, l319, l320, l321, l322, l323, l324, l325, l326, l327, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
73 l328, l329, l330, l331, l332, l333, l334, l335, l336, l337, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
74 l338, l339, l340, l341, l342, l343, l344, l345, l346, l347, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
75 l348, l349, l350, l351, l352, l353, l354, l355, l356, l357, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
76 l358, l359, l360, l361, l362, l363, l364, l365, l366, l367, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
77 l368, l369, l370, l371, l372, l373, l374, l375, l376, l377, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
78 l378, l379, l380, l381, l382, l383, l384, l385, l386, l387, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
79 l388, l389, l390, l391, l392, l393, l394, l395, l396, l397, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
80 l398, l399, l400, l401, l402, l403, l404, l405, l406, l407, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
81 l408, l409, l410, l411, l412, l413, l414, l415, l416, l417, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
82 l418, l419, l420, l421, l422, l423, l424, l425, l426, l427, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
83 l428, l429, l430, l431, l432, l433, l434, l435, l436, l437, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
84 l438, l439, l440, l441, l442, l443, l444, l445, l446, l447, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
85 l448, l449, l450, l451, l452, l453, l454, l455, l456, l457, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
86 l458, l459, l460, l461, l462, l463, l464, l465, l466, l467, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
87 l468, l469, l470, l471, l472, l473, l474, l475, l476, l477, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
88 l478, l479, l480, l481, l482, l483, l484, l485, l486, l487, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
89 l488, l489, l490, l491, l492, l493, l494, l495, l496, l497, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
90 l498, l499, l500, l501, l502, l503, l504, l505, l506, l507, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
91 l508, l509, l510, l511; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
92 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
93 long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
94 ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
95 ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
96 ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
97 ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
98 ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
99 ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
100 ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
101 ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
102 ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
103 ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
104 ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
105 ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
106 ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
107 ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
108 ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
109 ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
110 ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
111 ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
112 ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
113 ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
114 ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
115 ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
116 ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
117 ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
118 ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
119 ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
120 ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
121 ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
122 ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
123 ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
124 ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
125 ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
126 ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
127 ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
128 ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
129 ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
130 ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
131 ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
132 ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
133 ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
134 ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
135 ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
136 ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
137 ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
138 ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
139 ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
140 ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
141 ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
142 ll508, ll509, ll510, ll511; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
143 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
144 if (deopt) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
145 UnloadedClass res = new UnloadedClass(); // sufficient to force deopt with c2 but not c1 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
146 res.i = 0; // forces deopt with c1 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
147 return res; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
148 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
149 return null; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
150 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
151 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
152 static int count = 0; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
153 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
154 static void m2() { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
155 // Will be called recursively until a stack overflow |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
156 // exception. Makes sure it has a lot of locals so that it's |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
157 // not called a sufficient number of times to trigger |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
158 // compilation. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
159 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
160 long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
161 l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
162 l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
163 l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
164 l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
165 l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
166 l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
167 l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
168 l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
169 l108, l109, l110, l111, l112, l113, l114, l115, l116, l117, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
170 l118, l119, l120, l121, l122, l123, l124, l125, l126, l127, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
171 l128, l129, l130, l131, l132, l133, l134, l135, l136, l137, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
172 l138, l139, l140, l141, l142, l143, l144, l145, l146, l147, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
173 l148, l149, l150, l151, l152, l153, l154, l155, l156, l157, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
174 l158, l159, l160, l161, l162, l163, l164, l165, l166, l167, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
175 l168, l169, l170, l171, l172, l173, l174, l175, l176, l177, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
176 l178, l179, l180, l181, l182, l183, l184, l185, l186, l187, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
177 l188, l189, l190, l191, l192, l193, l194, l195, l196, l197, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
178 l198, l199, l200, l201, l202, l203, l204, l205, l206, l207, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
179 l208, l209, l210, l211, l212, l213, l214, l215, l216, l217, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
180 l218, l219, l220, l221, l222, l223, l224, l225, l226, l227, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
181 l228, l229, l230, l231, l232, l233, l234, l235, l236, l237, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
182 l238, l239, l240, l241, l242, l243, l244, l245, l246, l247, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
183 l248, l249, l250, l251, l252, l253, l254, l255, l256, l257, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
184 l258, l259, l260, l261, l262, l263, l264, l265, l266, l267, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
185 l268, l269, l270, l271, l272, l273, l274, l275, l276, l277, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
186 l278, l279, l280, l281, l282, l283, l284, l285, l286, l287, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
187 l288, l289, l290, l291, l292, l293, l294, l295, l296, l297, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
188 l298, l299, l300, l301, l302, l303, l304, l305, l306, l307, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
189 l308, l309, l310, l311, l312, l313, l314, l315, l316, l317, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
190 l318, l319, l320, l321, l322, l323, l324, l325, l326, l327, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
191 l328, l329, l330, l331, l332, l333, l334, l335, l336, l337, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
192 l338, l339, l340, l341, l342, l343, l344, l345, l346, l347, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
193 l348, l349, l350, l351, l352, l353, l354, l355, l356, l357, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
194 l358, l359, l360, l361, l362, l363, l364, l365, l366, l367, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
195 l368, l369, l370, l371, l372, l373, l374, l375, l376, l377, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
196 l378, l379, l380, l381, l382, l383, l384, l385, l386, l387, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
197 l388, l389, l390, l391, l392, l393, l394, l395, l396, l397, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
198 l398, l399, l400, l401, l402, l403, l404, l405, l406, l407, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
199 l408, l409, l410, l411, l412, l413, l414, l415, l416, l417, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
200 l418, l419, l420, l421, l422, l423, l424, l425, l426, l427, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
201 l428, l429, l430, l431, l432, l433, l434, l435, l436, l437, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
202 l438, l439, l440, l441, l442, l443, l444, l445, l446, l447, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
203 l448, l449, l450, l451, l452, l453, l454, l455, l456, l457, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
204 l458, l459, l460, l461, l462, l463, l464, l465, l466, l467, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
205 l468, l469, l470, l471, l472, l473, l474, l475, l476, l477, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
206 l478, l479, l480, l481, l482, l483, l484, l485, l486, l487, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
207 l488, l489, l490, l491, l492, l493, l494, l495, l496, l497, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
208 l498, l499, l500, l501, l502, l503, l504, l505, l506, l507, |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
209 l508, l509, l510, l511; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
210 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
211 count++; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
212 m2(); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
213 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
214 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
215 static Object m3(boolean overflow_stack, boolean deopt) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
216 if (overflow_stack) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
217 m2(); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
218 return null; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
219 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
220 Object o = m1(deopt); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
221 if (deopt) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
222 m2(); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
223 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
224 return o; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
225 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
226 |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
227 static public void main(String[] args) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
228 int c1; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
229 // Call m2 from m3 recursively until stack overflow. Count the number of recursive calls. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
230 try { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
231 m3(true, false); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
232 } catch(StackOverflowError soe) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
233 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
234 c1 = count; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
235 // Force the compilation of m3() that will inline m1() |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
236 for (int i = 0; i < 20000; i++) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
237 m3(false, false); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
238 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
239 count = 0; |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
240 // Force deoptimization of m3() in m1(), then return from m1() |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
241 // to m3(), call recursively m2(). If deoptimization correctly |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
242 // built the interpreter stack for m3()/m1() then we should be |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
243 // able to call m2() recursively as many times as before. |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
244 try { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
245 m3(false, true); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
246 } catch(StackOverflowError soe) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
247 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
248 if (c1 != count) { |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
249 System.out.println("Failed: init recursive calls: " + c1 + ". After deopt " + count); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
250 System.exit(97); |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
251 } else { |
10273
d15464bfd4d0
8012037: Test8009761.java "Failed: init recursive calls: 7224. After deopt 58824"
roland
parents:
8876
diff
changeset
|
252 System.out.println("PASSED " + c1); |
8727
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
253 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
254 } |
0094485b46c7
8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
roland
parents:
diff
changeset
|
255 } |