Skip to content

Added missing packaging tasks on Gradle build #84

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 15, 2018
Merged

Added missing packaging tasks on Gradle build #84

merged 2 commits into from
Jun 15, 2018

Conversation

jeandersonbc
Copy link
Collaborator

No description provided.

@cyrille-artho
Copy link
Member

The patch seems functionally correct, but there is a lot of duplication.
Can you please check if you can set version and other variables in an intermediate step that can be shared, and if it is possible to share include settings?

@jeandersonbc
Copy link
Collaborator Author

@cyrille-artho I can take a look at it but, In your opinion, shouldn't this change be part of a general cleanup on the build script?

@cyrille-artho cyrille-artho merged commit 2df3244 into javapathfinder:gradle Jun 15, 2018
@cyrille-artho
Copy link
Member

OK, we can do this as a clean-up. In that case, I'll merge this PR and close its corresponding issue; please make a new issue for the clean-up.

gayanW added a commit to gayanW/jpf-core that referenced this pull request Jul 19, 2018
JVMClassInfo.Initializer#setBootstrapMethod assumes to have a bootstrap
method with a structure similar to the following (with 3 bootstrap
method arguments)

BootstrapMethods:
  0: javapathfinder#83 REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
    Method arguments:
      javapathfinder#84 (Ljava/lang/Object;)Ljava/lang/Object;
      javapathfinder#85 REF_invokeInterface java/lang/annotation/Annotation.annotationType:()Ljava/lang/Class;
      javapathfinder#86 (Ljava/lang/annotation/Annotation;)Ljava/lang/Class;

But if JPF encounters an bootstrap method with arbitary numer of
arguments such as the StringConcatFactory.makeConcatWithConstants which
have only one bootstrap method argument it results in an
ArrayIndexOutOfBoundsException exception:

[junit] java.lang.ArrayIndexOutOfBoundsException: 1
[junit] 	at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:93)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.setBootstrapMethod(ClassFile.java:659)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.parseBootstrapMethodAttr(ClassFile.java:1422)
[junit] 	at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setClassAttribute(JVMClassInfo.java:80)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.setClassAttribute(ClassFile.java:636)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.parseClassAttributes(ClassFile.java:1306)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.parse(ClassFile.java:875)
[junit] 	at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.<init>(JVMClassInfo.java:48)

This prevents the above exception from being thrown, by adding a new
constructor BootstrapMethodInfo#BootstrapMethodInfo(enclosingClass,
cpArgs) for handling bootstrap methods with arbitrary number of
bootstrap method arguments, without evaluating cpArgs in
JVMClassInfo.Initializer#setBootstrapMethod.
gayanW added a commit to gayanW/jpf-core that referenced this pull request Jul 19, 2018
JVMClassInfo.Initializer#setBootstrapMethod assumes to have a bootstrap
method with a structure similar to the following (with 3 bootstrap
method arguments)

BootstrapMethods:
  0: javapathfinder#83 REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
    Method arguments:
      javapathfinder#84 (Ljava/lang/Object;)Ljava/lang/Object;
      javapathfinder#85 REF_invokeInterface java/lang/annotation/Annotation.annotationType:()Ljava/lang/Class;
      javapathfinder#86 (Ljava/lang/annotation/Annotation;)Ljava/lang/Class;

In case JPF encounters an bootstrap method with arbitrary number of
arguments such as the StringConcatFactory.makeConcatWithConstants which
have only one bootstrap method argument
JVMClassInfo.Initializer#setBootstrapMethod throws an
ArrayIndexOutOfBoundsException exception:

[junit] java.lang.ArrayIndexOutOfBoundsException: 1
[junit] 	at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:93)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.setBootstrapMethod(ClassFile.java:659)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.parseBootstrapMethodAttr(ClassFile.java:1422)
[junit] 	at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setClassAttribute(JVMClassInfo.java:80)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.setClassAttribute(ClassFile.java:636)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.parseClassAttributes(ClassFile.java:1306)
[junit] 	at gov.nasa.jpf.jvm.ClassFile.parse(ClassFile.java:875)
[junit] 	at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.<init>(JVMClassInfo.java:48)

This prevents the above exception from being thrown, by adding a new
constructor BootstrapMethodInfo#BootstrapMethodInfo(enclosingClass,
cpArgs) for handling bootstrap methods with arbitrary number of
bootstrap method arguments, without evaluating cpArgs within
JVMClassInfo.Initializer#setBootstrapMethod.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants