From 63aacf14bf0866eaa698725af2c5bebc8b45213c Mon Sep 17 00:00:00 2001 From: rtrimana Date: Wed, 26 Jun 2019 11:54:50 -0700 Subject: [PATCH] Upgrading/adapting fixes to Groovy 2.5.7 from Groovy 2.4.8. --- examples/Empty.groovy | 17 ++++++++++------- examples/Reflection.java | 4 ++-- src/classes/java/lang/Class.java | 3 +++ src/classes/java/lang/Thread.java | 7 ++++++- src/classes/java/lang/reflect/Method.java | 2 +- .../reflectiveObjects/GenericArrayTypeImpl.java | 1 + .../ParameterizedTypeImpl.java | 1 + .../reflectiveObjects/TypeVariableImpl.java | 1 + .../reflectiveObjects/WildcardTypeImpl.java | 2 +- .../gov/nasa/jpf/vm/JPF_java_lang_Thread.java | 3 ++- 10 files changed, 28 insertions(+), 13 deletions(-) diff --git a/examples/Empty.groovy b/examples/Empty.groovy index 1b7beeb..4c130be 100644 --- a/examples/Empty.groovy +++ b/examples/Empty.groovy @@ -4,25 +4,28 @@ class Empty { def installed() { // This is a standard debug statement in Groovy //log.debug "Installed with settings: ${settings}" - int x = 5; - int y = 6; - int result = x + y; - return result; + //int x = 5; + //int y = 6; + //int result = x + y; + //return result; + println "installed() is called!" //initialize() } // This function is where you initialize callbacks for event listeners - //def initialize() { + def initialize() { // The subscribe function takes a input, a state, and a callback method //subscribe(contact, "contact.open", openHandler) //subscribe(contact, "contact.closed", closedHandler) - //} + println "initialize() is called!" + } static void main(String[] args) { //Empty emp = new Empty(); //int result = emp.installed(); //println result; - println "Test" + //emp.installed() + println "End of call!" } } diff --git a/examples/Reflection.java b/examples/Reflection.java index ff80688..cc13e07 100644 --- a/examples/Reflection.java +++ b/examples/Reflection.java @@ -177,7 +177,7 @@ public class Reflection { Type returnType = method.getGenericReturnType(); System.out.println(returnType);*/ - /* TODO: Enumerate all methods in Class.class + /* TODO: Enumerate all methods in Class.class */ Method[] methods = Class.class.getMethods(); for(Method mth : methods) { System.out.println("==========================="); @@ -189,7 +189,7 @@ public class Reflection { System.out.println(); Type returnType = mth.getGenericReturnType(); System.out.println(returnType + "\n"); - }*/ + } /*Class[] parameterTypes = methods[0].getParameterTypes(); for(Class parameterType: parameterTypes){ diff --git a/src/classes/java/lang/Class.java b/src/classes/java/lang/Class.java index 00a55b0..3d21d02 100644 --- a/src/classes/java/lang/Class.java +++ b/src/classes/java/lang/Class.java @@ -349,6 +349,9 @@ public final class Class implements Serializable, GenericDeclaration, Type, A throw new UnsupportedOperationException(); } + // TODO: Fix for Groovy's model-checking + transient ClassValue.ClassValueMap classValueMap; + public boolean isSynthetic (){ final int SYNTHETIC = 0x00001000; return (getModifiers() & SYNTHETIC) != 0; diff --git a/src/classes/java/lang/Thread.java b/src/classes/java/lang/Thread.java index 8c538f5..c9fff91 100644 --- a/src/classes/java/lang/Thread.java +++ b/src/classes/java/lang/Thread.java @@ -71,7 +71,7 @@ public class Thread implements Runnable { // used to store Thread.stop() exceptions Throwable stopException; - + private volatile UncaughtExceptionHandler uncaughtExceptionHandler; // null by default @@ -144,8 +144,13 @@ public class Thread implements Runnable { init0(this.group, target, this.name, stackSize); initThreadLocals(cur); + + // TODO: Fix for Groovy's model-checking + this.tid = this.getId(); } + private long tid; + // this takes care of ThreadInfo initialization native void init0 (ThreadGroup group, Runnable target, String name, long stackSize); diff --git a/src/classes/java/lang/reflect/Method.java b/src/classes/java/lang/reflect/Method.java index cc6f57b..a24a30e 100644 --- a/src/classes/java/lang/reflect/Method.java +++ b/src/classes/java/lang/reflect/Method.java @@ -41,9 +41,9 @@ public final class Method extends AccessibleObject implements Member { public native int getModifiers(); public native Class getReturnType(); public native Class[] getParameterTypes(); - public native Type[] getGenericParameterTypes(); public native Class[] getExceptionTypes(); // TODO: Fix for Groovy's model-checking + public native Type[] getGenericParameterTypes(); public native Type getGenericReturnType(); @Override diff --git a/src/classes/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.java b/src/classes/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.java index 1d8063b..ad0bca9 100644 --- a/src/classes/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.java +++ b/src/classes/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.java @@ -4,6 +4,7 @@ import java.lang.reflect.GenericArrayType; import java.lang.reflect.Type; import java.util.Objects; +// TODO: Fix for Groovy's model-checking /** * MJI model class for sun.reflect.generics.reflectiveObjects.GenericArrayTypeImpl * diff --git a/src/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java b/src/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java index 6b105e6..809dbf4 100644 --- a/src/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java +++ b/src/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java @@ -10,6 +10,7 @@ import java.lang.reflect.TypeVariable; import java.util.Arrays; import java.util.Objects; +// TODO: Fix for Groovy's model-checking /** * MJI model class for sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl * diff --git a/src/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java b/src/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java index 56a544f..a10eb87 100644 --- a/src/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java +++ b/src/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java @@ -11,6 +11,7 @@ import java.util.Objects; import sun.reflect.generics.factory.GenericsFactory; import sun.reflect.generics.tree.FieldTypeSignature; +// TODO: Fix for Groovy's model-checking /** * MJI model class for sun.reflect.generics.reflectiveObjects.TypeVariableImpl * diff --git a/src/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java b/src/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java index 865c202..5a4fdaf 100644 --- a/src/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java +++ b/src/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java @@ -8,7 +8,7 @@ import sun.reflect.generics.tree.FieldTypeSignature; import sun.reflect.generics.visitor.Reifier; import java.util.Arrays; - +// TODO: Fix for Groovy's model-checking /** * MJI model class for sun.reflect.generics.reflectiveObjects.WildcardTypeImpl * diff --git a/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Thread.java b/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Thread.java index 11362aa..7533a9a 100644 --- a/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Thread.java +++ b/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Thread.java @@ -42,7 +42,8 @@ public class JPF_java_lang_Thread extends NativePeer { public void init0__Ljava_lang_ThreadGroup_2Ljava_lang_Runnable_2Ljava_lang_String_2J__V (MJIEnv env, int objRef, int groupRef, int runnableRef, int nameRef, long stackSize) { VM vm = env.getVM(); - + + // TODO: Fix for Groovy's model-checking // we only need to create the ThreadInfo - its initialization will take care // of proper linkage to the java.lang.Thread object (objRef) vm.createThreadInfo( objRef, groupRef, runnableRef, nameRef); -- 2.34.1