Mercurial > hg > graal-compiler
view test/compiler/uncommontrap/StackOverflowGuardPagesOff.java @ 19172:76090119f89c
Do only constant folding when creating a new array length node in the parser.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Fri, 06 Feb 2015 04:33:04 +0100 |
parents | b9b6934ad75c |
children |
line wrap: on
line source
/* * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * @test * @bug 8029383 * @summary stack overflow if callee is marked for deoptimization causes crash * @run main/othervm -XX:TieredStopAtLevel=1 -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,StackOverflowGuardPagesOff::m1 -XX:CompileCommand=exclude,StackOverflowGuardPagesOff::m2 -Xss256K -XX:-UseOnStackReplacement StackOverflowGuardPagesOff * */ // This test calls m2 recursively until a stack overflow. Then calls // m3 that calls m1. m1 triggers B's class loading, as a result m1 and // m3 needs to be deoptimized. Deoptimization of m1 causes a stack // overflow exception to be thrown which is propagated to m3 in the // deopt blob. If the guard pages are no enabled, the stack bang in // the deopt blob triggers a crash. public class StackOverflowGuardPagesOff { static class A { void m() {} } static class B extends A { void m() {} } static void m1(boolean deopt, A a) { long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72, l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84, l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96, l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107, l108, l109, l110, l111, l112, l113, l114, l115, l116, l117, l118, l119, l120, l121, l122, l123, l124, l125, l126, l127, l128, l129, l130, l131, l132, l133, l134, l135, l136, l137, l138, l139, l140, l141, l142, l143, l144, l145, l146, l147, l148, l149, l150, l151, l152, l153, l154, l155, l156, l157, l158, l159, l160, l161, l162, l163, l164, l165, l166, l167, l168, l169, l170, l171, l172, l173, l174, l175, l176, l177, l178, l179, l180, l181, l182, l183, l184, l185, l186, l187, l188, l189, l190, l191, l192, l193, l194, l195, l196, l197, l198, l199, l200, l201, l202, l203, l204, l205, l206, l207, l208, l209, l210, l211, l212, l213, l214, l215, l216, l217, l218, l219, l220, l221, l222, l223, l224, l225, l226, l227, l228, l229, l230, l231, l232, l233, l234, l235, l236, l237, l238, l239, l240, l241, l242, l243, l244, l245, l246, l247, l248, l249, l250, l251, l252, l253, l254, l255, l256, l257, l258, l259, l260, l261, l262, l263, l264, l265, l266, l267, l268, l269, l270, l271, l272, l273, l274, l275, l276, l277, l278, l279, l280, l281, l282, l283, l284, l285, l286, l287, l288, l289, l290, l291, l292, l293, l294, l295, l296, l297, l298, l299, l300, l301, l302, l303, l304, l305, l306, l307, l308, l309, l310, l311, l312, l313, l314, l315, l316, l317, l318, l319, l320, l321, l322, l323, l324, l325, l326, l327, l328, l329, l330, l331, l332, l333, l334, l335, l336, l337, l338, l339, l340, l341, l342, l343, l344, l345, l346, l347, l348, l349, l350, l351, l352, l353, l354, l355, l356, l357, l358, l359, l360, l361, l362, l363, l364, l365, l366, l367, l368, l369, l370, l371, l372, l373, l374, l375, l376, l377, l378, l379, l380, l381, l382, l383, l384, l385, l386, l387, l388, l389, l390, l391, l392, l393, l394, l395, l396, l397, l398, l399, l400, l401, l402, l403, l404, l405, l406, l407, l408, l409, l410, l411, l412, l413, l414, l415, l416, l417, l418, l419, l420, l421, l422, l423, l424, l425, l426, l427, l428, l429, l430, l431, l432, l433, l434, l435, l436, l437, l438, l439, l440, l441, l442, l443, l444, l445, l446, l447, l448, l449, l450, l451, l452, l453, l454, l455, l456, l457, l458, l459, l460, l461, l462, l463, l464, l465, l466, l467, l468, l469, l470, l471, l472, l473, l474, l475, l476, l477, l478, l479, l480, l481, l482, l483, l484, l485, l486, l487, l488, l489, l490, l491, l492, l493, l494, l495, l496, l497, l498, l499, l500, l501, l502, l503, l504, l505, l506, l507, l508, l509, l510, l511; long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12, ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24, ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36, ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48, ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60, ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72, ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84, ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96, ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107, ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117, ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127, ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137, ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147, ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157, ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167, ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177, ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187, ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197, ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207, ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217, ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227, ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237, ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247, ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257, ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267, ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277, ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287, ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297, ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307, ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317, ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327, ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337, ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347, ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357, ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367, ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377, ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387, ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397, ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407, ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417, ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427, ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437, ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447, ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457, ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467, ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477, ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487, ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497, ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507, ll508, ll509, ll510, ll511; a.m(); if (deopt) { do_load = true; while (!load_done); } } static void m2(boolean deopt, A a) { long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72, l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84, l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96, l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107, l108, l109, l110, l111, l112, l113, l114, l115, l116, l117, l118, l119, l120, l121, l122, l123, l124, l125, l126, l127, l128, l129, l130, l131, l132, l133, l134, l135, l136, l137, l138, l139, l140, l141, l142, l143, l144, l145, l146, l147, l148, l149, l150, l151, l152, l153, l154, l155, l156, l157, l158, l159, l160, l161, l162, l163, l164, l165, l166, l167, l168, l169, l170, l171, l172, l173, l174, l175, l176, l177, l178, l179, l180, l181, l182, l183, l184, l185, l186, l187, l188, l189, l190, l191, l192, l193, l194, l195, l196, l197, l198, l199, l200, l201, l202, l203, l204, l205, l206, l207, l208, l209, l210, l211, l212, l213, l214, l215, l216, l217, l218, l219, l220, l221, l222, l223, l224, l225, l226, l227, l228, l229, l230, l231, l232, l233, l234, l235, l236, l237, l238, l239, l240, l241, l242, l243, l244, l245, l246, l247, l248, l249, l250, l251, l252, l253, l254, l255, l256, l257, l258, l259, l260, l261, l262, l263, l264, l265, l266, l267, l268, l269, l270, l271, l272, l273, l274, l275, l276, l277, l278, l279, l280, l281, l282, l283, l284, l285, l286, l287, l288, l289, l290, l291, l292, l293, l294, l295, l296, l297, l298, l299, l300, l301, l302, l303, l304, l305, l306, l307, l308, l309, l310, l311, l312, l313, l314, l315, l316, l317, l318, l319, l320, l321, l322, l323, l324, l325, l326, l327, l328, l329, l330, l331, l332, l333, l334, l335, l336, l337, l338, l339, l340, l341, l342, l343, l344, l345, l346, l347, l348, l349, l350, l351, l352, l353, l354, l355, l356, l357, l358, l359, l360, l361, l362, l363, l364, l365, l366, l367, l368, l369, l370, l371, l372, l373, l374, l375, l376, l377, l378, l379, l380, l381, l382, l383, l384, l385, l386, l387, l388, l389, l390, l391, l392, l393, l394, l395, l396, l397, l398, l399, l400, l401, l402, l403, l404, l405, l406, l407, l408, l409, l410, l411, l412, l413, l414, l415, l416, l417, l418, l419, l420, l421, l422, l423, l424, l425, l426, l427, l428, l429, l430, l431, l432, l433, l434, l435, l436, l437, l438, l439, l440, l441, l442, l443, l444, l445, l446, l447, l448, l449, l450, l451, l452, l453, l454, l455, l456, l457, l458, l459, l460, l461, l462, l463, l464, l465, l466, l467, l468, l469, l470, l471, l472, l473, l474, l475, l476, l477, l478, l479, l480, l481, l482, l483, l484, l485, l486, l487, l488, l489, l490, l491, l492, l493, l494, l495, l496, l497, l498, l499, l500, l501, l502, l503, l504, l505, l506, l507, l508, l509, l510, l511; try { m2(deopt, a); } catch (StackOverflowError e) { m3(deopt, a); } } static void m3(boolean deopt, A a) { long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72, l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84, l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96, l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107, l108, l109, l110, l111, l112, l113, l114, l115, l116, l117, l118, l119, l120, l121, l122, l123, l124, l125, l126, l127, l128, l129, l130, l131, l132, l133, l134, l135, l136, l137, l138, l139, l140, l141, l142, l143, l144, l145, l146, l147, l148, l149, l150, l151, l152, l153, l154, l155, l156, l157, l158, l159, l160, l161, l162, l163, l164, l165, l166, l167, l168, l169, l170, l171, l172, l173, l174, l175, l176, l177, l178, l179, l180, l181, l182, l183, l184, l185, l186, l187, l188, l189, l190, l191, l192, l193, l194, l195, l196, l197, l198, l199, l200, l201, l202, l203, l204, l205, l206, l207, l208, l209, l210, l211, l212, l213, l214, l215, l216, l217, l218, l219, l220, l221, l222, l223, l224, l225, l226, l227, l228, l229, l230, l231, l232, l233, l234, l235, l236, l237, l238, l239, l240, l241, l242, l243, l244, l245, l246, l247, l248, l249, l250, l251, l252, l253, l254, l255, l256, l257, l258, l259, l260, l261, l262, l263, l264, l265, l266, l267, l268, l269, l270, l271, l272, l273, l274, l275, l276, l277, l278, l279, l280, l281, l282, l283, l284, l285, l286, l287, l288, l289, l290, l291, l292, l293, l294, l295, l296, l297, l298, l299, l300, l301, l302, l303, l304, l305, l306, l307, l308, l309, l310, l311, l312, l313, l314, l315, l316, l317, l318, l319, l320, l321, l322, l323, l324, l325, l326, l327, l328, l329, l330, l331, l332, l333, l334, l335, l336, l337, l338, l339, l340, l341, l342, l343, l344, l345, l346, l347, l348, l349, l350, l351, l352, l353, l354, l355, l356, l357, l358, l359, l360, l361, l362, l363, l364, l365, l366, l367, l368, l369, l370, l371, l372, l373, l374, l375, l376, l377, l378, l379, l380, l381, l382, l383, l384, l385, l386, l387, l388, l389, l390, l391, l392, l393, l394, l395, l396, l397, l398, l399, l400, l401, l402, l403, l404, l405, l406, l407, l408, l409, l410, l411, l412, l413, l414, l415, l416, l417, l418, l419, l420, l421, l422, l423, l424, l425, l426, l427, l428, l429, l430, l431, l432, l433, l434, l435, l436, l437, l438, l439, l440, l441, l442, l443, l444, l445, l446, l447, l448, l449, l450, l451, l452, l453, l454, l455, l456, l457, l458, l459, l460, l461, l462, l463, l464, l465, l466, l467, l468, l469, l470, l471, l472, l473, l474, l475, l476, l477, l478, l479, l480, l481, l482, l483, l484, l485, l486, l487, l488, l489, l490, l491, l492, l493, l494, l495, l496, l497, l498, l499, l500, l501, l502, l503, l504, l505, l506, l507, l508, l509, l510, l511; long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12, ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24, ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36, ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48, ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60, ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72, ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84, ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96, ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107, ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117, ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127, ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137, ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147, ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157, ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167, ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177, ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187, ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197, ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207, ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217, ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227, ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237, ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247, ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257, ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267, ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277, ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287, ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297, ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307, ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317, ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327, ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337, ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347, ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357, ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367, ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377, ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387, ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397, ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407, ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417, ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427, ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437, ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447, ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457, ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467, ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477, ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487, ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497, ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507, ll508, ll509, ll510, ll511; a.m(); m1(deopt, a); } // Used for synchronization betwen main thread and thread // responsible for class loading static volatile boolean thread_started = false; static volatile boolean do_load = false; static volatile boolean load_done = false; static public void main(String[] args) { // This thread does the loading of B. If m1 does it, the class // loading can cause stack overflows. Thread thread = new Thread() { public void run() { thread_started = true; while(!do_load); new B(); load_done = true; } }; thread.start(); while(!thread_started); // get m3 and m1 compiled A a = new A(); for (int i = 0; i < 5000; i++) { m3(false, a); m1(false, a); } m2(true, a); System.out.println("TEST PASSED"); } }