parent
b3705cf400
commit
270a3f6e22
@ -1,9 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<classpath> |
|
||||||
<classpathentry kind="src" path="src"/> |
|
||||||
<classpathentry kind="src" path="timer"/> |
|
||||||
<classpathentry kind="src" path="test"/> |
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> |
|
||||||
<classpathentry kind="lib" path="lib/timer/timer.jar"/> |
|
||||||
<classpathentry kind="output" path="bin"/> |
|
||||||
</classpath> |
|
@ -1,3 +0,0 @@ |
|||||||
bin/ |
|
||||||
dist/full/ |
|
||||||
dist/obfuscated/ |
|
@ -1,17 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<projectDescription> |
|
||||||
<name>Fernflower</name> |
|
||||||
<comment></comment> |
|
||||||
<projects> |
|
||||||
</projects> |
|
||||||
<buildSpec> |
|
||||||
<buildCommand> |
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name> |
|
||||||
<arguments> |
|
||||||
</arguments> |
|
||||||
</buildCommand> |
|
||||||
</buildSpec> |
|
||||||
<natures> |
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature> |
|
||||||
</natures> |
|
||||||
</projectDescription> |
|
@ -1,2 +0,0 @@ |
|||||||
eclipse.preferences.version=1 |
|
||||||
encoding//test/test/misc/en/InnerTest.java=UTF-8 |
|
@ -1,11 +0,0 @@ |
|||||||
eclipse.preferences.version=1 |
|
||||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled |
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 |
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve |
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.7 |
|
||||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate |
|
||||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate |
|
||||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate |
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
|
||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
|
||||||
org.eclipse.jdt.core.compiler.source=1.7 |
|
@ -1,51 +0,0 @@ |
|||||||
Fernflower Freeware License 1.0 |
|
||||||
|
|
||||||
This license applies to the Fernflower decompiler (hereafter “Software") |
|
||||||
including any associated files, information and examples. |
|
||||||
|
|
||||||
You are hereby granted a non-exclusive and non-transferable license to |
|
||||||
use and distribute the Software in binary form according to the following |
|
||||||
terms and conditions. |
|
||||||
|
|
||||||
|
|
||||||
1) Copies and Redistribution |
|
||||||
|
|
||||||
You may copy and distribute unmodified binary copies of the Software |
|
||||||
provided that you keep this license intact. You must NOT charge money |
|
||||||
or fees for the Software except to cover the absolutely necessary |
|
||||||
distribution costs. |
|
||||||
|
|
||||||
Any other form of redistribution is prohibited. Especially you are not |
|
||||||
allowed to redistribute the Software as part of any other software |
|
||||||
collection or other product. |
|
||||||
|
|
||||||
|
|
||||||
2) Use |
|
||||||
|
|
||||||
You may use the Software "as is" in any commercial or non-commercial environment |
|
||||||
for any purpose. |
|
||||||
|
|
||||||
|
|
||||||
3) Contact Information |
|
||||||
|
|
||||||
The sole author and owner of Fernflower is Stiver. Address all correspondence regarding |
|
||||||
this license to: |
|
||||||
|
|
||||||
fernflower.decompiler@gmail.com |
|
||||||
|
|
||||||
http://www.reversed-java.com |
|
||||||
|
|
||||||
|
|
||||||
4) Disclaimer of Warranty |
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. |
|
@ -1,62 +0,0 @@ |
|||||||
Fernflower Freeware Lizenz 1.0 |
|
||||||
|
|
||||||
Gegenstand der vorliegenden Lizenz ist der Fernflower Decompiler (im Folgenden "Software" genannt) |
|
||||||
einschließlich aller dazu gehörenden Dateien, Informationen und Beispiele. |
|
||||||
|
|
||||||
Hiermit erhalten Sie eine nicht-ausschlieĂźliche und nicht-ĂĽbertragbare Lizenz |
|
||||||
für die Nutzung und Weitergabe der Software gemäß den nachfolgenden |
|
||||||
Bedingungen. |
|
||||||
|
|
||||||
|
|
||||||
1) Kopieren und Weitergeben |
|
||||||
|
|
||||||
Sie dürfen die Software kopieren und exakte Binärkopien unverändert |
|
||||||
weitergeben, vorausgesetzt, diese Lizenz bleibt in der ursprĂĽnglichen Form |
|
||||||
erhalten. Sie dĂĽrfen KEINE wie auch immer geartete Bezahlung oder GebĂĽhren |
|
||||||
fĂĽr die Software verlangen, auĂźer um die absolut unvermeidbaren Selbstkosten |
|
||||||
der Weitergabe zu decken. |
|
||||||
|
|
||||||
Jede andere Form der Weitergabe ist untersagt. Insbesondere ist es nicht gestattet, |
|
||||||
die Software als Teil einer anderen Softwaresammlung oder eines anderen Produktes |
|
||||||
weiterzugeben. |
|
||||||
|
|
||||||
|
|
||||||
2) Nutzung |
|
||||||
|
|
||||||
Sie können die Software beliebig in jeder kommerziellen oder nicht-kommerziellen Umgebung |
|
||||||
zu jedem Zweck einsetzen. |
|
||||||
|
|
||||||
|
|
||||||
3) Kontaktinformation |
|
||||||
|
|
||||||
Der einzige Autor und EigentĂĽmer von Fernflower ist Stiver. Alle RĂĽckfragen bezĂĽglich dieser Lizenz |
|
||||||
sind an |
|
||||||
|
|
||||||
fernflower.decompiler@gmail.com |
|
||||||
|
|
||||||
http://www.reversed-java.com |
|
||||||
|
|
||||||
zu richten. |
|
||||||
|
|
||||||
|
|
||||||
4) GARANTIE- UND HAFTUNGSBESCHRĂ„NKUNGEN |
|
||||||
|
|
||||||
DIESE SOFTWARE WIRD IHNEN AUF DER GRUNDLAGE DES GEGENWĂ„RTIGEN ZUSTANDS ZUR |
|
||||||
VERFĂśGUNG GESTELLT. ES GIBT KEINE GARANTIE, WEDER AUSDRĂśCKLICH NOCH IMPLIZIT. |
|
||||||
DIES SCHLIEĂźT AUCH GARANTIEANSPRĂśCHE BEZĂśGLICH DER VERKAUFSQUALITĂ„T, |
|
||||||
VERKĂ„UFLICHKEIT ODER EIGNUNG FĂśR EINEN BESTIMMTEN ZWECk AUS, ODER SOLCHE, DIE |
|
||||||
DURCH GELTENDES RECHT, GESETZLICHE VORSCHRIFTEN, GESCHĂ„FTSGEBRAUCH ODER |
|
||||||
HANDELSVERKEHR VERURSACHT WERDEN. DAS GESAMTE RISIKO IN BEZUG AUF DIE ERGEBNISSE |
|
||||||
UND DIE LEISTUNG DES PROGRAMMS LIEGT BEI IHNEN. WEDER DER AUTOR NOCH IRGENDEIN |
|
||||||
AN DEM PROJEKT BETEILIGTER HAT IRGENDEINE HAFTUNGSVERPFLICHTUNG IHNEN ODER |
|
||||||
IRGENDEINER ANDEREN PERSON ODER INSTITUTION GEGENĂśBER FĂśR JEDWEDE INDIREKTE, |
|
||||||
ZUFĂ„LLIGE, BESONDERE SCHĂ„DEN ODER IRGENDWELCHE FOLGESCHĂ„DEN. DIES GILT AUCH FĂśR |
|
||||||
SCHĂ„DEN AUS ENTGANGENEM GEWINN, VERLORENEN ODER BESCHĂ„DIGTEN DATEN ODER FĂśR |
|
||||||
ANDERE KOMMERZIELLE ODER WIRTSCHAFTLICHE VERLUSTE, SELBST DANN, WENN DER AUTOR |
|
||||||
ODER IRGENDEIN AN DEM PROJEKT BETEILIGTER AUF DIE MĂ–GLICHKEIT DERARTIGER SCHĂ„DEN |
|
||||||
HINGEWIESEN WURDE ODER DIESE VORHERSEHBAR WAREN, ODER FĂśR ANSPRĂśCHE DRITTER. DIE |
|
||||||
HIER FESTGELEGTEN HAFTUNGSBESCHRĂ„NKUNGEN GELTEN UNABHĂ„NGUG DAVON, OB DER VERMEINTLICHE |
|
||||||
ODER TATSĂ„CHLICHE VERTRAGSBRUCH EINE GRUNDSĂ„TZLICHE BEDINGUNG ODER |
|
||||||
VERTRAGSVEREINBARUNG BERĂśHRT, ODER EIN GRUNDSĂ„TZLICHER VERTRAGSBRUCH IST. DIESER |
|
||||||
ABSATZ IST EIN ESSENZIELLER TEIL DIESER LIZENZ. ES IST VERBOTEN DAS PROGRAMM ZU |
|
||||||
BENUTZEN OHNE DASS DIESEM ABSATZ ZUGESTIMMT WIRD. |
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,57 +0,0 @@ |
|||||||
package test; |
|
||||||
|
|
||||||
import java.util.LinkedList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
public class BradTest { |
|
||||||
|
|
||||||
public void testForLoop() { |
|
||||||
|
|
||||||
for(int i = 0; i < 5; i++) { |
|
||||||
System.out.println(i); |
|
||||||
} |
|
||||||
|
|
||||||
int[] testArray = new int[] {}; |
|
||||||
|
|
||||||
for(int i : testArray) { |
|
||||||
System.out.println(i); |
|
||||||
} |
|
||||||
|
|
||||||
int k = 0; |
|
||||||
int j = 0; |
|
||||||
|
|
||||||
while(j < 5) { |
|
||||||
|
|
||||||
System.out.println("Test while."); |
|
||||||
|
|
||||||
j++; |
|
||||||
|
|
||||||
if(j < 3) { |
|
||||||
continue; |
|
||||||
} |
|
||||||
|
|
||||||
k++; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
List keys = new java.util.ArrayList(); |
|
||||||
|
|
||||||
for(Object test : keys) { |
|
||||||
|
|
||||||
System.out.println(test); |
|
||||||
|
|
||||||
System.out.println(test); |
|
||||||
|
|
||||||
System.out.println(test); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
List<BradTest> objects = new LinkedList<BradTest>(); |
|
||||||
|
|
||||||
for(BradTest test : objects) { |
|
||||||
System.out.println(test); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,42 +0,0 @@ |
|||||||
package test; |
|
||||||
|
|
||||||
import java.lang.annotation.Annotation; |
|
||||||
import java.lang.annotation.Retention; |
|
||||||
import java.lang.annotation.RetentionPolicy; |
|
||||||
import java.lang.reflect.Constructor; |
|
||||||
import java.lang.reflect.Method; |
|
||||||
|
|
||||||
public class TestAnnotationsEclipse { |
|
||||||
|
|
||||||
public String a; |
|
||||||
|
|
||||||
@Retention(RetentionPolicy.CLASS) |
|
||||||
@interface MyAnnotation {} |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
TestInner a = new TestAnnotationsEclipse().new TestInner(); |
|
||||||
|
|
||||||
for(Constructor mt : a.getClass().getConstructors()) { |
|
||||||
|
|
||||||
Annotation[][] ann = mt.getParameterAnnotations(); |
|
||||||
|
|
||||||
System.out.println(ann.length); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
protected class TestInner { |
|
||||||
|
|
||||||
public TestInner() {} |
|
||||||
|
|
||||||
public TestInner(String param1, Object param2, @MyAnnotation boolean param3) { |
|
||||||
System.out.println(param1); |
|
||||||
System.out.println(param2); |
|
||||||
System.out.println(param3); |
|
||||||
} |
|
||||||
|
|
||||||
public void accessField() { |
|
||||||
System.out.println(TestAnnotationsEclipse.this.a); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,59 +0,0 @@ |
|||||||
package test.input; |
|
||||||
|
|
||||||
import java.io.FileReader; |
|
||||||
import java.io.IOException; |
|
||||||
import java.lang.reflect.Method; |
|
||||||
|
|
||||||
public class TestEclipse7 { |
|
||||||
|
|
||||||
|
|
||||||
// public void testTryResources() throws IOException {
|
|
||||||
//
|
|
||||||
// try (FileReader reader = new FileReader("file"); FileReader reader1 = new FileReader("file")) {
|
|
||||||
// System.out.println();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void testTryResources1() throws IOException {
|
|
||||||
//
|
|
||||||
// try (FileReader reader = new FileReader("file")) {
|
|
||||||
// System.out.println("block");
|
|
||||||
// } catch(RuntimeException ex) {
|
|
||||||
// System.out.println(ex.toString());
|
|
||||||
// } finally {
|
|
||||||
// System.out.println("finally");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void testMultiCatch() { |
|
||||||
|
|
||||||
try { |
|
||||||
Method method = getClass().getDeclaredMethod("foo"); |
|
||||||
} catch (NoSuchMethodException | SecurityException e) { |
|
||||||
e.printStackTrace(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
// public void testSwitchString() {
|
|
||||||
//
|
|
||||||
// String s = "";
|
|
||||||
// switch(s) {
|
|
||||||
// case "Aa": // "xyz":
|
|
||||||
// System.out.println("!");
|
|
||||||
// break;
|
|
||||||
// case "BB": // "abc":
|
|
||||||
// System.out.println("?");
|
|
||||||
// break;
|
|
||||||
// case "__":
|
|
||||||
// System.out.println("_");
|
|
||||||
// break;
|
|
||||||
// default:
|
|
||||||
// System.out.println("#");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
} |
|
@ -1,59 +0,0 @@ |
|||||||
package test.input; |
|
||||||
|
|
||||||
import java.io.FileReader; |
|
||||||
import java.io.IOException; |
|
||||||
import java.lang.reflect.Method; |
|
||||||
|
|
||||||
public class TestJavac7 { |
|
||||||
|
|
||||||
|
|
||||||
public void testTryResources() throws IOException { |
|
||||||
|
|
||||||
try (FileReader reader = new FileReader("file"); FileReader reader1 = new FileReader("file")) { |
|
||||||
System.out.println(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testTryResources1() throws IOException { |
|
||||||
|
|
||||||
try (FileReader reader = new FileReader("file")) { |
|
||||||
System.out.println("block"); |
|
||||||
} catch(RuntimeException ex) { |
|
||||||
System.out.println(ex.toString()); |
|
||||||
} finally { |
|
||||||
System.out.println("finally"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testMultiCatch() { |
|
||||||
|
|
||||||
try { |
|
||||||
Method method = getClass().getDeclaredMethod("foo"); |
|
||||||
} catch (NoSuchMethodException | SecurityException e) { |
|
||||||
e.printStackTrace(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
public void testSwitchString() { |
|
||||||
|
|
||||||
String s = ""; |
|
||||||
switch(s) { |
|
||||||
case "Aa": // "xyz":
|
|
||||||
System.out.println("!"); |
|
||||||
break; |
|
||||||
case "BB": // "abc":
|
|
||||||
System.out.println("?"); |
|
||||||
break; |
|
||||||
case "__": |
|
||||||
System.out.println("_"); |
|
||||||
break; |
|
||||||
default: |
|
||||||
System.out.println("#"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,58 +0,0 @@ |
|||||||
package test.input; |
|
||||||
|
|
||||||
import java.io.FileReader; |
|
||||||
import java.io.IOException; |
|
||||||
import java.lang.reflect.Method; |
|
||||||
import java.util.Arrays; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
public class TestJavac8 { |
|
||||||
|
|
||||||
// public static void main(String args[]) {
|
|
||||||
// new TestJavac8().testLambda();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void testTryResources() throws IOException {
|
|
||||||
//
|
|
||||||
// try (FileReader reader = new FileReader("file"); FileReader reader1 = new FileReader("file")) {
|
|
||||||
// System.out.println();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void testMultiCatch() {
|
|
||||||
//
|
|
||||||
// try {
|
|
||||||
// Method method = getClass().getDeclaredMethod("foo");
|
|
||||||
// } catch (NoSuchMethodException | SecurityException e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// private void testSwitchString() {
|
|
||||||
//
|
|
||||||
// String s = "";
|
|
||||||
// switch(s) {
|
|
||||||
// case "Aa": // "xyz":
|
|
||||||
// System.out.println("!");
|
|
||||||
// break;
|
|
||||||
// case "BB": // "abc":
|
|
||||||
// System.out.println("?");
|
|
||||||
// break;
|
|
||||||
// case "__":
|
|
||||||
// System.out.println("_");
|
|
||||||
// break;
|
|
||||||
// default:
|
|
||||||
// System.out.println("#");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void testLambda() { |
|
||||||
|
|
||||||
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); |
|
||||||
list.forEach(n -> {int a = 2 * n; System.out.println(a);}); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,81 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
import java.io.IOException; |
|
||||||
import java.sql.Timestamp; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.Date; |
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.Map.Entry; |
|
||||||
|
|
||||||
public class ExtTest<E> extends ArrayList<E> { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
Date d = new Date(); Timestamp t = new Timestamp(d.getTime()); |
|
||||||
System.out.println(d.after(t)); |
|
||||||
|
|
||||||
System.out.println((int)-1); |
|
||||||
System.out.println((int)1); |
|
||||||
System.out.println((Integer)1); |
|
||||||
System.out.println((Integer)1); |
|
||||||
|
|
||||||
Class c = String.class; |
|
||||||
|
|
||||||
Integer Integer = 0; |
|
||||||
Integer = (Integer)-1; |
|
||||||
|
|
||||||
int z = 0; |
|
||||||
z = z+++(++z); |
|
||||||
|
|
||||||
Entry ent = (Entry)new HashMap().entrySet().iterator().next(); |
|
||||||
|
|
||||||
label1: { |
|
||||||
System.out.println("1"); |
|
||||||
if(Math.random() > 4) { |
|
||||||
break label1; |
|
||||||
} |
|
||||||
System.out.println("2"); |
|
||||||
} |
|
||||||
System.out.println("3"); |
|
||||||
} |
|
||||||
|
|
||||||
public <T extends E> void test(T o) { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testException() throws IOException { |
|
||||||
// if(true) {
|
|
||||||
// throw new RuntimeException();
|
|
||||||
// } else {
|
|
||||||
// throw new IOException();
|
|
||||||
// }
|
|
||||||
// throw true?new IOException():new IOException();
|
|
||||||
// throw true?new ClassCastException():new IOException();
|
|
||||||
} |
|
||||||
|
|
||||||
public static int ttt() { |
|
||||||
|
|
||||||
Object obj = new Integer(5); |
|
||||||
synchronized (new Integer(3)) { |
|
||||||
System.out.println(obj); |
|
||||||
obj = null; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
System.out.println("1"); |
|
||||||
if(Math.random() > 1) { |
|
||||||
System.out.println("2"); |
|
||||||
} else { |
|
||||||
System.out.println("3"); |
|
||||||
} |
|
||||||
System.out.println("4"); |
|
||||||
|
|
||||||
int a = 0; |
|
||||||
try { |
|
||||||
a = 2; |
|
||||||
return a; |
|
||||||
} finally { |
|
||||||
a = 4; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,65 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
import java.io.Serializable; |
|
||||||
import java.util.AbstractCollection; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.Collection; |
|
||||||
import java.util.Date; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
public class GenericTest<T extends Object & Serializable> { |
|
||||||
|
|
||||||
@test.misc.ann.RequestForEnhancement( |
|
||||||
id = 2868724, |
|
||||||
synopsis = "Enable time-travel", |
|
||||||
engineer = "Mr. Peabody", |
|
||||||
date = "4/1/3007", |
|
||||||
arr = {"1","2","3"}, |
|
||||||
cl = Void.class |
|
||||||
) |
|
||||||
@Deprecated |
|
||||||
public boolean test(@Deprecated Collection c) { |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
public int testparam(boolean t, @Deprecated List lst, double d) { |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
class GenericTestChild<E extends Collection> extends GenericTest<GenericTestChild<AbstractCollection>> implements Serializable { |
|
||||||
|
|
||||||
// public <T> void test(Collection<T> c) {
|
|
||||||
// T var1 = c.iterator().next();
|
|
||||||
// c.add(var1);
|
|
||||||
// }
|
|
||||||
|
|
||||||
public List<String>[][] field; |
|
||||||
|
|
||||||
public <T extends Date & List> void test(List<? super ArrayList> list1, List<?> list) { |
|
||||||
|
|
||||||
// l2: {
|
|
||||||
// l1: {
|
|
||||||
// if(Math.random() > 2){
|
|
||||||
// break l1;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// System.out.println("1");
|
|
||||||
// break l2;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// System.out.println("2");
|
|
||||||
// }
|
|
||||||
|
|
||||||
if(Math.random() > 2){ |
|
||||||
System.out.println("2"); |
|
||||||
} else { |
|
||||||
System.out.println("1"); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
@ -1,9 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
import java.io.Serializable; |
|
||||||
|
|
||||||
public interface ITest extends Serializable, Comparable<Long> { |
|
||||||
|
|
||||||
public void test(); |
|
||||||
|
|
||||||
} |
|
@ -1,115 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
public class MainClass { |
|
||||||
|
|
||||||
private int intfield; |
|
||||||
|
|
||||||
private static int stfield; |
|
||||||
|
|
||||||
private static void statmeth(int t) { |
|
||||||
System.out.println(t); |
|
||||||
} |
|
||||||
|
|
||||||
private String maintest(int v) { |
|
||||||
System.out.println(v+"test!"); |
|
||||||
return ""; |
|
||||||
} |
|
||||||
|
|
||||||
public MainClass() { |
|
||||||
super(); |
|
||||||
} |
|
||||||
|
|
||||||
public void mainclosure() { |
|
||||||
|
|
||||||
final int local1 = (int)Math.random(); |
|
||||||
|
|
||||||
List l = new ArrayList(new ArrayList()) { |
|
||||||
|
|
||||||
{ |
|
||||||
System.out.println(intfield); |
|
||||||
} |
|
||||||
|
|
||||||
public void anontest() { |
|
||||||
System.out.println(local1); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
class LocalClass { |
|
||||||
|
|
||||||
public LocalClass(String s) { |
|
||||||
System.out.println(s); |
|
||||||
statmeth(4); |
|
||||||
} |
|
||||||
|
|
||||||
public void localtest() { |
|
||||||
int i = intfield; |
|
||||||
intfield = 4; |
|
||||||
maintest(i); |
|
||||||
|
|
||||||
System.out.println(local1); |
|
||||||
|
|
||||||
System.out.println(stfield); |
|
||||||
stfield = 3; |
|
||||||
} |
|
||||||
|
|
||||||
class LocalMemberClass { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
boolean t = false; |
|
||||||
if(t) { |
|
||||||
LocalClass lc = new LocalClass("1"); |
|
||||||
LocalClass.LocalMemberClass rt = lc.new LocalMemberClass();; |
|
||||||
} else { |
|
||||||
if(Math.random() > 1) { |
|
||||||
LocalClass lc1 = new LocalClass("1"); |
|
||||||
} |
|
||||||
System.out.println(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
public class MemberClass { |
|
||||||
|
|
||||||
public MemberClass(String z) { |
|
||||||
System.out.println(z); |
|
||||||
} |
|
||||||
|
|
||||||
public void membertest() { |
|
||||||
int i = intfield; |
|
||||||
maintest(i); |
|
||||||
stfield = 5; |
|
||||||
|
|
||||||
Member2Class.Member3Class t = (new Member2Class()).new Member3Class(); |
|
||||||
} |
|
||||||
|
|
||||||
public class Member2Class1 { |
|
||||||
|
|
||||||
public class Member3Class1 { |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
class Member2Class { |
|
||||||
|
|
||||||
public void member2test() { |
|
||||||
int i = intfield; |
|
||||||
maintest(i); |
|
||||||
Member2Class1.Member3Class1 t; |
|
||||||
} |
|
||||||
|
|
||||||
public class Member3Class { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,83 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
public class MiscTest { |
|
||||||
|
|
||||||
public static double test = 1 / 0; |
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
System.out.println(test); |
|
||||||
|
|
||||||
String s = "a b"; |
|
||||||
s = s.replaceAll(" ", "  "); |
|
||||||
System.out.println(s); |
|
||||||
|
|
||||||
try { |
|
||||||
throw null; |
|
||||||
} catch(RuntimeException ex) { |
|
||||||
System.out.println(ex); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
int a = 3; |
|
||||||
|
|
||||||
if(a == 1) { |
|
||||||
System.out.println("1"); |
|
||||||
} else if(a == 2) { |
|
||||||
System.out.println("2"); |
|
||||||
} else if(a == 3) { |
|
||||||
System.out.println("3"); |
|
||||||
} else if(a == 4) { |
|
||||||
System.out.println("4"); |
|
||||||
} else if(a == 5) { |
|
||||||
System.out.println("5"); |
|
||||||
} else if(a == 6) { |
|
||||||
System.out.println("6"); |
|
||||||
} else if(a == 7) { |
|
||||||
System.out.println("7"); |
|
||||||
} |
|
||||||
|
|
||||||
if(a == 0) { |
|
||||||
return; |
|
||||||
} else { |
|
||||||
System.out.println("0"); |
|
||||||
} |
|
||||||
|
|
||||||
if(a==4) { |
|
||||||
System.out.println("assert"); |
|
||||||
assert a==4 && a==5; |
|
||||||
} else { |
|
||||||
assert false; |
|
||||||
} |
|
||||||
|
|
||||||
assert a==5: Math.random(); |
|
||||||
|
|
||||||
assert false: Math.random(); |
|
||||||
|
|
||||||
assert true; |
|
||||||
|
|
||||||
assert true: Math.random(); |
|
||||||
|
|
||||||
/* |
|
||||||
label: { |
|
||||||
if(a == 0) { |
|
||||||
System.out.println("0"); |
|
||||||
} else if(a == 1) { |
|
||||||
System.out.println("01"); |
|
||||||
} else { |
|
||||||
if(a == -1) { |
|
||||||
System.out.println("-1"); |
|
||||||
} else { |
|
||||||
System.out.println("-2"); |
|
||||||
} |
|
||||||
break label; |
|
||||||
} |
|
||||||
|
|
||||||
System.out.println("end"); |
|
||||||
} |
|
||||||
System.out.println("end1"); |
|
||||||
*/ |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,33 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
public class MultipleClassTest { |
|
||||||
|
|
||||||
public int field = this.hashCode(); |
|
||||||
|
|
||||||
public void test() { |
|
||||||
|
|
||||||
class Test1 { |
|
||||||
public int t1() { |
|
||||||
// System.out.println("1");
|
|
||||||
|
|
||||||
try { |
|
||||||
return 2; |
|
||||||
} finally { |
|
||||||
System.out.println("1"); |
|
||||||
return 3; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
class Test2 { |
|
||||||
public void t2() { |
|
||||||
System.out.println("2"); |
|
||||||
//new Test1().t1();
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// new Test1().t1();
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,19 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
public class ParentFieldTest { |
|
||||||
|
|
||||||
public int test = 0; |
|
||||||
|
|
||||||
private class Parent extends ParentFieldTest { |
|
||||||
|
|
||||||
private class Child { |
|
||||||
|
|
||||||
public void test() { |
|
||||||
System.out.println(ParentFieldTest.this.test); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,27 +0,0 @@ |
|||||||
package test.misc; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
|
|
||||||
public class SuperTest extends ArrayList { |
|
||||||
|
|
||||||
public SuperTest() { |
|
||||||
super(3); |
|
||||||
super.modCount = 2; |
|
||||||
SuperTest.super.size(); |
|
||||||
} |
|
||||||
|
|
||||||
public int size() { |
|
||||||
System.out.println("1"); |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
class SuperTest1 { |
|
||||||
|
|
||||||
public void test() { |
|
||||||
SuperTest.super.size(); |
|
||||||
SuperTest.super.modCount = 2; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,22 +0,0 @@ |
|||||||
package test.misc.ann; |
|
||||||
|
|
||||||
import java.lang.annotation.ElementType; |
|
||||||
import java.lang.annotation.Retention; |
|
||||||
import java.lang.annotation.RetentionPolicy; |
|
||||||
import java.lang.annotation.Target; |
|
||||||
|
|
||||||
/** |
|
||||||
* Describes the Request-For-Enhancement(RFE) that led |
|
||||||
* to the presence of the annotated API element. |
|
||||||
*/ |
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME) |
|
||||||
@Target(ElementType.METHOD) |
|
||||||
public @interface RequestForEnhancement { |
|
||||||
int id(); |
|
||||||
String synopsis(); |
|
||||||
String engineer() default "[unassigned]"; |
|
||||||
String date() default "[unimplemented]"; |
|
||||||
String[] arr(); |
|
||||||
Class cl(); |
|
||||||
} |
|
@ -1,17 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
import java.util.HashMap; |
|
||||||
|
|
||||||
public class AutocastTest { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); |
|
||||||
|
|
||||||
Integer key = new Integer(1); |
|
||||||
Integer value = map.containsKey(key)?0:map.get(key); |
|
||||||
|
|
||||||
System.out.println(value == null); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,60 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
import java.util.Arrays; |
|
||||||
import java.util.HashSet; |
|
||||||
import java.util.Set; |
|
||||||
import java.util.SortedSet; |
|
||||||
import java.util.TreeSet; |
|
||||||
|
|
||||||
import de.fernflower.util.FastSetFactory; |
|
||||||
import de.fernflower.util.FastSetFactory.FastSet; |
|
||||||
|
|
||||||
public class FastSetTest { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
SortedSet<Integer> set = new TreeSet<Integer>(); |
|
||||||
|
|
||||||
for(int i=0;i<3;i++) { |
|
||||||
set.add(i); |
|
||||||
} |
|
||||||
|
|
||||||
// for(Integer s : set) {
|
|
||||||
// System.out.println(s);
|
|
||||||
// }
|
|
||||||
|
|
||||||
FastSetFactory<Integer> factory = new FastSetFactory<Integer>(set); |
|
||||||
|
|
||||||
// factory.print();
|
|
||||||
|
|
||||||
// int index = 1;
|
|
||||||
// for(int i=0;i<100;i++) {
|
|
||||||
// if(i % 32 == 0) {
|
|
||||||
// index = 1;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// System.out.println(index);
|
|
||||||
// index<<=1;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FastSet<Integer> set1 = factory.spawnEmptySet(); |
|
||||||
set1.addAll(new HashSet<Integer>(Arrays.asList(new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}))); |
|
||||||
|
|
||||||
FastSet<Integer> set2 = set1.getCopy(); |
|
||||||
set2.remove(4); |
|
||||||
set2.remove(5); |
|
||||||
set2.add(10); |
|
||||||
|
|
||||||
set1.symdiff(set2); |
|
||||||
Set<Integer> set3 = new TreeSet<Integer>(set1.toPlainSet()); |
|
||||||
|
|
||||||
for(Integer s : set3) { |
|
||||||
System.out.println(s); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,22 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
public class FinallyTest { |
|
||||||
|
|
||||||
public FinallyTest() { |
|
||||||
|
|
||||||
int i; |
|
||||||
try { |
|
||||||
try { |
|
||||||
i = 0; |
|
||||||
} finally { |
|
||||||
i = 1; |
|
||||||
} |
|
||||||
i = 2; |
|
||||||
} finally { |
|
||||||
i = 3; |
|
||||||
} |
|
||||||
|
|
||||||
System.out.println(i); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,52 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
class Foo { |
|
||||||
|
|
||||||
public Foo() {} |
|
||||||
|
|
||||||
public Foo(String test) {} |
|
||||||
|
|
||||||
private void foo() { |
|
||||||
System.out.println("qwe"); |
|
||||||
} |
|
||||||
|
|
||||||
static class Bar extends Foo { |
|
||||||
void bar() { |
|
||||||
System.out.println("1"); |
|
||||||
//((Foo)this).foo();
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
static class Bar1 extends Bar { |
|
||||||
void bar() { |
|
||||||
super.bar(); |
|
||||||
//System.out.println("2");
|
|
||||||
//((Foo)this).foo();
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
static class Bar2 extends Bar1 { |
|
||||||
void bar1() { |
|
||||||
super.bar(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
new Bar2().bar(); |
|
||||||
} |
|
||||||
|
|
||||||
public int testfin() { |
|
||||||
|
|
||||||
int i; |
|
||||||
|
|
||||||
try { |
|
||||||
System.out.println(); |
|
||||||
i = 0; |
|
||||||
} finally { |
|
||||||
System.out.println(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
return i; |
|
||||||
} |
|
||||||
} |
|
@ -1,22 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
|
|
||||||
class InnerTest$1 extends Foo implements Runnable { |
|
||||||
|
|
||||||
// $FF: synthetic field
|
|
||||||
final String val$test; |
|
||||||
// $FF: synthetic field
|
|
||||||
final int val$test1; |
|
||||||
|
|
||||||
|
|
||||||
InnerTest$1(String var1, int var2) { |
|
||||||
super(); |
|
||||||
this.val$test = var1; |
|
||||||
this.val$test1 = var2; |
|
||||||
} |
|
||||||
|
|
||||||
public void run() { |
|
||||||
System.out.println(this.val$test); |
|
||||||
System.out.println(this.val$test1); |
|
||||||
} |
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
import test.misc.en.InnerTest$1; |
|
||||||
|
|
||||||
public class InnerTest { |
|
||||||
|
|
||||||
public static void main(String[] args) throws Throwable { |
|
||||||
String test = args[0]; |
|
||||||
int test1 = Integer.parseInt(args[1]); |
|
||||||
new InnerTest$1(test, test1); |
|
||||||
System.out.println("готово"); |
|
||||||
} |
|
||||||
} |
|
@ -1,20 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
public class InnerTestOld { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
final String test = args[0]; |
|
||||||
final int test1 = Integer.parseInt(args[1]); |
|
||||||
|
|
||||||
Runnable r = new Runnable() { |
|
||||||
public void run() { |
|
||||||
System.out.println(test); |
|
||||||
System.out.println(test1); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
System.out.println("done"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,34 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.Arrays; |
|
||||||
import java.util.Date; |
|
||||||
import java.util.LinkedList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
public class ListInsertTest { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
List<Integer> lst1 = new ArrayList<Integer>(Arrays.asList(new Integer[]{1, 2, 3})); |
|
||||||
List<Integer> lst2 = new LinkedList<Integer>(Arrays.asList(new Integer[]{1, 2, 3})); |
|
||||||
|
|
||||||
Date d = new Date(); |
|
||||||
|
|
||||||
for(int i=0;i<300000;i++) { |
|
||||||
lst1.add(1, i); |
|
||||||
} |
|
||||||
|
|
||||||
System.out.println(new Date().getTime() - d.getTime()); |
|
||||||
|
|
||||||
d = new Date(); |
|
||||||
|
|
||||||
for(int i=0;i<300000;i++) { |
|
||||||
lst2.add(1, i); |
|
||||||
} |
|
||||||
|
|
||||||
System.out.println(new Date().getTime() - d.getTime()); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,51 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
public enum Operation { |
|
||||||
|
|
||||||
PLUS(2) { |
|
||||||
double eval(double x, double y) { return x + y; } |
|
||||||
}, |
|
||||||
MINUS(7) { |
|
||||||
double eval(double x, double y) { return x - y; } |
|
||||||
}, |
|
||||||
TIMES(8) { |
|
||||||
double eval(double x, double y) { return x * y; } |
|
||||||
}, |
|
||||||
DIVIDED_BY(0) { |
|
||||||
double eval(double x, double y) { return x / y; } |
|
||||||
}; |
|
||||||
|
|
||||||
|
|
||||||
// Perform the arithmetic operation represented by this constant
|
|
||||||
|
|
||||||
abstract double eval(double x, double y); |
|
||||||
|
|
||||||
Operation(int t) { |
|
||||||
|
|
||||||
// class LocalClass {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// LocalClass e = null;
|
|
||||||
|
|
||||||
System.out.println(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
public static void main(String args[]) { |
|
||||||
double x = Double.parseDouble(args[0]); |
|
||||||
double y = Double.parseDouble(args[1]); |
|
||||||
|
|
||||||
Operation opp = Operation.DIVIDED_BY; |
|
||||||
|
|
||||||
switch(opp) { |
|
||||||
case MINUS: |
|
||||||
System.out.println(); |
|
||||||
case PLUS: |
|
||||||
} |
|
||||||
|
|
||||||
for (Operation op : Operation.values()) { |
|
||||||
System.out.println(x + " " + op + " " + y + " = " + op.eval(x, y)); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,19 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
public class SwitchInTest { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
short t = 2; |
|
||||||
switch(t) { |
|
||||||
case -56: |
|
||||||
case 0: |
|
||||||
case 3: |
|
||||||
case 129: |
|
||||||
System.out.println(); |
|
||||||
default: |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,31 +0,0 @@ |
|||||||
package test.misc.en; |
|
||||||
|
|
||||||
public class TestOperation { |
|
||||||
|
|
||||||
public void test() { |
|
||||||
|
|
||||||
double x = 2; |
|
||||||
double y = 3; |
|
||||||
|
|
||||||
Operation opp = Operation.DIVIDED_BY; |
|
||||||
|
|
||||||
switch(opp) { |
|
||||||
case MINUS: |
|
||||||
System.out.println(); |
|
||||||
case PLUS: |
|
||||||
} |
|
||||||
|
|
||||||
switch(Operation.MINUS) { |
|
||||||
case DIVIDED_BY: |
|
||||||
System.out.println(); |
|
||||||
case PLUS: |
|
||||||
case TIMES: |
|
||||||
} |
|
||||||
|
|
||||||
for (Operation op : Operation.values()) { |
|
||||||
System.out.println(x + " " + op + " " + y + " = " + op.eval(x, y)); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,15 +0,0 @@ |
|||||||
package test.output; |
|
||||||
|
|
||||||
import java.lang.reflect.Method; |
|
||||||
|
|
||||||
public class TestEclipse7 { |
|
||||||
|
|
||||||
public void testMultiCatch() { |
|
||||||
try { |
|
||||||
Method e = this.getClass().getDeclaredMethod("foo", new Class[0]); |
|
||||||
} catch (SecurityException | NoSuchMethodException var2) { |
|
||||||
var2.printStackTrace(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
@ -1,129 +0,0 @@ |
|||||||
package test.output; |
|
||||||
|
|
||||||
import java.io.FileReader; |
|
||||||
import java.io.IOException; |
|
||||||
import java.lang.reflect.Method; |
|
||||||
|
|
||||||
public class TestJavac7 { |
|
||||||
|
|
||||||
public void testTryResources() throws IOException { |
|
||||||
FileReader var1 = new FileReader("file"); |
|
||||||
Throwable var2 = null; |
|
||||||
|
|
||||||
try { |
|
||||||
FileReader var3 = new FileReader("file"); |
|
||||||
Throwable var4 = null; |
|
||||||
|
|
||||||
try { |
|
||||||
System.out.println(); |
|
||||||
} catch (Throwable var27) { |
|
||||||
var4 = var27; |
|
||||||
throw var27; |
|
||||||
} finally { |
|
||||||
if(var3 != null) { |
|
||||||
if(var4 != null) { |
|
||||||
try { |
|
||||||
var3.close(); |
|
||||||
} catch (Throwable var26) { |
|
||||||
var4.addSuppressed(var26); |
|
||||||
} |
|
||||||
} else { |
|
||||||
var3.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} catch (Throwable var29) { |
|
||||||
var2 = var29; |
|
||||||
throw var29; |
|
||||||
} finally { |
|
||||||
if(var1 != null) { |
|
||||||
if(var2 != null) { |
|
||||||
try { |
|
||||||
var1.close(); |
|
||||||
} catch (Throwable var25) { |
|
||||||
var2.addSuppressed(var25); |
|
||||||
} |
|
||||||
} else { |
|
||||||
var1.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testTryResources1() throws IOException { |
|
||||||
try { |
|
||||||
FileReader var1 = new FileReader("file"); |
|
||||||
Throwable var2 = null; |
|
||||||
|
|
||||||
try { |
|
||||||
System.out.println("block"); |
|
||||||
} catch (Throwable var20) { |
|
||||||
var2 = var20; |
|
||||||
throw var20; |
|
||||||
} finally { |
|
||||||
if(var1 != null) { |
|
||||||
if(var2 != null) { |
|
||||||
try { |
|
||||||
var1.close(); |
|
||||||
} catch (Throwable var19) { |
|
||||||
var2.addSuppressed(var19); |
|
||||||
} |
|
||||||
} else { |
|
||||||
var1.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} catch (RuntimeException var22) { |
|
||||||
System.out.println(var22.toString()); |
|
||||||
} finally { |
|
||||||
System.out.println("finally"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testMultiCatch() { |
|
||||||
try { |
|
||||||
Method var1 = this.getClass().getDeclaredMethod("foo", new Class[0]); |
|
||||||
} catch (SecurityException var2) { |
|
||||||
var2.printStackTrace(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testSwitchString() { |
|
||||||
String var1 = ""; |
|
||||||
byte var3 = -1; |
|
||||||
switch(var1.hashCode()) { |
|
||||||
case 2112: |
|
||||||
if(var1.equals("BB")) { |
|
||||||
var3 = 1; |
|
||||||
} else if(var1.equals("Aa")) { |
|
||||||
var3 = 0; |
|
||||||
} |
|
||||||
break; |
|
||||||
case 3040: |
|
||||||
if(var1.equals("__")) { |
|
||||||
var3 = 2; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
switch(var3) { |
|
||||||
case 0: |
|
||||||
System.out.println("!"); |
|
||||||
break; |
|
||||||
case 1: |
|
||||||
System.out.println("?"); |
|
||||||
break; |
|
||||||
case 2: |
|
||||||
System.out.println("_"); |
|
||||||
break; |
|
||||||
default: |
|
||||||
System.out.println("#"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
@ -1,104 +0,0 @@ |
|||||||
package test.output; |
|
||||||
|
|
||||||
import java.io.FileReader; |
|
||||||
import java.io.IOException; |
|
||||||
import java.lang.reflect.Method; |
|
||||||
|
|
||||||
public class TestJavac8 { |
|
||||||
|
|
||||||
public static void main(String[] var0) { |
|
||||||
(new TestJavac8()).testLambda(); |
|
||||||
} |
|
||||||
|
|
||||||
public void testTryResources() throws IOException { |
|
||||||
FileReader var1 = new FileReader("file"); |
|
||||||
Throwable var2 = null; |
|
||||||
|
|
||||||
try { |
|
||||||
FileReader var3 = new FileReader("file"); |
|
||||||
Throwable var4 = null; |
|
||||||
|
|
||||||
try { |
|
||||||
System.out.println(); |
|
||||||
} catch (Throwable var27) { |
|
||||||
var4 = var27; |
|
||||||
throw var27; |
|
||||||
} finally { |
|
||||||
if(var3 != null) { |
|
||||||
if(var4 != null) { |
|
||||||
try { |
|
||||||
var3.close(); |
|
||||||
} catch (Throwable var26) { |
|
||||||
var4.addSuppressed(var26); |
|
||||||
} |
|
||||||
} else { |
|
||||||
var3.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} catch (Throwable var29) { |
|
||||||
var2 = var29; |
|
||||||
throw var29; |
|
||||||
} finally { |
|
||||||
if(var1 != null) { |
|
||||||
if(var2 != null) { |
|
||||||
try { |
|
||||||
var1.close(); |
|
||||||
} catch (Throwable var25) { |
|
||||||
var2.addSuppressed(var25); |
|
||||||
} |
|
||||||
} else { |
|
||||||
var1.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testMultiCatch() { |
|
||||||
try { |
|
||||||
Method var1 = this.getClass().getDeclaredMethod("foo", new Class[0]); |
|
||||||
} catch (SecurityException var2) { |
|
||||||
var2.printStackTrace(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
private void testSwitchString() { |
|
||||||
String var1 = ""; |
|
||||||
byte var3 = -1; |
|
||||||
switch(var1.hashCode()) { |
|
||||||
case 2112: |
|
||||||
if(var1.equals("BB")) { |
|
||||||
var3 = 1; |
|
||||||
} else if(var1.equals("Aa")) { |
|
||||||
var3 = 0; |
|
||||||
} |
|
||||||
break; |
|
||||||
case 3040: |
|
||||||
if(var1.equals("__")) { |
|
||||||
var3 = 2; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
switch(var3) { |
|
||||||
case 0: |
|
||||||
System.out.println("!"); |
|
||||||
break; |
|
||||||
case 1: |
|
||||||
System.out.println("?"); |
|
||||||
break; |
|
||||||
case 2: |
|
||||||
System.out.println("_"); |
|
||||||
break; |
|
||||||
default: |
|
||||||
System.out.println("#"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public void testLambda() { |
|
||||||
} |
|
||||||
} |
|
@ -1,187 +0,0 @@ |
|||||||
package test.util; |
|
||||||
|
|
||||||
import java.io.BufferedOutputStream; |
|
||||||
import java.io.File; |
|
||||||
import java.io.FileNotFoundException; |
|
||||||
import java.io.FileOutputStream; |
|
||||||
import java.io.IOException; |
|
||||||
import java.util.Collections; |
|
||||||
import java.util.HashSet; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
|
|
||||||
import de.fernflower.code.cfg.BasicBlock; |
|
||||||
import de.fernflower.code.cfg.ControlFlowGraph; |
|
||||||
import de.fernflower.modules.decompiler.StatEdge; |
|
||||||
import de.fernflower.modules.decompiler.sforms.DirectGraph; |
|
||||||
import de.fernflower.modules.decompiler.sforms.DirectNode; |
|
||||||
import de.fernflower.modules.decompiler.stats.Statement; |
|
||||||
import de.fernflower.modules.decompiler.vars.VarVersionEdge; |
|
||||||
import de.fernflower.modules.decompiler.vars.VarVersionNode; |
|
||||||
import de.fernflower.modules.decompiler.vars.VarVersionsGraph; |
|
||||||
|
|
||||||
public class DotExporter { |
|
||||||
|
|
||||||
|
|
||||||
public static String toDotFormat(Statement stat) { |
|
||||||
|
|
||||||
StringBuffer buffer = new StringBuffer(); |
|
||||||
|
|
||||||
buffer.append("digraph G {\r\n"); |
|
||||||
|
|
||||||
for(Statement st : stat.getStats()) { |
|
||||||
|
|
||||||
String sourceid = st.id + (st.getSuccessorEdges(StatEdge.TYPE_EXCEPTION).isEmpty()?"":"000000"); |
|
||||||
|
|
||||||
buffer.append(sourceid+" [shape=box,label=\""+sourceid+"\"];\r\n"); |
|
||||||
|
|
||||||
for(StatEdge edge : st.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL)) { |
|
||||||
String destid = edge.getDestination().id + (edge.getDestination().getSuccessorEdges(StatEdge.TYPE_EXCEPTION).isEmpty()?"":"000000"); |
|
||||||
|
|
||||||
buffer.append(sourceid+"->"+destid+";\r\n"); |
|
||||||
|
|
||||||
if(!stat.getStats().contains(edge.getDestination())) { |
|
||||||
buffer.append(destid+" [label=\""+destid+"\"];\r\n"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
for(StatEdge edge : st.getSuccessorEdges(StatEdge.TYPE_EXCEPTION)) { |
|
||||||
String destid = edge.getDestination().id + (edge.getDestination().getSuccessorEdges(StatEdge.TYPE_EXCEPTION).isEmpty()?"":"000000"); |
|
||||||
|
|
||||||
buffer.append(sourceid+" -> "+destid+" [style=dotted];\r\n"); |
|
||||||
|
|
||||||
if(!stat.getStats().contains(edge.getDestination())) { |
|
||||||
buffer.append(destid+" [label=\""+destid+"\"];\r\n"); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
buffer.append("}"); |
|
||||||
|
|
||||||
return buffer.toString(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
public static String toDotFormat(ControlFlowGraph graph, boolean showMultipleEdges) { |
|
||||||
|
|
||||||
StringBuffer buffer = new StringBuffer(); |
|
||||||
|
|
||||||
buffer.append("digraph G {\r\n"); |
|
||||||
|
|
||||||
List<BasicBlock> blocks = graph.getBlocks(); |
|
||||||
for(int i=0;i<blocks.size();i++) { |
|
||||||
BasicBlock block = (BasicBlock)blocks.get(i); |
|
||||||
|
|
||||||
buffer.append(block.id+" [shape=box,label=\""+block.id+"\"];\r\n"); |
|
||||||
|
|
||||||
|
|
||||||
List<BasicBlock> suc = block.getSuccs(); |
|
||||||
if(!showMultipleEdges) { |
|
||||||
HashSet<BasicBlock> set = new HashSet<BasicBlock>(); |
|
||||||
set.addAll(suc); |
|
||||||
suc = Collections.list(Collections.enumeration(set)); |
|
||||||
} |
|
||||||
for(int j=0;j<suc.size();j++) { |
|
||||||
buffer.append(block.id+"->"+((BasicBlock)suc.get(j)).id+";\r\n"); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
suc = block.getSuccExceptions(); |
|
||||||
if(!showMultipleEdges) { |
|
||||||
HashSet<BasicBlock> set = new HashSet<BasicBlock>(); |
|
||||||
set.addAll(suc); |
|
||||||
suc = Collections.list(Collections.enumeration(set)); |
|
||||||
} |
|
||||||
for(int j=0;j<suc.size();j++) { |
|
||||||
buffer.append(block.id+" -> "+((BasicBlock)suc.get(j)).id+" [style=dotted];\r\n"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
buffer.append("}"); |
|
||||||
|
|
||||||
return buffer.toString(); |
|
||||||
} |
|
||||||
|
|
||||||
public static String toDotFormat(VarVersionsGraph graph) { |
|
||||||
|
|
||||||
StringBuffer buffer = new StringBuffer(); |
|
||||||
|
|
||||||
buffer.append("digraph G {\r\n"); |
|
||||||
|
|
||||||
List<VarVersionNode> blocks = graph.nodes; |
|
||||||
for(int i=0;i<blocks.size();i++) { |
|
||||||
VarVersionNode block = blocks.get(i); |
|
||||||
|
|
||||||
buffer.append((block.var*1000+block.version)+" [shape=box,label=\""+block.var+"_"+block.version+"\"];\r\n"); |
|
||||||
|
|
||||||
for(VarVersionEdge edge: block.succs) { |
|
||||||
VarVersionNode dest = edge.dest; |
|
||||||
buffer.append((block.var*1000+block.version)+"->"+(dest.var*1000+dest.version)+(edge.type==VarVersionEdge.EDGE_PHANTOM?" [style=dotted]":"")+";\r\n"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
buffer.append("}"); |
|
||||||
|
|
||||||
return buffer.toString(); |
|
||||||
} |
|
||||||
|
|
||||||
public static String toDotFormat(DirectGraph graph) { |
|
||||||
|
|
||||||
StringBuffer buffer = new StringBuffer(); |
|
||||||
|
|
||||||
buffer.append("digraph G {\r\n"); |
|
||||||
|
|
||||||
List<DirectNode> blocks = graph.nodes; |
|
||||||
for(int i=0;i<blocks.size();i++) { |
|
||||||
DirectNode block = blocks.get(i); |
|
||||||
|
|
||||||
buffer.append(directBlockIdToDot(block.id)+" [shape=box,label=\""+directBlockIdToDot(block.id)+"\"];\r\n"); |
|
||||||
|
|
||||||
for(DirectNode dest: block.succs) { |
|
||||||
buffer.append(directBlockIdToDot(block.id)+"->"+directBlockIdToDot(dest.id)+";\r\n"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
buffer.append("}"); |
|
||||||
|
|
||||||
return buffer.toString(); |
|
||||||
} |
|
||||||
|
|
||||||
private static String directBlockIdToDot(String id) { |
|
||||||
id = id.replaceAll("_try", "999"); |
|
||||||
id = id.replaceAll("_tail", "888"); |
|
||||||
|
|
||||||
id = id.replaceAll("_init", "111"); |
|
||||||
id = id.replaceAll("_cond", "222"); |
|
||||||
id = id.replaceAll("_inc", "333"); |
|
||||||
return id; |
|
||||||
} |
|
||||||
|
|
||||||
public static void toDotFile(ControlFlowGraph graph, File file, boolean showMultipleEdges) throws FileNotFoundException, IOException { |
|
||||||
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); |
|
||||||
out.write(toDotFormat(graph, showMultipleEdges).getBytes()); |
|
||||||
out.close(); |
|
||||||
} |
|
||||||
|
|
||||||
public static void toDotFile(VarVersionsGraph graph, File file) throws FileNotFoundException, IOException { |
|
||||||
|
|
||||||
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); |
|
||||||
out.write(toDotFormat(graph).getBytes()); |
|
||||||
out.close(); |
|
||||||
} |
|
||||||
|
|
||||||
public static void toDotFile(DirectGraph graph, File file) throws FileNotFoundException, IOException { |
|
||||||
|
|
||||||
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); |
|
||||||
out.write(toDotFormat(graph).getBytes()); |
|
||||||
out.close(); |
|
||||||
} |
|
||||||
|
|
||||||
public static void toDotFile(Statement stat, File file) throws FileNotFoundException, IOException { |
|
||||||
|
|
||||||
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); |
|
||||||
out.write(toDotFormat(stat).getBytes()); |
|
||||||
out.close(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
package test.util; |
|
||||||
|
|
||||||
public class MemoryMonitor implements Runnable { |
|
||||||
|
|
||||||
public static boolean run = false; |
|
||||||
|
|
||||||
|
|
||||||
public void run() { |
|
||||||
|
|
||||||
while(run) { |
|
||||||
try { |
|
||||||
Thread.sleep(500); |
|
||||||
} catch(InterruptedException ex) { |
|
||||||
ex.printStackTrace(); |
|
||||||
} |
|
||||||
|
|
||||||
//Runtime.getRuntime().gc();
|
|
||||||
System.err.println((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/(1024*1024)); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,31 +0,0 @@ |
|||||||
package test.util; |
|
||||||
|
|
||||||
import java.util.HashMap; |
|
||||||
|
|
||||||
public class Timer { |
|
||||||
|
|
||||||
private static HashMap<String, Double> mapValue = new HashMap<String, Double>(); |
|
||||||
|
|
||||||
public static void addTime(int index, long value) { |
|
||||||
addTime(String.valueOf(index), value); |
|
||||||
} |
|
||||||
|
|
||||||
public static double getTime(int index) { |
|
||||||
return mapValue.get(String.valueOf(index)); |
|
||||||
} |
|
||||||
|
|
||||||
public static void addTime(String index, double value) { |
|
||||||
Double val = mapValue.get(index); |
|
||||||
if(val != null) { |
|
||||||
value+=val.doubleValue(); |
|
||||||
} |
|
||||||
mapValue.put(index, value); |
|
||||||
} |
|
||||||
|
|
||||||
public static double getTime(String index) { |
|
||||||
Double value = mapValue.get(index); |
|
||||||
return value==null?0:value.doubleValue(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
@ -1,71 +0,0 @@ |
|||||||
package test.util; |
|
||||||
|
|
||||||
import java.io.File; |
|
||||||
import java.io.FileOutputStream; |
|
||||||
import java.io.IOException; |
|
||||||
import java.io.InputStream; |
|
||||||
import java.io.OutputStream; |
|
||||||
import java.util.Enumeration; |
|
||||||
import java.util.zip.ZipEntry; |
|
||||||
import java.util.zip.ZipFile; |
|
||||||
import java.util.zip.ZipOutputStream; |
|
||||||
|
|
||||||
public class ZipStripper { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
|
|
||||||
try { |
|
||||||
String sourceFileName = args[0]; |
|
||||||
File sourceFile = new File(sourceFileName); |
|
||||||
|
|
||||||
File tempFile = new File(sourceFile.getParentFile(), "tmp31415926535.zip"); |
|
||||||
tempFile.createNewFile(); |
|
||||||
|
|
||||||
ZipOutputStream outTemp = new ZipOutputStream(new FileOutputStream(tempFile)); |
|
||||||
|
|
||||||
ZipFile archive = new ZipFile(sourceFile); |
|
||||||
|
|
||||||
Enumeration<? extends ZipEntry> en = archive.entries(); |
|
||||||
while(en.hasMoreElements()) { |
|
||||||
ZipEntry entr = en.nextElement(); |
|
||||||
|
|
||||||
outTemp.putNextEntry(new ZipEntry(entr.getName())); |
|
||||||
|
|
||||||
if(!entr.isDirectory()) { |
|
||||||
InputStream in = archive.getInputStream(entr); |
|
||||||
|
|
||||||
copyInputStream(in, outTemp); |
|
||||||
in.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
outTemp.flush(); |
|
||||||
outTemp.close(); |
|
||||||
|
|
||||||
archive.close(); |
|
||||||
|
|
||||||
String destFileName = args[1]; |
|
||||||
|
|
||||||
if(sourceFileName.equals(destFileName)) { |
|
||||||
sourceFile.delete(); |
|
||||||
} |
|
||||||
|
|
||||||
tempFile.renameTo(new File(destFileName)); |
|
||||||
|
|
||||||
} catch(Exception ex) { |
|
||||||
ex.printStackTrace(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public static void copyInputStream(InputStream in, OutputStream out)throws IOException { |
|
||||||
|
|
||||||
byte[] buffer = new byte[1024]; |
|
||||||
int len; |
|
||||||
|
|
||||||
while((len = in.read(buffer)) >= 0) { |
|
||||||
out.write(buffer, 0, len); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,68 +0,0 @@ |
|||||||
import java.text.DecimalFormat; |
|
||||||
|
|
||||||
import com.vladium.utils.timing.ITimer; |
|
||||||
import com.vladium.utils.timing.TimerFactory; |
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* A demo class to show off the higher resolution available from HRTimer class
|
|
||||||
* and to investigate the resolution offered by Java "time-related" |
|
||||||
* methods other than System.currentTimeMillis().<P> |
|
||||||
* |
|
||||||
* Make sure that hrtlib.dll JNI lib is in java.library.path or TimerFactory |
|
||||||
* will fall back to the Java system timer: |
|
||||||
* <PRE> |
|
||||||
* >java -Djava.library.path=(dir containing hrtlib.dll) HRTimerResolution |
|
||||||
* </PRE> |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
public class HRTimerResolution |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
public static void main (final String [] args) throws Exception |
|
||||||
{ |
|
||||||
final DecimalFormat format = new DecimalFormat (); |
|
||||||
format.setMinimumFractionDigits (3); |
|
||||||
format.setMaximumFractionDigits (3); |
|
||||||
|
|
||||||
// create an ITimer using the Factory class:
|
|
||||||
final ITimer timer = TimerFactory.newTimer (); |
|
||||||
|
|
||||||
// JIT/hotspot warmup:
|
|
||||||
for (int i = 0; i < 3000; ++ i) |
|
||||||
{ |
|
||||||
timer.start (); |
|
||||||
timer.stop (); |
|
||||||
timer.getDuration (); |
|
||||||
timer.reset (); |
|
||||||
} |
|
||||||
|
|
||||||
final Object lock = new Object (); // this is used by monitor.wait() below
|
|
||||||
|
|
||||||
for (int i = 0; i < 5; ++ i) |
|
||||||
{ |
|
||||||
timer.start (); |
|
||||||
|
|
||||||
// uncomment various lines below to see the resolution
|
|
||||||
// offered by other Java time-related methods; with all
|
|
||||||
// lines commented out this loop reports time elapsed
|
|
||||||
// between successive calls to t.start() and t.stop(), thus
|
|
||||||
// providing an estimate for timer's raw resolution
|
|
||||||
|
|
||||||
synchronized (lock) { lock.wait (1); } |
|
||||||
//Thread.currentThread ().sleep (1);
|
|
||||||
//Thread.currentThread ().sleep (0, 500);
|
|
||||||
//Thread.currentThread ().join (1);
|
|
||||||
|
|
||||||
timer.stop (); |
|
||||||
|
|
||||||
System.out.println ("duration = " |
|
||||||
+ format.format (timer.getDuration ()) + " ms"); |
|
||||||
timer.reset (); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // end of class
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,31 +0,0 @@ |
|||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* A simple class to see what the Java system timer resolution is on your |
|
||||||
* system. |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
public class SystemTimerResolution |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
public static void main (final String [] args) |
|
||||||
{ |
|
||||||
// JIT/hotspot warmup:
|
|
||||||
for (int r = 0; r < 3000; ++ r) System.currentTimeMillis (); |
|
||||||
|
|
||||||
long time = System.currentTimeMillis (), time_prev = time; |
|
||||||
|
|
||||||
for (int i = 0; i < 5; ++ i) |
|
||||||
{ |
|
||||||
// busy wait until system time changes:
|
|
||||||
while (time == time_prev) |
|
||||||
time = System.currentTimeMillis (); |
|
||||||
|
|
||||||
System.out.println ("delta = " + (time - time_prev) + " ms"); |
|
||||||
time_prev = time; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // end of class
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,86 +0,0 @@ |
|||||||
|
|
||||||
package com.vladium.utils.timing; |
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* A package-private implementation of {@link ITimer} based around native |
|
||||||
* <code>getTime</code> method. It will work on any platform for which a JNI |
|
||||||
* implementation of "hrtlib" library is available.<P> |
|
||||||
* |
|
||||||
* {@link TimerFactory} acts as the Factory for this class.<P> |
|
||||||
* |
|
||||||
* MT-safety: an instance of this class is safe to be used within the same |
|
||||||
* thread only. |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
final class HRTimer implements ITimer, ITimerConstants |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
public void start () |
|
||||||
{ |
|
||||||
if (DO_STATE_CHECKS) |
|
||||||
{ |
|
||||||
if (m_state != STATE_READY) |
|
||||||
throw new IllegalStateException (this + ": start() must be called from READY state, current state is " + STATE_NAMES [m_state]); |
|
||||||
} |
|
||||||
|
|
||||||
if (DO_STATE_CHECKS) m_state = STATE_STARTED; |
|
||||||
m_data = getTime (); |
|
||||||
} |
|
||||||
|
|
||||||
public void stop () |
|
||||||
{ |
|
||||||
// latch stop time in a local var before doing anything else:
|
|
||||||
final double data = getTime (); |
|
||||||
|
|
||||||
if (DO_STATE_CHECKS) |
|
||||||
{ |
|
||||||
if (m_state != STATE_STARTED) |
|
||||||
throw new IllegalStateException (this + ": stop() must be called from STARTED state, current state is " + STATE_NAMES [m_state]); |
|
||||||
} |
|
||||||
|
|
||||||
m_data = data - m_data; |
|
||||||
if (DO_STATE_CHECKS) m_state = STATE_STOPPED; |
|
||||||
} |
|
||||||
|
|
||||||
public double getDuration () |
|
||||||
{ |
|
||||||
if (DO_STATE_CHECKS) |
|
||||||
{ |
|
||||||
if (m_state != STATE_STOPPED) |
|
||||||
throw new IllegalStateException (this + ": getDuration() must be called from STOPPED state, current state is " + STATE_NAMES [m_state]); |
|
||||||
} |
|
||||||
|
|
||||||
return m_data; |
|
||||||
} |
|
||||||
|
|
||||||
public void reset () |
|
||||||
{ |
|
||||||
if (DO_STATE_CHECKS) m_state = STATE_READY; |
|
||||||
} |
|
||||||
|
|
||||||
// protected: .............................................................
|
|
||||||
|
|
||||||
// package: ...............................................................
|
|
||||||
|
|
||||||
// private: ...............................................................
|
|
||||||
|
|
||||||
/* |
|
||||||
* This is supposed to return a fractional count of milliseconds elapsed |
|
||||||
* since some indeterminate moment in the past. The exact starting point |
|
||||||
* is not relevant because this timer class reports time differences only. |
|
||||||
* |
|
||||||
* JNI code in HRTIMER_LIB library is supposed to implement this.
*/ |
|
||||||
private static native double getTime (); |
|
||||||
|
|
||||||
|
|
||||||
private int m_state; // used to keep track of timer state
|
|
||||||
private double m_data; // timing data
|
|
||||||
|
|
||||||
private static final String HRTIMER_LIB = "hrtlib"; |
|
||||||
|
|
||||||
|
|
||||||
} // end of class
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,54 +0,0 @@ |
|||||||
|
|
||||||
package com.vladium.utils.timing; |
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* A simple interface for measuring time intervals. An instance of this goes |
|
||||||
* through the following lifecycle states: |
|
||||||
* <DL> |
|
||||||
* <DT> <EM>ready</EM> |
|
||||||
* <DD> timer is ready to start a new measurement |
|
||||||
* <DT> <EM>started</EM> |
|
||||||
* <DD> timer has recorded the starting time interval point |
|
||||||
* <DT> <EM>stopped</EM> |
|
||||||
* <DD> timer has recorded the ending time interval point |
|
||||||
* </DL> |
|
||||||
* See individual methods for details.<P> |
|
||||||
* |
|
||||||
* If this library has been compiled with {@link ITimerConstants#DO_STATE_CHECKS} |
|
||||||
* set to 'true' the implementation will enforce this lifecycle model and throw |
|
||||||
* IllegalStateException when it is violated. |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
public interface ITimer |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
/** |
|
||||||
* Starts a new time interval and advances this timer instance to 'started' |
|
||||||
* state. This method can be called from 'ready' state only.
*/ |
|
||||||
void start (); |
|
||||||
|
|
||||||
/** |
|
||||||
* Terminates the current time interval and advances this timer instance to |
|
||||||
* 'stopped' state. Interval duration will be available via |
|
||||||
* {@link #getDuration()} method. This method can be called from 'started' |
|
||||||
* state only.
*/ |
|
||||||
void stop (); |
|
||||||
|
|
||||||
/** |
|
||||||
* Returns the duration of the time interval that elapsed between the last |
|
||||||
* calls to {@link #start()} and {@link #stop()}. This method can be called |
|
||||||
* any number of times from 'stopped' state and will return the same value |
|
||||||
* each time.<P> |
|
||||||
*
* @return interval duration in milliseconds
*/ |
|
||||||
double getDuration (); |
|
||||||
|
|
||||||
/** |
|
||||||
* This method can be called from any state and will reset this timer |
|
||||||
* instance back to 'ready' state.
*/ |
|
||||||
void reset (); |
|
||||||
|
|
||||||
} // end of interface
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,31 +0,0 @@ |
|||||||
|
|
||||||
package com.vladium.utils.timing; |
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* A package-private collection of constants used by {@link ITimer} implementations |
|
||||||
* in <code>HRTimer</code> and <code>JavaSystemTimer</code> classes. |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
interface ITimerConstants |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
/** |
|
||||||
* Conditional compilation flag to enable/disable state checking in timer |
|
||||||
* implementations. Just about the only reason you might want to disable |
|
||||||
* this is to reduce the timer overhead, but in practice the gain is very |
|
||||||
* small.
*/ |
|
||||||
static final boolean DO_STATE_CHECKS = true; |
|
||||||
|
|
||||||
/** |
|
||||||
* Timer state enumeration.
*/ |
|
||||||
static final int STATE_READY = 0, STATE_STARTED = 1, STATE_STOPPED = 2; |
|
||||||
|
|
||||||
/** |
|
||||||
* User-friendly timer state names indexed by their state values.
*/ |
|
||||||
static final String [] STATE_NAMES = {"READY", "STARTED", "STOPPED"}; |
|
||||||
|
|
||||||
} // end of interface
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,74 +0,0 @@ |
|||||||
|
|
||||||
package com.vladium.utils.timing; |
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* A package-private implementation of {@link ITimer} based around Java system |
|
||||||
* timer [<code>System.currentTimeMillis()</code> method]. It is used when |
|
||||||
* <code>HRTimer</code> implementation is unavailable.<P> |
|
||||||
* |
|
||||||
* {@link TimerFactory} acts as the Factory for this class.<P> |
|
||||||
* |
|
||||||
* MT-safety: an instance of this class is safe to be used within the same |
|
||||||
* thread only. |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
final class JavaSystemTimer implements ITimer, ITimerConstants |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
public void start () |
|
||||||
{ |
|
||||||
if (DO_STATE_CHECKS) |
|
||||||
{ |
|
||||||
if (m_state != STATE_READY) |
|
||||||
throw new IllegalStateException (this + ": start() must be called from READY state, current state is " + STATE_NAMES [m_state]); |
|
||||||
} |
|
||||||
|
|
||||||
if (DO_STATE_CHECKS) m_state = STATE_STARTED; |
|
||||||
m_data = System.currentTimeMillis (); |
|
||||||
} |
|
||||||
|
|
||||||
public void stop () |
|
||||||
{ |
|
||||||
// latch stop time in a local var before doing anything else:
|
|
||||||
final long data = System.currentTimeMillis (); |
|
||||||
|
|
||||||
if (DO_STATE_CHECKS) |
|
||||||
{ |
|
||||||
if (m_state != STATE_STARTED) |
|
||||||
throw new IllegalStateException (this + ": stop() must be called from STARTED state, current state is " + STATE_NAMES [m_state]); |
|
||||||
} |
|
||||||
|
|
||||||
m_data = data - m_data; |
|
||||||
if (DO_STATE_CHECKS) m_state = STATE_STOPPED; |
|
||||||
} |
|
||||||
|
|
||||||
public double getDuration () |
|
||||||
{ |
|
||||||
if (DO_STATE_CHECKS) |
|
||||||
{ |
|
||||||
if (m_state != STATE_STOPPED) |
|
||||||
throw new IllegalStateException (this + ": getDuration() must be called from STOPPED state, current state is " + STATE_NAMES [m_state]); |
|
||||||
} |
|
||||||
|
|
||||||
return m_data; |
|
||||||
} |
|
||||||
|
|
||||||
public void reset () |
|
||||||
{ |
|
||||||
if (DO_STATE_CHECKS) m_state = STATE_READY; |
|
||||||
} |
|
||||||
|
|
||||||
// protected: .............................................................
|
|
||||||
|
|
||||||
// package: ...............................................................
|
|
||||||
|
|
||||||
// private: ...............................................................
|
|
||||||
|
|
||||||
private int m_state; // used to keep track of timer state
|
|
||||||
private long m_data; // timing data
|
|
||||||
|
|
||||||
} // end of class
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,74 +0,0 @@ |
|||||||
|
|
||||||
package com.vladium.utils.timing; |
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
/** |
|
||||||
* This non-instantiable non-extendible class acts as a Factory for {@link ITimer} |
|
||||||
* implementations. |
|
||||||
* |
|
||||||
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002 |
|
||||||
*/ |
|
||||||
public abstract class TimerFactory |
|
||||||
{ |
|
||||||
// public: ................................................................
|
|
||||||
|
|
||||||
private static final String HRTIMER_LIB = "hrtlib"; |
|
||||||
|
|
||||||
/** |
|
||||||
* Creates a new instance of {@link ITimer} which is returned in 'ready' |
|
||||||
* state. If the JNI-based/high-resolution implementation is not available |
|
||||||
* this will return an instance of <code>JavaSystemTimer</code>, so this |
|
||||||
* method is guaranteed not to fail. |
|
||||||
* |
|
||||||
* @return ITimer a new timer instance in 'ready' state [never null]
*/ |
|
||||||
|
|
||||||
public static void initialize(String path) { |
|
||||||
|
|
||||||
UnsatisfiedLinkError exception = null; |
|
||||||
|
|
||||||
try { |
|
||||||
System.loadLibrary (HRTIMER_LIB); |
|
||||||
} catch (UnsatisfiedLinkError e) { |
|
||||||
if(path != null) { |
|
||||||
try { |
|
||||||
System.load(path); |
|
||||||
} catch (UnsatisfiedLinkError ex) { |
|
||||||
exception = ex; |
|
||||||
} |
|
||||||
} else { |
|
||||||
exception = e; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if(exception != null) { |
|
||||||
System.out.println ("native lib '" + HRTIMER_LIB |
|
||||||
+ "' not found in 'java.library.path': " |
|
||||||
+ System.getProperty ("java.library.path") |
|
||||||
+path==null?"":(" or in "+path)); |
|
||||||
|
|
||||||
throw exception; // re-throw
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static ITimer newTimer () |
|
||||||
{ |
|
||||||
// try
|
|
||||||
// {
|
|
||||||
return new HRTimer (); |
|
||||||
// }
|
|
||||||
// catch (Throwable t)
|
|
||||||
// {
|
|
||||||
// return new JavaSystemTimer ();
|
|
||||||
// }
|
|
||||||
} |
|
||||||
|
|
||||||
// protected: .............................................................
|
|
||||||
|
|
||||||
// package: ...............................................................
|
|
||||||
|
|
||||||
// private: ...............................................................
|
|
||||||
|
|
||||||
private TimerFactory () {} // prevent subclassing
|
|
||||||
|
|
||||||
} // end of class
|
|
||||||
// ----------------------------------------------------------------------------
|
|
@ -1,71 +0,0 @@ |
|||||||
/* ------------------------------------------------------------------------- */ |
|
||||||
/*
|
|
||||||
* A win32 implementation of JNI methods in com.vladium.utils.timing.HRTimer |
|
||||||
* class. The author compiled it using Microsoft Visual C++ but the code |
|
||||||
* should be easy to use with any compiler for win32 platform. |
|
||||||
* |
|
||||||
* For simplicity, this implementaion assumes JNI 1.2+ and omits error handling. |
|
||||||
* |
|
||||||
* (C) 2002, Vladimir Roubtsov [vroubtsov@illinoisalumni.org] |
|
||||||
*/ |
|
||||||
/* ------------------------------------------------------------------------- */ |
|
||||||
|
|
||||||
#if !defined NDEBUG |
|
||||||
#include <stdio.h> |
|
||||||
#endif // NDEBUG
|
|
||||||
|
|
||||||
#include <windows.h> |
|
||||||
|
|
||||||
#include "com_vladium_utils_timing_HRTimer.h" |
|
||||||
|
|
||||||
// scale factor for converting a performancce counter reading into milliseconds:
|
|
||||||
static jdouble s_scaleFactor; |
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */ |
|
||||||
|
|
||||||
/*
|
|
||||||
* This method was added in JNI 1.2. It is executed once before any other |
|
||||||
* methods are called and is ostensibly for negotiating JNI spec versions, but |
|
||||||
* can also be conveniently used for initializing variables that will not |
|
||||||
* change throughout the lifetime of this process. |
|
||||||
*/ |
|
||||||
JNIEXPORT jint JNICALL |
|
||||||
JNI_OnLoad (JavaVM * vm, void * reserved) |
|
||||||
{ |
|
||||||
LARGE_INTEGER counterFrequency; |
|
||||||
|
|
||||||
QueryPerformanceFrequency (& counterFrequency); |
|
||||||
|
|
||||||
// NOTE: counterFrequency will be zero for a machine that does not have
|
|
||||||
// support for a high-resolution counter. This is only likely for very
|
|
||||||
// old hardware but for a robust implementation you should handle this
|
|
||||||
// case.
|
|
||||||
|
|
||||||
#if !defined NDEBUG |
|
||||||
printf ("PCFrequency called: %I64d\n", counterFrequency.QuadPart); |
|
||||||
#endif |
|
||||||
|
|
||||||
s_scaleFactor = counterFrequency.QuadPart / 1000.0; |
|
||||||
|
|
||||||
|
|
||||||
return JNI_VERSION_1_2; |
|
||||||
} |
|
||||||
/* ......................................................................... */ |
|
||||||
|
|
||||||
/*
|
|
||||||
* Class: com_vladium_utils_timing_HRTimer |
|
||||||
* Method: getTime |
|
||||||
* Signature: ()D |
|
||||||
*/ |
|
||||||
JNIEXPORT jdouble JNICALL |
|
||||||
Java_com_vladium_utils_timing_HRTimer_getTime (JNIEnv * e, jclass cls) |
|
||||||
{ |
|
||||||
LARGE_INTEGER counterReading; |
|
||||||
|
|
||||||
QueryPerformanceCounter (& counterReading); |
|
||||||
|
|
||||||
return counterReading.QuadPart / s_scaleFactor; |
|
||||||
} |
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */ |
|
||||||
/* end of file */ |
|
@ -1,22 +0,0 @@ |
|||||||
/* DO NOT EDIT THIS FILE - it is machine generated */ |
|
||||||
#include <jni.h> |
|
||||||
/* Header for class com_vladium_utils_timing_HRTimer */ |
|
||||||
|
|
||||||
#ifndef _Included_com_vladium_utils_timing_HRTimer |
|
||||||
#define _Included_com_vladium_utils_timing_HRTimer |
|
||||||
#ifdef __cplusplus |
|
||||||
extern "C" { |
|
||||||
#endif |
|
||||||
|
|
||||||
/*
|
|
||||||
* Class: com_vladium_utils_timing_HRTimer |
|
||||||
* Method: getTime |
|
||||||
* Signature: ()D |
|
||||||
*/ |
|
||||||
JNIEXPORT jdouble JNICALL |
|
||||||
Java_com_vladium_utils_timing_HRTimer_getTime (JNIEnv *, jclass); |
|
||||||
|
|
||||||
#ifdef __cplusplus |
|
||||||
} |
|
||||||
#endif |
|
||||||
#endif |
|
Loading…
Reference in new issue