From b64f750231327facdfef695ffc4e46911ba6d632 Mon Sep 17 00:00:00 2001 From: Eric Bruneton Date: Sun, 1 Oct 2017 16:28:45 +0200 Subject: [PATCH 1/3] Move the test methods from ClassWriterComputeFramesUnitTest to the precompiled classes. Also move the large precompiled methods to their own classes, so that tests that don't support them (e.g. ASMifierTest because the generated code is too big) can still be tested on all instructions. Likewise, duplicate the jdk3.AllInstructions methods in jdk5.AllInstructions, so that tests that don't support jsr/ret (e.g. COMPUTE_FRAMES) can still be tested on all instructions. --- test/conform/jdk3/AllInstructions.class | Bin 41084 -> 6160 bytes test/conform/jdk3/AllInstructions.java | 501 +--------------- test/conform/jdk3/LargeMethod.class | Bin 0 -> 39299 bytes test/conform/jdk3/LargeMethod.java | 536 ++++++++++++++++++ test/conform/jdk5/AllInstructions.class | Bin 413 -> 6316 bytes test/conform/jdk5/AllInstructions.java | 241 +++++++- test/conform/jdk8/AllFrames.class | Bin 35996 -> 3935 bytes test/conform/jdk8/AllFrames.java | 419 ++------------ test/conform/jdk8/AllStructures.java | 2 +- test/conform/jdk8/LargeMethod.class | Bin 0 -> 34364 bytes test/conform/jdk8/LargeMethod.java | 400 +++++++++++++ .../asm/ClassWriterComputeFramesUnitTest.java | 175 ------ .../org/objectweb/asm/ClassWriterTest.java | 13 +- .../org/objectweb/asm/test/AsmTest.java | 6 +- .../org/objectweb/asm/test/AsmTestTest.java | 23 +- 15 files changed, 1258 insertions(+), 1058 deletions(-) create mode 100755 test/conform/jdk3/LargeMethod.class create mode 100755 test/conform/jdk3/LargeMethod.java create mode 100644 test/conform/jdk8/LargeMethod.class create mode 100644 test/conform/jdk8/LargeMethod.java delete mode 100644 test/conform/org/objectweb/asm/ClassWriterComputeFramesUnitTest.java diff --git a/test/conform/jdk3/AllInstructions.class b/test/conform/jdk3/AllInstructions.class index 44ae05b656fc7de8ebdab0058b59e2410ea3e752..79023df7cdd40f3222c227bcc076515fdfb7fa6e 100755 GIT binary patch delta 3380 zcmZ{mdvH}(8O7JRdE7^C637Dr)ye?HrJODRbpKpK-0LO@y* zu(cKJgK%0}T5RnDECpti5Nc67)z$~?)Q;mgL!DY3>qPydGgT*c>?rlO_qp6$7|l%f zS?Aon*SEfJuk-Em@7H`sW@o>7_0p?K(JY+{saS)9*=N@2s9$bKpVy-y73wj+j`{U? zP^Egp49ER?GQ@Sz3{RQiM25blr_J(b%!F^7;aT&;b7pwn3@`X~(jA|^^X8no?zWcB z=9ZqFEv=o~n#|xRwRgwP-Hs*|x|yMg70r%(eY4Fl$C0zrfVpOv$K7%R<~z!%>uBj~ zDeY|O+Fshw+Oe&zcai&O`n37JzA`hT+zb_FSisNf2+&_d3c?n$xtSr+crRZ_v(2Ow zd9ziZIhwAypm}6HAL25_RIV;n=%5zpsJ@`*v{2`%%`oBLVAd}Qd4>J>fV4iMHdj^U zgsF>3`3Yr9&NM5PTTqQB8dNs`L^W_V2-TnlP^v|ZAoTOB2}JIowIIJm&7gq7&P1)# zdU7jpGPD5{LjI@P2+AOde;|H6iB)Pun?RX_e^;~AWMvB z_9h$IpJByJs=JuV)}eC~Ro#Wk`>E*(D*9b&`nnonZPM@2_mP^D5)Z;)tRp7~&k~z$ z(C(4RF$kaCRZs&cFkl}x0z(!xfx;H81!Y;(3>t^DPi*2j2>j3{o{P-i*~Ie@`?gIy zpHM%tiBDiWXA_@D;#;iYFrIS-NhaBmsX4jFPPmh^{}eYx6+r|^77K4;VWBo-gFEo_ z7BX$ocC~81+H_c3bxhlIQti6H(@WZ+x3p95sAH@SRKJ=Un!ge1P-|T~f;i8$Bh;bR z>_5LY3;-z(un}YoJVL-)YyJ@mTx$%#vu02Lc~{~FxQVcy0SfhM+yLclk7s}tde+t< z6Rx8P1GJKWeF2>hh*<#d=nQxBxR2vC@O-eB0_~&BU!lPJDec|pz6Y|e;)8yCFo4Mq zn3koBbd#UzUWDAI_w@Co{71>Z9(n?hf4zNIN8zcrsg9C=y-jcwAJkhPFtHJc4?s;I zd;nSt!Uv#cknzDt!Uyjrd~iA8gI5whIBoMcJ~*E6!B#fTYd|LdOn6sJ9xPA$oI5;z zS-b`jE8!47AI3P}B>02M)k75PVSQGQXo`+#ss=eWkJ@}UF$)^^UH(o?#b7j-IU^>jV0B0ZBNb5+8YtL(NInXBx!q`FMC&)U3=t@jklCR-dW!k{@r~nH+G%q^Q<3&_JVTg`~{eOie6@4zE7Kd zg_GeD3H$&VKTN7`6z(o7I*RCSD>{nkyR7Iavv*n1QAGD3TBvH&Zu{0p)ij`9`&LA$ z?;gCd6vH=z0uXV!$EB`;j8jD8BNsHQE^=Na!`~iILC6o2Jer_;3v?$ZdFe3 z7RHa%G&W~1LCiV6kJsHvw`X&^+m|G{#AaOny zko|H^WT0%=;9i>s({l z?9Rw9y^i6xbgB1n;rndOAF%u%lNhEa82BWLYp8P%P%=3R0)b17>L z&(vBcj<__fmBOBs=is#q7Pyr>21$GE+H z_zyn2%6tE5Qu-N*8uGac$8z{x_pJ#lTasMl_>}6TY8>93>;zQgge*hEz5vCE+>5On g_?D(`AI4ceUWrL`_XkP&A$ZO1KFt3kV4sfs7h44GBLDyZ literal 41084 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 A`~Uy| diff --git a/test/conform/jdk3/AllInstructions.java b/test/conform/jdk3/AllInstructions.java index 539d96afb..ed3cae942 100755 --- a/test/conform/jdk3/AllInstructions.java +++ b/test/conform/jdk3/AllInstructions.java @@ -29,7 +29,8 @@ package jdk3; /** * Class which, compiled with the JDK 1.3.0, produces all the JVM instructions from that version, in - * particular jsr and ret (except nop and swap). Must be compiled with "javac -g". + * particular jsr and ret (except nop and swap; wide instructions are included in LargeMethod). Must + * be compiled with "javac -g". */ class AllInstructions { private int f; @@ -264,502 +265,4 @@ class AllInstructions { } return u0; } - - public AllInstructions wideInstructions( - int v0, - long v1, - long v2, - long v3, - long v4, - long v5, - long v6, - long v7, - long v8, - long v9, - long v10, - long v11, - long v12, - long v13, - long v14, - long v15, - long v16, - long v17, - long v18, - long v19, - long v20, - long v21, - long v22, - long v23, - long v24, - long v25, - long v26, - long v27, - long v28, - long v29, - long v30, - long v31, - long v32, - long v33, - long v34, - long v35, - long v36, - long v37, - long v38, - long v39, - long v40, - long v41, - long v42, - long v43, - long v44, - long v45, - long v46, - long v47, - long v48, - long v49, - long v50, - long v51, - long v52, - long v53, - long v54, - long v55, - long v56, - long v57, - long v58, - long v59, - long v60, - long v61, - long v62, - long v63, - long v64, - long v65, - long v66, - long v67, - long v68, - long v69, - long v70, - long v71, - long v72, - long v73, - long v74, - long v75, - long v76, - long v77, - long v78, - long v79, - long v80, - long v81, - long v82, - long v83, - long v84, - long v85, - long v86, - long v87, - long v88, - long v89, - long v90, - long v91, - long v92, - long v93, - long v94, - long v95, - long v96, - long v97, - long v98, - long v99, - long v100, - long v101, - long v102, - long v103, - long v104, - long v105, - long v106, - long v107, - long v108, - long v109, - long v110, - long v111, - long v112, - long v113, - long v114, - long v115, - long v116, - long v117, - long v118, - long v119, - long v120, - long v121, - long v122, - long v123, - int v124, - float v125, - long v126, - double v127, - Object v128) { - int[] u0 = { - 70001, 70002, 70003, 70004, 70005, 70006, 70007, 70008, 70009, 70010, 70011, 70012, 70013, - 70014, 70015, 70016, 70017, 70018, 70019, 70020, 70021, 70022, 70023, 70024, 70025, 70026, - 70027, 70028, 70029, 70030, 70031, 70032, 70033, 70034, 70035, 70036, 70037, 70038, 70039, - 70040, 70041, 70042, 70043, 70044, 70045, 70046, 70047, 70048, 70049, 70050, 70051, 70052, - 70053, 70054, 70055, 70056, 70057, 70058, 70059, 70060, 70061, 70062, 70063, 70064, 70065, - 70066, 70067, 70068, 70069, 70070, 70071, 70072, 70073, 70074, 70075, 70076, 70077, 70078, - 70079, 70080, 70081, 70082, 70083, 70084, 70085, 70086, 70087, 70088, 70089, 70090, 70091, - 70092, 70093, 70094, 70095, 70096, 70097, 70098, 70099, 70100, 70101, 70102, 70103, 70104, - 70105, 70106, 70107, 70108, 70109, 70110, 70111, 70112, 70113, 70114, 70115, 70116, 70117, - 70118, 70119, 70120, 70121, 70122, 70123, 70124, 70125, 70126, 70127, 70128, 70129, 70130, - 70131, 70132, 70133, 70134, 70135, 70136, 70137, 70138, 70139, 70140, 70141, 70142, 70143, - 70144, 70145, 70146, 70147, 70148, 70149, 70150, 70151, 70152, 70153, 70154, 70155, 70156, - 70157, 70158, 70159, 70160, 70161, 70162, 70163, 70164, 70165, 70166, 70167, 70168, 70169, - 70170, 70171, 70172, 70173, 70174, 70175, 70176, 70177, 70178, 70179, 70180, 70181, 70182, - 70183, 70184, 70185, 70186, 70187, 70188, 70189, 70190, 70191, 70192, 70193, 70194, 70195, - 70196, 70197, 70198, 70199, 70200, 70201, 70202, 70203, 70204, 70205, 70206, 70207, 70208, - 70209, 70210, 70211, 70212, 70213, 70214, 70215, 70216, 70217, 70218, 70219, 70220, 70221, - 70222, 70223, 70224, 70225, 70226, 70227, 70228, 70229, 70230, 70231, 70232, 70233, 70234, - 70235, 70236, 70237, 70238, 70239, 70240, 70241, 70242, 70243, 70244, 70245, 70246, 70247, - 70248, 70249, 70250, 70251, 70252, 70253, 70254, 70255 - }; - int u124 = v124 < 0 ? -v124 : v124; - float u125 = v125 < 0f ? -v125 : v125; - long u126 = v126 < 0L ? -v126 : v126; - double u127 = v127 < 0d ? -v127 : v127; - String u128 = v128 == null ? null : v128.toString(); - try { - for (int i = 0; i < v0; ++i) { - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - } - } catch (Throwable t) { - return null; - } finally { - u0 = null; - } - return new AllInstructions(u124 + u0[f % u0.length], u125, u126, u127, u128); - } } diff --git a/test/conform/jdk3/LargeMethod.class b/test/conform/jdk3/LargeMethod.class new file mode 100755 index 0000000000000000000000000000000000000000..d2547710c452a0871265aba72132ee151ee9e55c GIT binary patch literal 39299 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 KI|cLn*?$4JNL)Yw literal 0 HcmV?d00001 diff --git a/test/conform/jdk3/LargeMethod.java b/test/conform/jdk3/LargeMethod.java new file mode 100755 index 000000000..0cadabf7b --- /dev/null +++ b/test/conform/jdk3/LargeMethod.java @@ -0,0 +1,536 @@ +// ASM: a very small and fast Java bytecode manipulation framework +// Copyright (c) 2000-2011 INRIA, France Telecom +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. Neither the name of the copyright holders nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +// THE POSSIBILITY OF SUCH DAMAGE. +package jdk3; + +/** + * Class which, compiled with the JDK 1.3.0, produces all the "wide" JVM instructions (e.g. goto_w, + * jsr_w, etc). Must be compiled with "javac -g". + */ +public class LargeMethod { + private int f; + + LargeMethod(int v0, float v1, long v2, double v3, Object v4) {} + + public LargeMethod wideInstructions( + int v0, + long v1, + long v2, + long v3, + long v4, + long v5, + long v6, + long v7, + long v8, + long v9, + long v10, + long v11, + long v12, + long v13, + long v14, + long v15, + long v16, + long v17, + long v18, + long v19, + long v20, + long v21, + long v22, + long v23, + long v24, + long v25, + long v26, + long v27, + long v28, + long v29, + long v30, + long v31, + long v32, + long v33, + long v34, + long v35, + long v36, + long v37, + long v38, + long v39, + long v40, + long v41, + long v42, + long v43, + long v44, + long v45, + long v46, + long v47, + long v48, + long v49, + long v50, + long v51, + long v52, + long v53, + long v54, + long v55, + long v56, + long v57, + long v58, + long v59, + long v60, + long v61, + long v62, + long v63, + long v64, + long v65, + long v66, + long v67, + long v68, + long v69, + long v70, + long v71, + long v72, + long v73, + long v74, + long v75, + long v76, + long v77, + long v78, + long v79, + long v80, + long v81, + long v82, + long v83, + long v84, + long v85, + long v86, + long v87, + long v88, + long v89, + long v90, + long v91, + long v92, + long v93, + long v94, + long v95, + long v96, + long v97, + long v98, + long v99, + long v100, + long v101, + long v102, + long v103, + long v104, + long v105, + long v106, + long v107, + long v108, + long v109, + long v110, + long v111, + long v112, + long v113, + long v114, + long v115, + long v116, + long v117, + long v118, + long v119, + long v120, + long v121, + long v122, + long v123, + int v124, + float v125, + long v126, + double v127, + Object v128) { + int[] u0 = { + 70001, 70002, 70003, 70004, 70005, 70006, 70007, 70008, 70009, 70010, 70011, 70012, 70013, + 70014, 70015, 70016, 70017, 70018, 70019, 70020, 70021, 70022, 70023, 70024, 70025, 70026, + 70027, 70028, 70029, 70030, 70031, 70032, 70033, 70034, 70035, 70036, 70037, 70038, 70039, + 70040, 70041, 70042, 70043, 70044, 70045, 70046, 70047, 70048, 70049, 70050, 70051, 70052, + 70053, 70054, 70055, 70056, 70057, 70058, 70059, 70060, 70061, 70062, 70063, 70064, 70065, + 70066, 70067, 70068, 70069, 70070, 70071, 70072, 70073, 70074, 70075, 70076, 70077, 70078, + 70079, 70080, 70081, 70082, 70083, 70084, 70085, 70086, 70087, 70088, 70089, 70090, 70091, + 70092, 70093, 70094, 70095, 70096, 70097, 70098, 70099, 70100, 70101, 70102, 70103, 70104, + 70105, 70106, 70107, 70108, 70109, 70110, 70111, 70112, 70113, 70114, 70115, 70116, 70117, + 70118, 70119, 70120, 70121, 70122, 70123, 70124, 70125, 70126, 70127, 70128, 70129, 70130, + 70131, 70132, 70133, 70134, 70135, 70136, 70137, 70138, 70139, 70140, 70141, 70142, 70143, + 70144, 70145, 70146, 70147, 70148, 70149, 70150, 70151, 70152, 70153, 70154, 70155, 70156, + 70157, 70158, 70159, 70160, 70161, 70162, 70163, 70164, 70165, 70166, 70167, 70168, 70169, + 70170, 70171, 70172, 70173, 70174, 70175, 70176, 70177, 70178, 70179, 70180, 70181, 70182, + 70183, 70184, 70185, 70186, 70187, 70188, 70189, 70190, 70191, 70192, 70193, 70194, 70195, + 70196, 70197, 70198, 70199, 70200, 70201, 70202, 70203, 70204, 70205, 70206, 70207, 70208, + 70209, 70210, 70211, 70212, 70213, 70214, 70215, 70216, 70217, 70218, 70219, 70220, 70221, + 70222, 70223, 70224, 70225, 70226, 70227, 70228, 70229, 70230, 70231, 70232, 70233, 70234, + 70235, 70236, 70237, 70238, 70239, 70240, 70241, 70242, 70243, 70244, 70245, 70246, 70247, + 70248, 70249, 70250, 70251, 70252, 70253, 70254, 70255 + }; + int u124 = v124 < 0 ? -v124 : v124; + float u125 = v125 < 0f ? -v125 : v125; + long u126 = v126 < 0L ? -v126 : v126; + double u127 = v127 < 0d ? -v127 : v127; + String u128 = v128 == null ? null : v128.toString(); + try { + for (int i = 0; i < v0; ++i) { + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + f = + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + + f + f + f + f + f + f + f + f; + } + } catch (Throwable t) { + return null; + } finally { + u0 = null; + } + return new LargeMethod(u124 + u0[f % u0.length], u125, u126, u127, u128); + } +} diff --git a/test/conform/jdk5/AllInstructions.class b/test/conform/jdk5/AllInstructions.class index 3b0c1d2233727c93ccbf1b76f45db2b5ac3a3abd..e87185fb5b0d25f716c3866141fd2d7e8be98db8 100755 GIT binary patch literal 6316 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 QO}nVqa5fqvW*Hd&0P$x{O#lD@ diff --git a/test/conform/jdk5/AllInstructions.java b/test/conform/jdk5/AllInstructions.java index d6040b3eb..5dbbf90f0 100755 --- a/test/conform/jdk5/AllInstructions.java +++ b/test/conform/jdk5/AllInstructions.java @@ -29,12 +29,249 @@ package jdk5; /** * Class which, compiled with the JDK 1.5.0, produces the new JVM instructions from that version - * (compared to JDK 1.3.0). Must be compiled with "javac -g". + * (compared to JDK 1.3.0). Also contain all the other instructions that can be used in JDK 1.5 + * classes (which excludes jsr and ret), so that ASM classes which don't support jsr or ret (and + * therefore can't be tested with jdk3.AllIsntructions) can still be tested on all instructions. + * Must be compiled with "javac -g". */ class AllInstructions { - Class c; + private Class c; + private int f; + private long g; + private AllInstructions field; + private static AllInstructions staticField; + AllInstructions() {} + + AllInstructions(int v0, float v1, long v2, double v3, Object v4) {} + + // New instruction in JDK 1.5. public void ldcWithClassConstant() { c = AllInstructions.class; } + + public static int intInstructions( + int v0, int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8) { + boolean b0 = v0 < -1; + boolean b1 = v1 > 1; + boolean b2 = v2 <= 2; + boolean b3 = v3 >= 3; + boolean b4 = v4 == 4; + boolean b5 = v5 != 5; + v0 = b0 ? (v6 + 5) : (v6 - 5); + v1 = b1 ? (v7 * 100) : (v7 / 100); + v2 = b2 ? (v8 % 10000) : (~v8); + v3 = b3 ? (v0 & 1000000) : (v0 | 1000000); + v4 = b4 ? (v1 ^ v2) : (v1 << v2); + v5 = b5 ? (v2 >> v3) : (v2 >>> v3); + v6 += 1; + v7 = v6 < 0 ? -v6 : v6; + v1 = v0 < 0 ? v1 : v2; + v2 = v1 > 0 ? v2 : v3; + v3 = v2 <= 0 ? v3 : v4; + v4 = v3 >= 0 ? v4 : v5; + v5 = v4 == 0 ? v5 : v6; + v6 = v5 != 0 ? v6 : v7; + return v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; + } + + public static long longInstructions( + long v0, long v1, long v2, long v3, long v4, long v5, long v6, long v7, long v8) { + boolean b0 = v0 < -1L; + boolean b1 = v1 > 1L; + boolean b2 = v2 <= 2L; + boolean b3 = v3 >= 3L; + boolean b4 = v4 == 4L; + boolean b5 = v5 != 5L; + v0 = b0 ? (v6 + 5L) : (v6 - 5L); + v1 = b1 ? (v7 * 100L) : (v7 / 100L); + v2 = b2 ? (v8 % 10000L) : (~v8); + v3 = b3 ? (v0 & 1000000L) : (v0 | 1000000L); + v4 = b4 ? (v1 ^ v2) : (v1 << v2); + v5 = b5 ? (v2 >> v3) : (v2 >>> v3); + v6 += 1L; + v7 = v6 < 0L ? -v6 : v6; + return v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; + } + + public static float floatInstructions( + float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8) { + boolean b0 = v0 < -1f; + boolean b1 = v1 > 1f; + boolean b2 = v2 <= 2f; + boolean b3 = v3 >= 3f; + boolean b4 = v4 == 4f; + boolean b5 = v5 != 5f; + v0 = b0 ? (v6 + 5f) : (v6 - 5f); + v1 = b1 ? (v7 * 100f) : (v7 / 100f); + v2 = b2 ? (v8 % 10000f) : v8; + v3 = b3 ? -v3 : v3; + v4 = b4 ? -v4 : v4; + v5 = b5 ? -v5 : v5; + v6 += 1f; + v7 = v6 < 0f ? -v6 : v6; + v8 = v7; + return v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; + } + + public static double doubleInstructions( + double v0, + double v1, + double v2, + double v3, + double v4, + double v5, + double v6, + double v7, + double v8) { + boolean b0 = v0 < -1d; + boolean b1 = v1 > 1d; + boolean b2 = v2 <= 2d; + boolean b3 = v3 >= 3d; + boolean b4 = v4 == 4d; + boolean b5 = v5 != 5d; + v0 = b0 ? (v6 + 5d) : (v6 - 5d); + v1 = b1 ? (v7 * 100d) : (v7 / 100d); + v2 = b2 ? (v8 % 10000d) : v8; + v3 = b3 ? -v3 : v3; + v4 = b4 ? -v4 : v4; + v5 = b5 ? -v5 : v5; + v6 += 1d; + v7 = v6 < 0d ? -v6 : v6; + return v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; + } + + public static double castInstructions(int v0, long v1, long v2) { + byte v3 = (byte) v0; + char v4 = (char) v1; + short v5 = (short) v2; + long v6 = (long) v3; + float v7 = (float) v4; + double v8 = (double) v5; + v1 = v6; + v2 = v1; + v6 = (long) v8; + return v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; + } + + public static float castInstructions(float v0, double v1, double v2) { + byte v3 = (byte) v0; + char v4 = (char) v1; + short v5 = (short) v2; + long v6 = (long) v3; + float v7 = (float) v4; + double v8 = (double) v5; + v1 = v6; + v2 = v1; + v6 = (long) v7; + return (float) (v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8); + } + + public static Object objectInstructions(Object v0, Object v1, Object v2, Object v3, Object v4) { + boolean b0 = v0 == v1; + boolean b1 = v1 != v2; + boolean b2 = v2 == null; + boolean b3 = v3 != null; + boolean b4 = v4 instanceof String; + v0 = b0 ? null : v0; + v1 = b1 ? v1 : v0; + v2 = b2 ? v2 : v1; + v3 = b3 ? v3 : v2; + v4 = b4 ? new Integer(((String) v4).length()) : v3; + return v4; + } + + public static Object[] arrayInstructions( + byte[] v0, char[] v1, short[] v2, int[] v3, long[] v4, float[] v5, double[] v6, Object[] v7) { + v0[1] = v0[0]; + v1[1] = v1[0]; + v2[1] = v2[0]; + v3[1] = v3[0]; + v4[1] = v4[0]; + v5[1] = v5[0]; + v6[1] = v6[0]; + v7[1] = v7[0]; + Object[] v8 = new Object[v7.length]; + v8[0] = new int[4][8][16]; + return v8; + } + + public void fieldInstructions() { + AllInstructions c = field; + field = staticField; + staticField = c; + } + + public void methodInstructions(Runnable v0) { + AllInstructions c = new AllInstructions(); + c.fieldInstructions(); + monitorInstructions(c); + v0.run(); + } + + public static int lookupSwitchInstruction(int v0) { + switch (v0) { + case 1000: + return 1; + case 10000: + return 2; + case 100000: + return 3; + default: + return -1; + } + } + + public static int tableSwitchInstruction(int v0) { + switch (v0) { + case 0: + return 1; + case 1: + return 2; + case 2: + return 3; + default: + return -1; + } + } + + public static String monitorInstructions(Object v0) { + synchronized (v0) { + return v0.toString(); + } + } + + public int dupX1Instruction() { + return f++; + } + + public long dup2X1Instruction() { + return g++; + } + + public void dupX2Instruction(int[] v0, int[] v1) { + v0[0] = v1[0] = 0; + } + + public void dup2X2Instruction(long[] v0, long[] v1) { + v0[0] = v1[0] = 0; + } + + public void popInstructions() { + dupX1Instruction(); + dup2X1Instruction(); + } + + // With JDK1.5, this code no longer produces jsr or ret instructions. + public int jsrAndRetInstructions(int v0) throws Exception { + int u0 = v0 + 1; + try { + u0 = jsrAndRetInstructions(u0); + } catch (Throwable t) { + return -1; + } finally { + u0++; + } + return u0; + } } diff --git a/test/conform/jdk8/AllFrames.class b/test/conform/jdk8/AllFrames.class index 5942f5acbde77679d0638c3eedbec756b2e99996..8e11473733a567d525c78c15e2fd58dbdb61f4ba 100644 GIT binary patch literal 3935 zcma)7TXP)675;j5W=DIGcD1@#_FBd=7fWk`Eg573!hmEiURjc5|dE@q7$6mZfvru+oOrIEQOCifvez;f9UNal}!QZqvq;XoTFu@x^eXU%4Tu3{wNo=!wYlu zTB*7r3+rqJh3HtRTB@H?I6T<8KQQBM9GX`!C$`p#3aP15wK#LNvQn&FbXLlo$xLmn zI^}t%R+4vb(yU)D(TVib=Gv8$N1rU0^EIbZ+@=fZ>0>WA(Ehe z%Qnuo$~M6^$5vv?vz6H<+1A)jGhbw0!Ke%?Sc8Rvc6U=IM)btukl0o^u5Z;H?lmgM zC9ZZClvOG!LAlBiN(p*BYa&L zm4{o<{l!RSn5401jO-a0dq%;Y{FkA6~8uU(~?weFO+i?TYvJz>2lAc>=(U!6NLFI4Nrjbcr9oK4~tyh>H>tmeyG zPF>bsOX79>E{Wgc4F(-z%sYXUcZKHlUd~3AmZ*!aAjv!7E-g_f=^a3Kh2bpeUEQG* z{cRRk<^34^YL|werJVBwy%lZc@};* zZ34n_gT(-Eps6u*$pMhfq_GOTi{b{Q@I;Zxg(#$$ld=rBA;=} zz}@UKFxd~XA3_W{bl?c?;mkpI8}7w@eB%KcPU(>V8aT{x%;2A@s!MVydePQ^NgAS``c6c($*6W9>6&|N3hZHl?SK-L zNE^U^f-_Q?FujR@3oZ-Pzw3g!o1cUv?PtirP%ist*d{%Q?CNEVLap%1;oxWiXkFyDnqihG*PO?41CMr{m@o_J`Wxk20iT$Hy z_5(z-^|2joxx}1dczL@16zM2vVsbjngilOD2P`T{;0cBQqXyFJ(0~W-|jbd$Mt3jKS#cwXJpItZ$(Gw-UfL;n!J}O$%+N_BMn73 ztb56cVvf&xo_^waI(tViZWlv#c}z<2=bOvBG2Lvr>e|3TT&5aI%-3eX=ULz9*?`Y` zVf-7Dx)gYMNnz+daCt}^G3s>Ei{ldWB-uN(?>aI!5nnKGfR{w_4-ItOMEgSW20Fe# z>Pw`Xud}N5#=XuC>D)tS+=9_H>0aCZeR&R39^O+#6TCF>;^sGqH+WrrgZAdrw*#lA z1EATKZOeLO>UTm_xuQ_k<^`AO6KJ35U9^~XWRXvTOkfYBYsXg_0PHjHtB zmEvMt@G$lfBPB<78Q-G2;o|kkxEbly0MfoNQkpkccNl4owdf+{J+@LrikV;Y%d#t3 zZv>7{g^!PutjEH~|MLF}B(qx}e+(eqIgoij5Gfl;OQ#=*&Pi8GPTmOsxZh@1Rm^*w zIcW;zk{?RJ1IQ3Sbk*x+y%piz0752AR)Ppkxp>A$c-pI!Y*W_TO_9K!$S!IBQvfO( zhDsM&pcb&`rTro=Dq*XiP-*}8K9(e32)5V!7Jbbcdp`iy9|r5>mCzR!!IGbvNiVK0 zg0bY?8=!$G<<<=GVF02l43QddNzSuA#5oT_iZTGPtCl|wU^EqFs#(hlzamQpp8Fp& CF(DNI literal 35996 zcmeHK-A|j>8ULNver;?VJ{)YICRy1MFoq@s8j_|oO$>2k!skfRg1e0uFa%H^SI3FgphE z$xUz9J6ZC!*H6wYZx&Z7uk*vLr$5YB${XA3@?njXHwcYxY;RP~8}z219luXf8`yW< zAUL+OS~O^$+}JKo-`-j-malrtB}(FxJ1bu4x>w$i_nI(Rxv@bbS|&GFZ=OAQu~f>H zy{+Ocn$R*;tlZdHo%KXeDVEtQm|heOW|_2TaA>~bt=ydQ-m`Osu}OPZ%0;h2Wykj0 z``Ef?l{j0221nA1*|GV2Zeo0&N3|IBF$m@dq%3KLG)9^yNmz5F5@~|8N*ZSZY`~qZ zQwDB2pSR}HE@x}V3KsjM?>70$PQ~L`XKPse%8MRn>s6npkBud-yk7J}U@+rbIFWmf zg@wgJwlG$hFXRgogQvV6e!_90kUVtjtuPt7K)q0;54zW-Tz7 zWM%HcxMiu~@N=ADQ5!_(cW#$gin$FbtfqR|oRAui;V^E-a0pE?G^2$ft(0%Go4e+f zZWZNg8^=6dZw6dc-^90KXhocQpRAR7U|5k)q<(cgCGv}mmZ$r!qnpbw#^o9y(Ga!} zTkMk>_>6#R&;|zyzAf-6eVa26VKV&>;A93KAnakLom>FBoR!w!PWLqY%Lj%7CR!%>z$3iMdTiOp6Rv3Ud!y| zvDb?2^{fB0zS~;AhNx(&hi|$TK9L>6aU0xe^q|+Kb(&tLZQ`fV#}aVu*j8i^vRpp~ zSZ6Z!6`WvLg_HC*+PJ)l&{P;FB@|IUjr=*mKp2B?6#&b;s^=PP$b*+AvyvhZg;}{ ziEHk7*@T<=<=#K;p(Ap}?M}MyM!hqxmrc5KtR9EILC!Tmo#I<7 zf?pyMH2+5Hf8Yf9c)W;5_*GVr!CC6{SI`G`Jdk6o$5N@K7yU-R^81sr^)q#m@y@a| z$1sjd)QVwM>cSF3cC~D3HUoE;%ub&FeKwKdD(d`;}I_$cNO@s4Tz7XjMZ= zKU==d6U3J*xPVE_U}~Suvvr$i_u1SD=bxCcOM!qT3&Xbi0K@lV6mR%`y#J7Xb^z5m zznYSvyC0$95d|%o%x@4CTGB>ipmm_jK%qd9P?1oPP?1oPP?1oP@avC+4|v0oO4e%D zYX16HvsSTIu~xC3PW5!ENT^7tNT^7tNNABzuQ|FQ=!T#hf^G=9At(|m5-JiZ5-JiZ z5*{!l)N78G^Z_erO{gYRPiuNw)6<$Fp(3Fop(3FoprX{Ia<;OtfV!enovEh>1j<*Yl?)5go=cUgo=cE&C$I;_X6Du zbT81oK#@?9P?1oPP?1oP@PHwqUURgh4_HZSLN%d!TGP{-p4Joz6$upy6$upydChsW zxA&vJcD4n~{38He=Mv^z(!O>k@1JY;x%S_Gits{bn*e8L+h^|$nTH77M-ZrXReR8A zpTlf>s{K`Y4p&dh69FXIPUA4!t7yfw*uQYA^Dp?I=MVT~_+$L}!d?7r>W3z>xNLgY z^X5`z(5zIu%$;ht`DwMsykAY5A6NVNKFH@VpKq9-p`EjRj<#x=n$P1+B&cx?9q6Q7 zxC=M}W4Vhs4##p?^wJvnI)=2hd=BG?!?m(Y7(mE!Ib_gaxwmiv5zAdhll5^9c}yT? zWmhnXLzbJOe@&K~!7Q3BH-~Sd#d7o3Z_#@V*QrmqxABfdgxmra(T1ZmyM_8&zNkj? zVH74w5xhicK2B$Vi=-@Rj5JQVM9PugB3&lsNmocyq#4p2X`XbA^fqaMWbiIq2jBT0 DR|Lwl diff --git a/test/conform/jdk8/AllFrames.java b/test/conform/jdk8/AllFrames.java index fbeb2b6c4..179facaff 100755 --- a/test/conform/jdk8/AllFrames.java +++ b/test/conform/jdk8/AllFrames.java @@ -28,7 +28,7 @@ package jdk8; /** - * Class which, compiled with the JDK 1.5.0, produces all the stack map frame types. Must be + * Class which, compiled with the JDK 1.8.0, produces all the stack map frame types. Must be * compiled with "javac -g -parameters". */ public class AllFrames { @@ -105,364 +105,63 @@ public class AllFrames { s = i == 0 ? "true" : "false"; } - // Frames in methods larger than 32K. - public AllFrames largeMethod( - boolean v0, - byte v1, - char v2, - short v3, - int v4, - long v5, - float v6, - double v7, - Object v8, - boolean[] v9, - byte[] v10, - char[] v11, - short[] v12, - int[] v13, - long[] v14, - float[] v15, - double[] v16, - Object[] v17) { - try { - while (v4++ < v5) { - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - f = - f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f + f - + f + f + f + f + f + f + f + f; - } - } catch (Throwable t) { - return null; - } finally { - v17[0] = null; - } - return new AllFrames(v17[f % v17.length], null); + // Frame merges: two non-array objects. + public static Number m5(boolean b) { + return b ? new Integer(1) : new Float(1); + } + + // Frame merges: two single-dimensional arrays with object type elements. + public static Number[] m6(boolean b) { + return b ? new Integer[1] : new Float[1]; + } + + // Frame merges: two bi-dimensional arrays with object type elements. + public static Number[][] m7(boolean b) { + return b ? new Integer[1][1] : new Float[1][1]; + } + + // Frame merges: two bi-dimensional arrays with primitive type elements. + public static Object[] m8(boolean b) { + return b ? (Object[]) new byte[1][1] : (Object[]) new short[1][1]; + } + + // Frame merges: two single-dimensional arrays with mixed primitive / object type elements. + public static Object m9(boolean b) { + return b ? new byte[1] : new Float[1]; + } + + // Frame merges: two bi-dimensional arrays with mixed primitive / object type elements. + public static Object[] m10(boolean b) { + return b ? (Object[]) new byte[1][1] : (Object[]) new Float[1][1]; + } + + // Frame merges: one and two dimensions arrays with identical element type. + public static Object m11(boolean b) { + return b ? new byte[1] : new byte[1][1]; + } + + // Frame merges: one and two dimensions arrays with mixed primitive / object type elements. + public static Object[] m12(boolean b) { + return b ? new Object[1] : new byte[1][1]; + } + + // Frame merges: two and three dimensions arrays with primitive type elements. + public static Object[] m13(boolean b) { + return b ? (Object[]) new byte[1][1] : (Object[]) new byte[1][1][1]; + } + + // Frame merges: three and four dimensions arrays with primitive type elements. + public static Object[][] m14(boolean b) { + return b ? (Object[][]) new byte[1][1][1] : (Object[][]) new byte[1][1][1][1]; + } + + // Frame merges: object type and single-dimensional array with primitive type elements. + public static Object m15(boolean b) { + return b ? new Integer(1) : new byte[1]; + } + + // Frame merges: object type and single-dimensional array with object type elements. + public static Object m16(boolean b) { + return b ? new Integer(1) : new Float[1]; } } diff --git a/test/conform/jdk8/AllStructures.java b/test/conform/jdk8/AllStructures.java index 79a7d4fb7..e59911d6e 100755 --- a/test/conform/jdk8/AllStructures.java +++ b/test/conform/jdk8/AllStructures.java @@ -56,7 +56,7 @@ import java.util.List; import java.util.Map; /** - * Class which, compiled with the JDK 1.5.0, produces the new class file structures from that + * Class which, compiled with the JDK 1.8.0, produces the new class file structures from that * version (compared to JDK 1.3.0). Must be compiled with "javac -g -parameters". */ @VTA(v = 0) diff --git a/test/conform/jdk8/LargeMethod.class b/test/conform/jdk8/LargeMethod.class new file mode 100644 index 0000000000000000000000000000000000000000..bace5c0c89e266996756026bd8e449a3d657d4d4 GIT binary patch literal 34364 zcmeH~O>Y}j6o%hB@kc%zH*u1hrnD)o>m;=KaMFCWp~S(GBd1`wibQ4slf)!W)3`Ej zSRf$=!2$%Vx?{x;Kq^vEB#?^KMHTf=uwcbMKtiItcO0cr=^v=|F3z2I?wvXJj?eLP z?tS|2ua5vsAlr%v-fBSzH==kuiiK9nOcaX-<|A6pAabp|TdvI;TuSA)y*+Pa$J^Z; zd3SBQv|gJ#)>Eui%e$L%gDVE1Ol6~F(3vmqmTum=vsS9!^450P)0MBRdpj#$wQTPX zJ43at^2c^;d*k->NZzY%mX=Gkt;)t67f=ZXUYwQ#^*4?N4re!r)!%*3t9o}zwNjPO zwe39jX;4V5E@X+$A^bF1r7JWbmcStQqtid-m2=wepGm zM1F#^H_GL%S}{hkV8u8^#)>pW(TWM%O!98YimMb^E2bzI3ukZIHZyEodTQDmqff`B zFG_lKTzaFVU&p0CN_uu&hL6(vcIlUrGdM0iQ*sW+rEf~k(*2T8HRveTy!G45-rXQn z%n*atV&z_Sy_7B6c*c%J>xxZ|cC_G~c0|!km(R21==b0&FGktE(rWvUVp$IcSC$%F z!2lC7!dx{px@GH7^A%p(c$eW_6R+W+eVCtv;dZu>;DsbQsL$0OzzKBnj*lXSlfifx zUFfExID1!%p(p%h*nHI+x&H&257-eK8hQxF+J|cN8z>L- zHxLR$LXl7;6bVH_kx(Rj^-1^(PdGM{mCefLS3jGT#mZu3v3950or;7ap-3naii80P zb<9ygP(e^ZP(e^Z5D7&>kx(QQ2}QyNBcYBtO6dkmX$4dP)ox9@HSN|!LXl7;6bVH_ z9dlF*R0~uKR0~uKL_(2JBoqlnLXoh+NT_3uQo6xXS^-r+wOi9}O}jObP$U!yMM9BK z#~jrH)dJN5)dJN5kx(QQ2}MGYP$X96bVH_kx(Sm zF-NsPwLrB%wLrB%BoqlnLXl7;6bT!QggWLZr5h}z6;K6KyEX0Bv|AGiMM9BKBoqmG z%sF`W?6bcT@g`F|0MI|%V`h7U+eGh!*}l5!`~5eB-cQ6WI1}+lcgM{>!VeGv{C+=) zrr?@poAif$drkY3_R5iVwl~qu_Bu{tzWr}}koW_iC!gTQ^iOzv<39de{?vq4*UZJu zoXOTk&8FXPzV!#pcYe}*?WfE){xI)Hc}??r-F%M@dV7kvpF$h@a0)$~v49ikWWQAj zyap4f)98m2s55vySZ4ueaV}VS0Rw18I2b*THxLQb1zcpW^^(LTv;-=}mA3_I5JUEh zI690s?K-F~;|k}tY6PQp4OC+oM=VfjOz>^nH;Jq03e*&)?JvT<8O$P%IW9ZK`D6e1 zt+^ Date: Sun, 1 Oct 2017 16:40:17 +0200 Subject: [PATCH 2/3] Fix typos. --- test/conform/org/objectweb/asm/ClassWriterTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/conform/org/objectweb/asm/ClassWriterTest.java b/test/conform/org/objectweb/asm/ClassWriterTest.java index 2a62b1fb9..3e44dce4a 100644 --- a/test/conform/org/objectweb/asm/ClassWriterTest.java +++ b/test/conform/org/objectweb/asm/ClassWriterTest.java @@ -125,7 +125,7 @@ public class ClassWriterTest extends AsmTest { byte[] classFile = classParameter.getBytes(); ClassReader classReader = new ClassReader(classFile); ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); - // jdk3.AllInstructions and jd3.LargeMethod contains JSR/RET instructions, + // jdk3.AllInstructions and jdk3.LargeMethod contain JSR/RET instructions, // incompatible with COMPUTE_FRAMES. if (classParameter == PrecompiledClass.JDK3_ALL_INSTRUCTIONS || classParameter == PrecompiledClass.JDK3_LARGE_METHOD) { @@ -154,7 +154,7 @@ public class ClassWriterTest extends AsmTest { byte[] classFile = classParameter.getBytes(); ClassReader classReader = new ClassReader(classFile); ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); - // jdk3.AllInstructions and jd3.LargeMethod contains JSR/RET instructions, + // jdk3.AllInstructions and jdk3.LargeMethod contain JSR/RET instructions, // incompatible with COMPUTE_FRAMES. if (classParameter == PrecompiledClass.JDK3_ALL_INSTRUCTIONS || classParameter == PrecompiledClass.JDK3_LARGE_METHOD) { @@ -183,7 +183,8 @@ public class ClassWriterTest extends AsmTest { byte[] classFile = classParameter.getBytes(); ClassReader classReader = new ClassReader(classFile); ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); - // jdk3.AllInstructions contains JSR/RET instructions, incompatible with COMPUTE_FRAMES. + // jdk3.AllInstructions and jdk3.LargeMethod contain JSR/RET instructions, + // incompatible with COMPUTE_FRAMES. if (classParameter == PrecompiledClass.JDK3_ALL_INSTRUCTIONS || classParameter == PrecompiledClass.JDK3_LARGE_METHOD || classParameter.isMoreRecentThan(apiParameter)) { -- GitLab From cc582afb6f3606d8ec498eedad4befa12ece6af4 Mon Sep 17 00:00:00 2001 From: Eric Bruneton Date: Wed, 4 Oct 2017 21:48:40 +0200 Subject: [PATCH 3/3] Implement a TODO in SimpleVerifier. --- .../asm/tree/analysis/SimpleVerifier.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/org/objectweb/asm/tree/analysis/SimpleVerifier.java b/src/org/objectweb/asm/tree/analysis/SimpleVerifier.java index 8710b8d56..775a65b43 100644 --- a/src/org/objectweb/asm/tree/analysis/SimpleVerifier.java +++ b/src/org/objectweb/asm/tree/analysis/SimpleVerifier.java @@ -209,17 +209,23 @@ public class SimpleVerifier extends BasicVerifier { if (isAssignableFrom(u, t)) { return w; } - // TODO case of array classes of the same dimension - // TODO should we look also for a common super interface? - // problem: there may be several possible common super - // interfaces + int dims = 0; + if (t.getSort() == Type.ARRAY + && u.getSort() == Type.ARRAY + && t.getDimensions() == u.getDimensions() + && t.getElementType().getSort() == Type.OBJECT + && u.getElementType().getSort() == Type.OBJECT) { + dims = t.getDimensions(); + t = t.getElementType(); + u = u.getElementType(); + } do { if (t == null || isInterface(t)) { - return BasicValue.REFERENCE_VALUE; + return newValue(Type.getObjectType("java/lang/Object"), dims); } t = getSuperClass(t); if (isAssignableFrom(t, u)) { - return newValue(t); + return newValue(t, dims); } } while (true); } @@ -229,6 +235,18 @@ public class SimpleVerifier extends BasicVerifier { return v; } + private BasicValue newValue(final Type t, int dims) { + if (dims == 0) { + return newValue(t); + } else { + String desc = t.getDescriptor(); + for (int i = 0; i < dims; ++i) { + desc = '[' + desc; + } + return newValue(Type.getType(desc)); + } + } + protected boolean isInterface(final Type t) { if (currentClass != null && t.equals(currentClass)) { return isInterface; -- GitLab