Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
DiSL
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DiSL
DiSL
Commits
861fafb1
Commit
861fafb1
authored
Nov 12, 2018
by
Vít Kabele
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Annotation package merged
parent
1ce50ba6
Pipeline
#3380
passed with stages
in 2 minutes and 58 seconds
Changes
67
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
67 changed files
with
127 additions
and
147 deletions
+127
-147
.classpath
.classpath
+1
-0
build.properties
build.properties
+13
-10
build.xml
build.xml
+1
-0
disl/src/src-annotation/ch/usi/dag/disl/After.java
disl/src/src-annotation/ch/usi/dag/disl/After.java
+1
-1
disl/src/src-annotation/ch/usi/dag/disl/AfterReturning.java
disl/src/src-annotation/ch/usi/dag/disl/AfterReturning.java
+1
-1
disl/src/src-annotation/ch/usi/dag/disl/AfterThrowing.java
disl/src/src-annotation/ch/usi/dag/disl/AfterThrowing.java
+1
-1
disl/src/src-annotation/ch/usi/dag/disl/ArgumentProcessor.java
...src/src-annotation/ch/usi/dag/disl/ArgumentProcessor.java
+1
-2
disl/src/src-annotation/ch/usi/dag/disl/Before.java
disl/src/src-annotation/ch/usi/dag/disl/Before.java
+1
-1
disl/src/src-annotation/ch/usi/dag/disl/GuardMethod.java
disl/src/src-annotation/ch/usi/dag/disl/GuardMethod.java
+1
-1
disl/src/src-annotation/ch/usi/dag/disl/Guarded.java
disl/src/src-annotation/ch/usi/dag/disl/Guarded.java
+1
-1
disl/src/src-annotation/ch/usi/dag/disl/ProcessAlso.java
disl/src/src-annotation/ch/usi/dag/disl/ProcessAlso.java
+2
-2
disl/src/src-annotation/ch/usi/dag/disl/SyntheticLocal.java
disl/src/src-annotation/ch/usi/dag/disl/SyntheticLocal.java
+2
-2
disl/src/src-annotation/ch/usi/dag/disl/ThreadLocal.java
disl/src/src-annotation/ch/usi/dag/disl/ThreadLocal.java
+1
-1
disl/src/src-classparser/ch/usi/dag/disl/AbstractParser.java
disl/src/src-classparser/ch/usi/dag/disl/AbstractParser.java
+2
-4
disl/src/src-classparser/ch/usi/dag/disl/ArgProcessorParser.java
...c/src-classparser/ch/usi/dag/disl/ArgProcessorParser.java
+0
-2
disl/src/src-classparser/ch/usi/dag/disl/DislClasses.java
disl/src/src-classparser/ch/usi/dag/disl/DislClasses.java
+0
-1
disl/src/src-classparser/ch/usi/dag/disl/SnippetParser.java
disl/src/src-classparser/ch/usi/dag/disl/SnippetParser.java
+0
-1
disl/src/src-guard/ch/usi/dag/disl/GuardHelper.java
disl/src/src-guard/ch/usi/dag/disl/GuardHelper.java
+13
-13
disl/src/src-localvar/ch/usi/dag/disl/SyntheticLocalVar.java
disl/src/src-localvar/ch/usi/dag/disl/SyntheticLocalVar.java
+0
-2
disl/src/src-marker/ch/usi/dag/disl/AfterInitBodyMarker.java
disl/src/src-marker/ch/usi/dag/disl/AfterInitBodyMarker.java
+0
-1
disl/src/src-processor/ch/usi/dag/disl/ArgProcessorMethod.java
...src/src-processor/ch/usi/dag/disl/ArgProcessorMethod.java
+0
-2
disl/src/src-resolver/ch/usi/dag/disl/GuardResolver.java
disl/src/src-resolver/ch/usi/dag/disl/GuardResolver.java
+7
-7
disl/src/src-resolver/ch/usi/dag/disl/InnerGuardMethod.java
disl/src/src-resolver/ch/usi/dag/disl/InnerGuardMethod.java
+4
-4
disl/src/src-util/ch/usi/dag/disl/DislClassFinder.java
disl/src/src-util/ch/usi/dag/disl/DislClassFinder.java
+0
-9
disl/src/src-weaver/ch/usi/dag/disl/Weaver.java
disl/src/src-weaver/ch/usi/dag/disl/Weaver.java
+1
-5
src-disl/ch/usi/dag/disl/dynamiccontext/DynamicContext.java
src-disl/ch/usi/dag/disl/dynamiccontext/DynamicContext.java
+2
-2
src-disl/ch/usi/dag/disl/processorcontext/ArgumentContext.java
...isl/ch/usi/dag/disl/processorcontext/ArgumentContext.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/after/instr/DiSLClass.java
...est/ch/usi/dag/disl/test/suite/after/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/after2/instr/DiSLClass.java
...st/ch/usi/dag/disl/test/suite/after2/instr/DiSLClass.java
+3
-3
src-test/ch/usi/dag/disl/test/suite/after2/instr/NotInitNorClinit.java
...si/dag/disl/test/suite/after2/instr/NotInitNorClinit.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/after3/instr/DiSLClass.java
...st/ch/usi/dag/disl/test/suite/after3/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/afterinit1/instr/DiSLClass.java
...h/usi/dag/disl/test/suite/afterinit1/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/afterinit2/app/TargetClass.java
...h/usi/dag/disl/test/suite/afterinit2/app/TargetClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/afterinit2/instr/DiSLClass.java
...h/usi/dag/disl/test/suite/afterinit2/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/args/instr/DiSLClass.java
...test/ch/usi/dag/disl/test/suite/args/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/bbmarker/instr/DiSLClass.java
.../ch/usi/dag/disl/test/suite/bbmarker/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/bodymarker/instr/DiSLClass.java
...h/usi/dag/disl/test/suite/bodymarker/instr/DiSLClass.java
+3
-3
src-test/ch/usi/dag/disl/test/suite/bytecodemarker/instr/DiSLClass.java
...i/dag/disl/test/suite/bytecodemarker/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/cflow/instr/DiSLClass.java
...est/ch/usi/dag/disl/test/suite/cflow/instr/DiSLClass.java
+3
-3
src-test/ch/usi/dag/disl/test/suite/classinfo/instr/DiSLClass.java
...ch/usi/dag/disl/test/suite/classinfo/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/dispatch/instr/DiSLClass.java
.../ch/usi/dag/disl/test/suite/dispatch/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/dispatch2/instr/DiSLClass.java
...ch/usi/dag/disl/test/suite/dispatch2/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/dispatchmp/instr/DiSLClass.java
...h/usi/dag/disl/test/suite/dispatchmp/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/dynamiccontext/instr/DiSLClass.java
...i/dag/disl/test/suite/dynamiccontext/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/dynamicinfo/instr/DiSLClass.java
.../usi/dag/disl/test/suite/dynamicinfo/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/exception/instr/DiSLClass.java
...ch/usi/dag/disl/test/suite/exception/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/exceptionhandler/instr/DiSLClass.java
...dag/disl/test/suite/exceptionhandler/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/gettarget/instr/DiSLClass.java
...ch/usi/dag/disl/test/suite/gettarget/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/guard/instr/DiSLClass.java
...est/ch/usi/dag/disl/test/suite/guard/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/guard/instr/GuardLength.java
...t/ch/usi/dag/disl/test/suite/guard/instr/GuardLength.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/guard/instr/GuardNo.java
src-test/ch/usi/dag/disl/test/suite/guard/instr/GuardNo.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/guard/instr/GuardYes.java
...test/ch/usi/dag/disl/test/suite/guard/instr/GuardYes.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/guard/instr/ProcessorTest.java
...ch/usi/dag/disl/test/suite/guard/instr/ProcessorTest.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/loop/instr/DiSLClass.java
...test/ch/usi/dag/disl/test/suite/loop/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/newobjmarker/instr/DiSLClass.java
...usi/dag/disl/test/suite/newobjmarker/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/pe/instr/DiSLClass.java
src-test/ch/usi/dag/disl/test/suite/pe/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/pe2/instr/DiSLClass.java
src-test/ch/usi/dag/disl/test/suite/pe2/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/pe3/instr/DiSLClass.java
src-test/ch/usi/dag/disl/test/suite/pe3/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/processor/instr/DiSLClass.java
...ch/usi/dag/disl/test/suite/processor/instr/DiSLClass.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/processor/instr/ProcessorTest.java
...si/dag/disl/test/suite/processor/instr/ProcessorTest.java
+4
-4
src-test/ch/usi/dag/disl/test/suite/processor/instr/ProcessorTest2.java
...i/dag/disl/test/suite/processor/instr/ProcessorTest2.java
+2
-2
src-test/ch/usi/dag/disl/test/suite/scope/instr/DiSLClass.java
...est/ch/usi/dag/disl/test/suite/scope/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/stack/instr/DiSLClass.java
...est/ch/usi/dag/disl/test/suite/stack/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/staticinfo/instr/DiSLClass.java
...h/usi/dag/disl/test/suite/staticinfo/instr/DiSLClass.java
+1
-1
src-test/ch/usi/dag/disl/test/suite/syntheticlocal/instr/DiSLClass.java
...i/dag/disl/test/suite/syntheticlocal/instr/DiSLClass.java
+4
-4
src-test/ch/usi/dag/disl/test/suite/threadlocal/instr/DiSLClass.java
.../usi/dag/disl/test/suite/threadlocal/instr/DiSLClass.java
+3
-3
src-test/ch/usi/dag/disl/test/suite/tryclause/instr/DiSLClass.java
...ch/usi/dag/disl/test/suite/tryclause/instr/DiSLClass.java
+3
-3
No files found.
.classpath
View file @
861fafb1
...
...
@@ -22,6 +22,7 @@
<classpathentry
kind=
"src"
path=
"disl/src/src-marker"
/>
<classpathentry
kind=
"src"
path=
"disl/src/src-weaver"
/>
<classpathentry
kind=
"src"
path=
"disl/src/src-weaver-pe"
/>
<classpathentry
kind=
"src"
path=
"disl/src/src-annotation"
/>
<classpathentry
kind=
"con"
path=
"org.eclipse.jdt.launching.JRE_CONTAINER"
/>
<classpathentry
kind=
"lib"
path=
"output/lib/disl-bypass.jar"
/>
<classpathentry
kind=
"lib"
path=
"lib/disl/log4j.jar"
sourcepath=
"lib/devel/log4j-source.jar"
/>
...
...
build.properties
View file @
861fafb1
...
...
@@ -7,22 +7,25 @@ lib.devel.dir=${lib.dir}/devel
src.bin
=
bin
src.disl.prefix
=
disl
src.disl
=
src-disl
src.disl.main
=
src-main
src.disl.annotation
=
src-annotation
src.disl.classparser
=
src-classparser
src.disl.resolver
=
src-resolver
src.disl.coderep
=
src-coderep
src.disl.util
=
src-util
src.disl.snippet
=
src-snippet
src.disl.processor
=
src-processor
src.disl.exception
=
src-exception
src.disl.guard
=
src-guard
src.disl.localvar
=
src-localvar
src.disl.exception
=
src-exception
src.disl.scope
=
src-scope
src.disl.main
=
src-main
src.disl.marker
=
src-marker
src.disl.weaver
=
src-weaver
src.disl.weaver-pe
=
src-weaver-pe
src.disl.staticcontext
=
src-staticcontext
src.disl.processor
=
src-processor
src.disl.resolver
=
src-resolver
src.disl.scope
=
src-scope
src.disl.snippet
=
src-snippet
src.disl.staticcontext-uid
=
src-staticcontext-uid
src.disl.staticcontext
=
src-staticcontext
src.disl.util
=
src-util
src.disl.weaver-pe
=
src-weaver-pe
src.disl.weaver
=
src-weaver
src.disl.bypass
=
src-disl-bypass
src.disl.agent
=
src-disl-agent
src.shvm
=
src-shvm
...
...
build.xml
View file @
861fafb1
...
...
@@ -490,6 +490,7 @@
<src
path=
"${src.disl.prefix}/src/${src.disl.localvar}"
/>
<src
path=
"${src.disl.prefix}/src/${src.disl.staticcontext}"
/>
<src
path=
"${src.disl.prefix}/src/${src.disl.staticcontext-uid}"
/>
<src
path=
"${src.disl.prefix}/src/${src.disl.annotation}"
/>
<src
path=
"${src.disl.prefix}/src/${src.disl.util}"
/>
<src
path=
"${src.disl.prefix}/src/${src.disl.main}"
/>
...
...
src-disl/ch/usi/dag/disl/annotation
/After.java
→
disl/src/src-annotation/ch/usi/dag/disl
/After.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
src-disl/ch/usi/dag/disl/annotation
/AfterReturning.java
→
disl/src/src-annotation/ch/usi/dag/disl
/AfterReturning.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
src-disl/ch/usi/dag/disl/annotation
/AfterThrowing.java
→
disl/src/src-annotation/ch/usi/dag/disl
/AfterThrowing.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
src-disl/ch/usi/dag/disl/annotation
/ArgumentProcessor.java
→
disl/src/src-annotation/ch/usi/dag/disl
/ArgumentProcessor.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
@@ -7,7 +7,6 @@ import java.lang.annotation.Target;
import
ch.usi.dag.disl.classcontext.ClassContext
;
import
ch.usi.dag.disl.dynamiccontext.DynamicContext
;
import
ch.usi.dag.disl.processorcontext.ArgumentContext
;
import
ch.usi.dag.disl.StaticContext
;
/**
...
...
src-disl/ch/usi/dag/disl/annotation
/Before.java
→
disl/src/src-annotation/ch/usi/dag/disl
/Before.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
src-disl/ch/usi/dag/disl/annotation
/GuardMethod.java
→
disl/src/src-annotation/ch/usi/dag/disl
/GuardMethod.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
src-disl/ch/usi/dag/disl/annotation
/Guarded.java
→
disl/src/src-annotation/ch/usi/dag/disl
/Guarded.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
src-disl/ch/usi/dag/disl/annotation
/ProcessAlso.java
→
disl/src/src-annotation/ch/usi/dag/disl
/ProcessAlso.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
@@ -34,7 +34,7 @@ public @interface ProcessAlso {
//
/**
* @see
ch.usi.dag.disl.annotation.
ProcessAlso
* @see ProcessAlso
*/
public
enum
Type
{
BOOLEAN
,
BYTE
,
SHORT
...
...
src-disl/ch/usi/dag/disl/annotation
/SyntheticLocal.java
→
disl/src/src-annotation/ch/usi/dag/disl
/SyntheticLocal.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
@@ -36,7 +36,7 @@ public @interface SyntheticLocal {
//
/**
* @see
ch.usi.dag.disl.annotation.
SyntheticLocal
* @see SyntheticLocal
*/
public
enum
Initialize
{
ALWAYS
,
NEVER
,
BEST_EFFORT
...
...
src-disl/ch/usi/dag/disl/annotation
/ThreadLocal.java
→
disl/src/src-annotation/ch/usi/dag/disl
/ThreadLocal.java
View file @
861fafb1
package
ch.usi.dag.disl
.annotation
;
package
ch.usi.dag.disl
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
...
...
disl/src/src-classparser/ch/usi/dag/disl/AbstractParser.java
View file @
861fafb1
...
...
@@ -22,9 +22,7 @@ import org.objectweb.asm.tree.VarInsnNode;
import
org.objectweb.asm.tree.analysis.Frame
;
import
org.objectweb.asm.tree.analysis.SourceValue
;
import
ch.usi.dag.disl.annotation.SyntheticLocal
;
import
ch.usi.dag.disl.annotation.SyntheticLocal.Initialize
;
import
ch.usi.dag.disl.annotation.ThreadLocal
;
import
ch.usi.dag.disl.SyntheticLocal.Initialize
;
import
ch.usi.dag.disl.AsmHelper.Insns
;
import
ch.usi.dag.util.logging.Logger
;
...
...
@@ -105,7 +103,7 @@ abstract class AbstractParser {
// thread local
final
Type
tlvAnnotation
=
Type
.
getType
(
ch
.
usi
.
dag
.
disl
.
annotation
.
ThreadLocal
.
class
);
ThreadLocal
.
class
);
if
(
annotationType
.
equals
(
tlvAnnotation
))
{
final
ThreadLocalVar
tlv
=
parseThreadLocal
(
className
,
field
,
annotation
);
result
.
put
(
tlv
);
...
...
disl/src/src-classparser/ch/usi/dag/disl/ArgProcessorParser.java
View file @
861fafb1
...
...
@@ -13,8 +13,6 @@ import org.objectweb.asm.Type;
import
org.objectweb.asm.tree.ClassNode
;
import
org.objectweb.asm.tree.MethodNode
;
import
ch.usi.dag.disl.annotation.Guarded
;
import
ch.usi.dag.disl.annotation.ProcessAlso
;
import
ch.usi.dag.util.Strings
;
...
...
disl/src/src-classparser/ch/usi/dag/disl/DislClasses.java
View file @
861fafb1
...
...
@@ -6,7 +6,6 @@
*/
package
ch.usi.dag.disl
;
import
ch.usi.dag.disl.annotation.ArgumentProcessor
;
import
org.objectweb.asm.Type
;
import
org.objectweb.asm.tree.AnnotationNode
;
import
org.objectweb.asm.tree.ClassNode
;
...
...
disl/src/src-classparser/ch/usi/dag/disl/SnippetParser.java
View file @
861fafb1
...
...
@@ -3,7 +3,6 @@ package ch.usi.dag.disl;
import
java.lang.reflect.Method
;
import
java.util.*
;
import
ch.usi.dag.disl.annotation.*
;
import
org.objectweb.asm.Type
;
import
org.objectweb.asm.tree.AnnotationNode
;
import
org.objectweb.asm.tree.MethodNode
;
...
...
disl/src/src-guard/ch/usi/dag/disl/GuardHelper.java
View file @
861fafb1
...
...
@@ -20,19 +20,19 @@ public abstract class GuardHelper {
}
// TODO LB: Cache validated methods and don't validate them again?
final
GuardMethod
g
uardMethod
=
GuardResolver
.
getInstance
().
getGuardMethod
(
guardClass
);
validateGuardMethod
(
g
uardMethod
,
validArgs
);
return
g
uardMethod
.
getMethod
();
final
InnerGuardMethod
innerG
uardMethod
=
GuardResolver
.
getInstance
().
getGuardMethod
(
guardClass
);
validateGuardMethod
(
innerG
uardMethod
,
validArgs
);
return
innerG
uardMethod
.
getMethod
();
}
private
static
void
validateGuardMethod
(
final
GuardMethod
g
uardMethod
,
final
Set
<
Class
<?>>
validArgs
final
InnerGuardMethod
innerG
uardMethod
,
final
Set
<
Class
<?>>
validArgs
)
throws
GuardException
{
// quick validation
if
(
g
uardMethod
.
getArgTypes
()
!=
null
)
{
if
(
innerG
uardMethod
.
getArgTypes
()
!=
null
)
{
// only valid argument types are in the method - ok
if
(
validArgs
.
containsAll
(
g
uardMethod
.
getArgTypes
()))
{
if
(
validArgs
.
containsAll
(
innerG
uardMethod
.
getArgTypes
()))
{
return
;
}
...
...
@@ -40,20 +40,20 @@ public abstract class GuardHelper {
// prepare invalid argument type set
final
Set
<
Class
<?>>
invalidArgTypes
=
new
HashSet
<
Class
<?>>
(
g
uardMethod
.
getArgTypes
());
new
HashSet
<
Class
<?>>
(
innerG
uardMethod
.
getArgTypes
());
invalidArgTypes
.
removeAll
(
validArgs
);
// construct the error message
throw
new
GuardException
(
String
.
format
(
"Guard %s is using interface %s not allowed in this "
+
"particular case (misused guard?)"
,
g
uardMethod
.
getMethod
().
getDeclaringClass
().
getName
(),
innerG
uardMethod
.
getMethod
().
getDeclaringClass
().
getName
(),
invalidArgTypes
.
iterator
().
next
().
getName
()
));
}
// validate properly
final
Method
method
=
g
uardMethod
.
getMethod
();
final
Method
method
=
innerG
uardMethod
.
getMethod
();
final
String
methodName
=
__fullMethodName
(
method
);
if
(!
method
.
getReturnType
().
equals
(
boolean
.
class
))
{
throw
new
GuardException
(
...
...
@@ -72,7 +72,7 @@ public abstract class GuardHelper {
argTypes
.
add
(
validateArgument
(
methodName
,
argType
,
validArgs
));
}
g
uardMethod
.
setArgTypes
(
argTypes
);
innerG
uardMethod
.
setArgTypes
(
argTypes
);
}
...
...
@@ -173,15 +173,15 @@ public abstract class GuardHelper {
// The validation set depends on whether we are in a snippet (no
// processor context supplied) or in an argument processor.
//
final
GuardMethod
g
uardMethod
=
GuardResolver
.
getInstance
().
final
InnerGuardMethod
innerG
uardMethod
=
GuardResolver
.
getInstance
().
getGuardMethod
(
guardClass
);
final
Set
<
Class
<?>>
validationSet
=
(
ac
==
null
)
?
snippetContextSet
()
:
processorContextSet
();
validateGuardMethod
(
g
uardMethod
,
validationSet
);
validateGuardMethod
(
innerG
uardMethod
,
validationSet
);
return
invokeGuardMethod
(
g
uardMethod
.
getMethod
(),
shadow
,
ac
);
return
invokeGuardMethod
(
innerG
uardMethod
.
getMethod
(),
shadow
,
ac
);
}
...
...
disl/src/src-localvar/ch/usi/dag/disl/SyntheticLocalVar.java
View file @
861fafb1
...
...
@@ -3,8 +3,6 @@ package ch.usi.dag.disl;
import
org.objectweb.asm.Type
;
import
org.objectweb.asm.tree.InsnList
;
import
ch.usi.dag.disl.annotation.SyntheticLocal
;
public
class
SyntheticLocalVar
extends
AbstractLocalVar
{
...
...
disl/src/src-marker/ch/usi/dag/disl/AfterInitBodyMarker.java
View file @
861fafb1
...
...
@@ -10,7 +10,6 @@ import org.objectweb.asm.commons.AdviceAdapter;
import
org.objectweb.asm.tree.AbstractInsnNode
;
import
org.objectweb.asm.tree.MethodNode
;
import
ch.usi.dag.disl.annotation.Before
;
import
ch.usi.dag.disl.Shadow.WeavingRegion
;
import
ch.usi.dag.disl.AsmHelper.Insns
;
...
...
disl/src/src-processor/ch/usi/dag/disl/ArgProcessorMethod.java
View file @
861fafb1
...
...
@@ -3,8 +3,6 @@ package ch.usi.dag.disl;
import
java.lang.reflect.Method
;
import
java.util.Set
;
import
ch.usi.dag.disl.annotation.ArgumentProcessor
;
/**
* Represents an {@link ArgumentProcessor} method, which is analogous to a
...
...
disl/src/src-resolver/ch/usi/dag/disl/GuardResolver.java
View file @
861fafb1
...
...
@@ -24,10 +24,10 @@ public class GuardResolver {
//
/** A cache of guard methods corresponding to guard classes. */
private
final
Map
<
Class
<?>,
GuardMethod
>
__guardMethodsByClass
=
new
HashMap
<>
();
private
final
Map
<
Class
<?>,
Inner
GuardMethod
>
__guardMethodsByClass
=
new
HashMap
<>
();
synchronized
GuardMethod
getGuardMethod
(
synchronized
Inner
GuardMethod
getGuardMethod
(
final
Class
<?>
guardClass
)
throws
GuardException
{
//
...
...
@@ -35,7 +35,7 @@ public class GuardResolver {
// corresponding to guard classes. If it does not provide an answer,
// search of a guard method within the class.
//
final
GuardMethod
cachedResult
=
__guardMethodsByClass
.
get
(
guardClass
);
final
Inner
GuardMethod
cachedResult
=
__guardMethodsByClass
.
get
(
guardClass
);
if
(
cachedResult
!=
null
)
{
return
cachedResult
;
}
...
...
@@ -44,7 +44,7 @@ public class GuardResolver {
}
private
GuardMethod
__findGuardMethod
(
private
Inner
GuardMethod
__findGuardMethod
(
final
Class
<?>
guardClass
)
throws
GuardException
{
final
List
<
Method
>
candidateMethods
=
Arrays
...
...
@@ -55,7 +55,7 @@ public class GuardResolver {
if
(
candidateMethods
.
isEmpty
())
{
throw
new
GuardException
(
String
.
format
(
"No method annotated using %s found in class %s"
,
ch
.
usi
.
dag
.
disl
.
annotation
.
GuardMethod
.
class
.
getName
(),
GuardMethod
.
class
.
getName
(),
guardClass
.
getName
()
));
}
...
...
@@ -71,7 +71,7 @@ public class GuardResolver {
final
Method
method
=
candidateMethods
.
get
(
0
);
method
.
setAccessible
(
true
);
final
GuardMethod
result
=
new
GuardMethod
(
method
);
final
InnerGuardMethod
result
=
new
Inner
GuardMethod
(
method
);
__guardMethodsByClass
.
put
(
guardClass
,
result
);
return
result
;
}
...
...
@@ -79,7 +79,7 @@ public class GuardResolver {
private
boolean
__isGuardMethodCandidate
(
final
Method
m
)
{
return
m
.
isAnnotationPresent
(
ch
.
usi
.
dag
.
disl
.
annotation
.
GuardMethod
.
class
GuardMethod
.
class
);
}
...
...
disl/src/src-resolver/ch/usi/dag/disl/GuardMethod.java
→
disl/src/src-resolver/ch/usi/dag/disl/
Inner
GuardMethod.java
View file @
861fafb1
...
...
@@ -3,12 +3,12 @@ package ch.usi.dag.disl;
import
java.lang.reflect.Method
;
import
java.util.Set
;
public
class
GuardMethod
{
public
class
Inner
GuardMethod
{
private
Method
method
;
private
Set
<
Class
<?>>
argTypes
;
public
GuardMethod
(
Method
method
)
{
InnerGuardMethod
(
Method
method
)
{
super
();
this
.
method
=
method
;
}
...
...
@@ -17,11 +17,11 @@ public class GuardMethod {
return
method
;
}
public
Set
<
Class
<?>>
getArgTypes
()
{
Set
<
Class
<?>>
getArgTypes
()
{
return
argTypes
;
}
public
void
setArgTypes
(
Set
<
Class
<?>>
argTypes
)
{
void
setArgTypes
(
Set
<
Class
<?>>
argTypes
)
{
this
.
argTypes
=
argTypes
;
}
}
disl/src/src-util/ch/usi/dag/disl/DislClassFinder.java
View file @
861fafb1
...
...
@@ -21,15 +21,6 @@ import javax.lang.model.element.ExecutableElement;
import
javax.lang.model.element.TypeElement
;
import
javax.tools.Diagnostic.Kind
;
import
ch.usi.dag.disl.annotation.After
;
import
ch.usi.dag.disl.annotation.AfterReturning
;
import
ch.usi.dag.disl.annotation.AfterThrowing
;
import
ch.usi.dag.disl.annotation.ArgumentProcessor
;
import
ch.usi.dag.disl.annotation.Before
;
import
ch.usi.dag.disl.annotation.Guarded
;
import
ch.usi.dag.disl.annotation.ProcessAlso
;
import
ch.usi.dag.disl.annotation.SyntheticLocal
;
/**
* Identifies DiSL classes based on the use of DiSL annotations. Only classes
...
...
disl/src/src-weaver/ch/usi/dag/disl/Weaver.java
View file @
861fafb1
...
...
@@ -15,11 +15,7 @@ import org.objectweb.asm.tree.LabelNode;
import
org.objectweb.asm.tree.MethodNode
;
import
org.objectweb.asm.tree.TryCatchBlockNode
;
import
ch.usi.dag.disl.annotation.After
;
import
ch.usi.dag.disl.annotation.AfterReturning
;
import
ch.usi.dag.disl.annotation.AfterThrowing
;
import
ch.usi.dag.disl.annotation.Before
;
import
ch.usi.dag.disl.annotation.SyntheticLocal.Initialize
;
import
ch.usi.dag.disl.SyntheticLocal.Initialize
;
import
ch.usi.dag.disl.Shadow.WeavingRegion
;
import
ch.usi.dag.disl.AsmHelper.Insns
;
...
...
src-disl/ch/usi/dag/disl/dynamiccontext/DynamicContext.java
View file @
861fafb1
package
ch.usi.dag.disl.dynamiccontext
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
AfterThrowing
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.AfterThrowing
;
import
ch.usi.dag.disl.FieldAccessStaticContext
;
...
...
src-disl/ch/usi/dag/disl/processorcontext/ArgumentContext.java
View file @
861fafb1
package
ch.usi.dag.disl.processorcontext
;
import
ch.usi.dag.disl.
annotation.
ArgumentProcessor
;
import
ch.usi.dag.disl.ArgumentProcessor
;
/**
* Provides information about a particular method argument from within an
...
...
src-test/ch/usi/dag/disl/test/suite/after/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.after.instr
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
AfterThrowing
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.AfterThrowing
;
import
ch.usi.dag.disl.BodyMarker
;
public
class
DiSLClass
{
...
...
src-test/ch/usi/dag/disl/test/suite/after2/instr/DiSLClass.java
View file @
861fafb1
...
...
@@ -2,9 +2,9 @@ package ch.usi.dag.disl.test.suite.after2.instr;
import
java.util.Stack
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.
annotation.
ThreadLocal
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.ThreadLocal
;
import
ch.usi.dag.disl.BodyMarker
;
import
ch.usi.dag.disl.RandomMethodUid
;
import
ch.usi.dag.disl.test.suite.after2.instr.runtime.Analysis
;
...
...
src-test/ch/usi/dag/disl/test/suite/after2/instr/NotInitNorClinit.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.after2.instr
;
import
ch.usi.dag.disl.
annotation.
GuardMethod
;
import
ch.usi.dag.disl.GuardMethod
;
import
ch.usi.dag.disl.MethodStaticContext
;
public
class
NotInitNorClinit
{
...
...
src-test/ch/usi/dag/disl/test/suite/after3/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.after3.instr
;
import
ch.usi.dag.disl.
annotation.
AfterReturning
;
import
ch.usi.dag.disl.
annotation.
AfterThrowing
;
import
ch.usi.dag.disl.AfterReturning
;
import
ch.usi.dag.disl.AfterThrowing
;
import
ch.usi.dag.disl.BodyMarker
;
import
ch.usi.dag.disl.MethodStaticContext
;
...
...
src-test/ch/usi/dag/disl/test/suite/afterinit1/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.afterinit1.instr
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.AfterInitBodyMarker
;
...
...
src-test/ch/usi/dag/disl/test/suite/afterinit2/app/TargetClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.afterinit2.app
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.AfterInitBodyMarker
;
...
...
src-test/ch/usi/dag/disl/test/suite/afterinit2/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.afterinit2.instr
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.AfterInitBodyMarker
;
import
ch.usi.dag.disl.ClassStaticContext
;
import
ch.usi.dag.disl.MethodStaticContext
;
...
...
src-test/ch/usi/dag/disl/test/suite/args/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.args.instr
;
import
ch.usi.dag.disl.
annotation.
AfterReturning
;
import
ch.usi.dag.disl.AfterReturning
;
import
ch.usi.dag.disl.BodyMarker
;
import
ch.usi.dag.disl.processorcontext.ArgumentProcessorContext
;
import
ch.usi.dag.disl.processorcontext.ArgumentProcessorMode
;
...
...
src-test/ch/usi/dag/disl/test/suite/bbmarker/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.bbmarker.instr
;
import
ch.usi.dag.disl.
annotation.
AfterReturning
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.AfterReturning
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.BasicBlockMarker
;
import
ch.usi.dag.disl.PreciseBasicBlockMarker
;
import
ch.usi.dag.disl.BasicBlockStaticContext
;
...
...
src-test/ch/usi/dag/disl/test/suite/bodymarker/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.bodymarker.instr
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
AfterReturning
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.AfterReturning
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.BodyMarker
;
public
class
DiSLClass
{
...
...
src-test/ch/usi/dag/disl/test/suite/bytecodemarker/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.bytecodemarker.instr
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.BytecodeMarker
;
import
ch.usi.dag.disl.InstructionStaticContext
;
...
...
src-test/ch/usi/dag/disl/test/suite/cflow/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.cflow.instr
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.
annotation.
After
;
import
ch.usi.dag.disl.
annotation.
ThreadLocal
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.After
;
import
ch.usi.dag.disl.ThreadLocal
;
import
ch.usi.dag.disl.BodyMarker
;
import
ch.usi.dag.disl.MethodStaticContext
;
...
...
src-test/ch/usi/dag/disl/test/suite/classinfo/instr/DiSLClass.java
View file @
861fafb1
package
ch.usi.dag.disl.test.suite.classinfo.instr
;
import
ch.usi.dag.disl.
annotation.
Before
;
import
ch.usi.dag.disl.Before
;
import
ch.usi.dag.disl.BodyMarker
;
import
ch.usi.dag.disl.ClassStaticContext
;
...
...
src-test/ch/usi/dag/disl/test/suite/dispatch/instr/DiSLClass.java
View file @
861fafb1
...
...
@@ -2,7 +2,7 @@ package ch.usi.dag.disl.test.suite.dispatch.instr;