]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/experimentation/RecursiveInitialization.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / tests / org / simantics / scl / compiler / tests / experimentation / RecursiveInitialization.java
diff --git a/bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/experimentation/RecursiveInitialization.java b/bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/experimentation/RecursiveInitialization.java
deleted file mode 100644 (file)
index 5f5d20d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.simantics.scl.compiler.tests.experimentation;\r
-\r
-import java.io.PrintWriter;\r
-import java.lang.reflect.Method;\r
-import java.util.concurrent.atomic.AtomicReference;\r
-\r
-import org.objectweb.asm.ClassVisitor;\r
-import org.objectweb.asm.ClassWriter;\r
-import org.objectweb.asm.MethodVisitor;\r
-import org.objectweb.asm.Opcodes;\r
-import org.objectweb.asm.util.TraceClassVisitor;\r
-\r
-public class RecursiveInitialization {\r
-\r
-    public static void main(String[] args) throws Exception {\r
-        ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS);\r
-        ClassVisitor classVisitor = new TraceClassVisitor(classWriter, new PrintWriter(System.out));\r
-        classVisitor.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC, "test/Test", null, "java/lang/Object", new String[0]);\r
-        MethodVisitor methodWriter = classVisitor.visitMethod(\r
-                Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC,\r
-                "main", "()Ljava/lang/Object;", null, null);\r
-        \r
-        methodWriter.visitCode();        \r
-        methodWriter.visitTypeInsn(Opcodes.NEW, "java/util/concurrent/atomic/AtomicReference");\r
-        methodWriter.visitVarInsn(Opcodes.ASTORE, 2);\r
-\r
-        methodWriter.visitTypeInsn(Opcodes.NEW, "java/util/concurrent/atomic/AtomicReference");\r
-        methodWriter.visitVarInsn(Opcodes.ASTORE, 1);\r
-        \r
-        methodWriter.visitVarInsn(Opcodes.ALOAD, 2);\r
-        methodWriter.visitVarInsn(Opcodes.ALOAD, 1);\r
-        //methodWriter.visitInsn(Opcodes.ACONST_NULL);\r
-        methodWriter.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/concurrent/atomic/AtomicReference", "<init>", "(Ljava/lang/Object;)V", false);\r
-        \r
-        methodWriter.visitVarInsn(Opcodes.ALOAD, 1);\r
-        methodWriter.visitVarInsn(Opcodes.ALOAD, 2);\r
-        methodWriter.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/concurrent/atomic/AtomicReference", "<init>", "(Ljava/lang/Object;)V", false);\r
-\r
-        methodWriter.visitVarInsn(Opcodes.ALOAD, 2);\r
-        methodWriter.visitInsn(Opcodes.ARETURN);\r
-        methodWriter.visitMaxs(0, 0);\r
-        methodWriter.visitEnd();\r
-        \r
-        byte[] bytes = classWriter.toByteArray();\r
-        ClassLoader classLoader = new ClassLoader() {\r
-            @Override\r
-            protected Class<?> findClass(String name) throws ClassNotFoundException {\r
-                if(!name.equals("test.Test"))\r
-                    throw new ClassNotFoundException();\r
-                return defineClass("test.Test", bytes, 0, bytes.length);\r
-            }\r
-        };\r
-        Class<?> clazz = classLoader.loadClass("test.Test");\r
-        Method method = clazz.getMethod("main");\r
-        AtomicReference<Object> result = (AtomicReference<Object>)method.invoke(null);\r
-        System.out.println(result.hashCode());\r
-        //System.out.println(result.get().hashCode());\r
-    }\r
-    \r
-}\r