1. 11 Oct, 2019 3 commits
    • Lubomir Bulej's avatar
      Try bumping the test time limit to 45 seconds · c34d7ce8
      Lubomir Bulej authored
      Again, this is to accomodate the "dispatchmp" test on slower
      machines (it takes 14-15 seconds on a modern machine).
      c34d7ce8
    • Lubomir Bulej's avatar
      Increase test time limit to 20 seconds · 93054bab
      Lubomir Bulej authored
      This may be necessary for the "dispatchmp" test to finish
      on slower machines.
      93054bab
    • Lubomir Bulej's avatar
      Fix race in "dispatchmp" test and repeatedly force GC · 54396d6c
      Lubomir Bulej authored
      The race was in the code displaying the "So far received..." message.
      After the check if the counter value modulo 1000000 was zero, the
      value actually displayed was queried again, potentially obtaining a
      different value (another thread might have incremented the counter).
      
      To force the client to send notifications about garbage collected
      objects, the client code forces the GC repeatedly and waits a bit
      between the attempts.
      54396d6c
  2. 05 Apr, 2018 1 commit
  3. 24 Oct, 2017 1 commit
  4. 07 Oct, 2016 1 commit
  5. 06 Oct, 2016 2 commits
  6. 29 Aug, 2016 1 commit
  7. 26 Aug, 2016 1 commit
  8. 25 Aug, 2016 1 commit
    • Lubomir Bulej's avatar
      NetReferenceHelper: add getUniqueId() method that will return a net reference... · 5c376d0e
      Lubomir Bulej authored
      NetReferenceHelper: add getUniqueId() method that will return a net reference with the special payload bit masked.
      ShadowObject: add (package private) getUniqueId() method.
      ShadowObject: add (package private) isSpecial() method.
      ShadowObject, ShadowClass: move (package private) getClassId() method from ShadowClass to ShadowObject.
      ShadowObject: remove the getNetRef() method to (sort of) keep a lid on the raw net reference.
      ShadowObject: test equality using getUniqueId() instead of raw net reference, so that objects with the same it but one containing special payload are considered equal.
      ShadowObjectTable: only call updateFrom() on an existing object when the other object is "special", i.e., it contains special payload.
      ShadowClassTable: avoid using net reference directly, use isSpecial() and getClassId() on the shadow object.
      
      5c376d0e
  9. 18 Aug, 2016 2 commits
  10. 06 Aug, 2016 1 commit
  11. 16 Nov, 2015 1 commit
  12. 01 Oct, 2015 1 commit
  13. 26 Apr, 2015 1 commit
    • Lubomir Bulej's avatar
      - Reimplemented the scope matcher. The scope now accepts multiple parameter... · 11234525
      Lubomir Bulej authored
      - Reimplemented the scope matcher. The scope now accepts multiple parameter wild cards, similar to normal textual wild cards.
      - Added tests for the simpler matchers that comprise a scope matcher, and fixed, extended, and cleaned up the existing scope tests.
      - Removed ScopeParserException, and replaced it with package-private MalformedScopeException.
      - Introduced GeneralException class to hold common runtime exception code.
      - Introduced JavaNames utility class to hold common Java name handling code.
      - Modified SnippetParser, ExclusionSet to use the new ScopeMatcher.
      
      11234525
  14. 21 Apr, 2015 3 commits
  15. 09 Oct, 2014 1 commit
    • Lubomir Bulej's avatar
      DiSL: use the logging infrastructure instead of standard output/error to produce any messages. · 55b410df
      Lubomir Bulej authored
      DiSL: mark the constructor as deprecated because of the amount of work done in it, and provide an init() static factory method.
      DiSL: selectShadowsWithGuards() converted to the streams API.
      DiSL: dropped getters from InstrumentedClass, as it is private class that only serves to return a multi-value result.
      DiSL: introduce the usage of the CodeOption enums to determine how to instrument code, so far in backwards compatibility mode.
      
      AbstractParser: use logger instead of stdout to print out warning.
      AbstractParser: added ensure*() methods to check for expected properties in snippets.
      AnnotationMapper: new class for processing Java annotations.
      ArgProcessorParser: cleaned up the parsing code, switched several loops to the streams API.
      ContextKind: introduced to represent the various kinds of contexts.
      DiSLClasses: use a set of CodeOption enums instead of boolean flags when loading DiSL classes.
      SnippetParser: extracted the Contexts class into ContextUsage class.
      SnippetParser: cleaned up snippet validation and parsing.
      ParserRuntimeException: introduced as an internal exception for class parser classes.
      
      Code, UnprocessedCode: use MethodNode as a reference to code, instead of separate instruction and try-catch-block lists.
      Code, UnprocessedCode: drop context kind usage information, because it is not used by any code.
      Code: only expose information on local variables and static context methods as unmodifiable sets.
      Code, UnprocessedCode, SnippetCode, SnippetUnprocessedCode: introduce a copy contructor for use in the clone() method.
      ContextUsage: extracted from SnippetParser and slightly refactored.
      InvalidStaticContextInvocationException: introduced as an internal exception for code representation classes.
      UnprocessedCode: added className(), methodName(), and location(AbstractInsn) methods.
      UnprocessedCode: cleaned up translateThreadLocalVars() method and renamed it to __rewriteThreadLocalVarAccesses().
      UnprocessedCode: converted many loops in helper methods to the streams API, sometimes even using parallel streams.
      
      ArgumentContextImpl: just wrap ProcMethodInstance instead of duplicating the information.
      GuardHelper: use ProcMethodInstance in guardApplicable() method instead of passing argument context parameters explicitly.
      
      ArgProcessorParserException: repurposed to ParserRuntimeException.
      ParserException, ParserRuntimeException, ProcessorException, StaticContextGenException: added constructor(s) for formatted messages and cleaned up formatting.
      
      ArgProcessor: added getReferencedSCMs() method to collected static context methods referenced in argument processor methods.
      ArgProcessorKind: removed valueOf(ProcessAlso.Type) because it is not used.
      ArgProcessorMethod: use Code and UnprocessedCode instead of ProcCode and ProcUnprocessedCode.
      ArgProcessorMethod: replaced getTypes() with handlesType(ArgProcessorKind) to make the class do more work.
      ArgProcessorMethod, Snippet: make sure getCode() can be only called after the template code has been expanded.
      ArgProcessorMethod, Snippet, SnippetUnprocessedCode: use the template code as a source of the snippet origin class and method names.
      ProcCode, ProcUnprocessedCode: removed, as their function is subsumed by Code and UnprocessedCode classes.
      PIResolver: cleaned up and simplified the equals() implementation.
      ProcGenerator: use handlesType() instead of getTypes().contains() on ArgProcessorMethod.
      ProcGenerator: pass ProcMethodInstance into guardApplicable() invocations, eliminated isPMGuardApplicable() private method.
      ProcMethodInstance: use Code instead of ProcCode.
      ProcMethodInstance: renamed getArgPos() to getArgIndex().
      ProcMethodInstance: renamed getArgType() to getKind() because that is what it does.
      ProcMethodInstance: changed getArgTypeDesc() to getArgType() and made it to return Type, instead of string type descriptor to keep the abstraction higher.
      
      Snippet: use Integer.compare() on snippet order in the compareTo() method.
      Snippet: cleaned up code and javadoc formatting.
      SnippetCode: decorate Code instead of extending it, besides other things it makes cloning much simpler.
      SnippetCode: build the set of reference static context methods lazily based on the SCMs referenced in the template code and the associated argument processor methods.
      SnippetUnprocessedCode: decorate UnprocessedCode instead of extending it, makes cloning much simpler.
      SnippetUnprocessedCode: dropped context kind usage information, it is not used anywhere.
      SnippetUnprocessedCode, UnprocessedCode: cleaned up and added comments to the process() method.
      SnippetUnprocessedCode: dropped getters from the privater ProcessorInfo class.
      SnippetUnprocessedCode: cleaned up the insnInvokesProcessor() method.
      SnippetUnprocessedCode: cleaned up the insertExceptionHandler() method and renamed it to __insertExceptionHandler().
      SnippetUnprocessedCode: cleaned up the insertDynamicBypass() method and renamed it to __insertDynamicBypassControl().
      
      SCGenerator: simplified computeStaticInfo() and cleaned up the formatting.
      
      AsmHelper: removed the deprecated helper methods, they now reside closer to where they are used.
      
      WeavingCode: reflect the changes in ProcMethodInstance method names.
      
      RequestProcessor: use DiSL.init() instead of new DiSL(), and convert "dislserver.disablebypass" property to "disl.disablebypass" to preserve compatibility.
      
      OnPlaceTransformer, Transformer: use DiSL.init() instead of new DiSL()
      55b410df
  16. 08 Oct, 2014 2 commits
  17. 06 Oct, 2014 1 commit
  18. 01 Oct, 2014 1 commit
  19. 29 Aug, 2014 1 commit
  20. 15 Aug, 2014 1 commit
    • Lubomir Bulej's avatar
      DiSL: moved transformer related code into Transformers class. · ec5b7a4a
      Lubomir Bulej authored
      DiSL: moved DiSL class initialization into DislClasses class.
      DiSL: moved ClassNode unmarshalling/marshaling code into ClassNodeHelper.
      ClassNodeHelper: encapsulate different loading strategies for snippets and instrumented classes.
      ClassNodeHelper: provide ClassNode duplication code.
      ClassNodeHelper: provide code for marshaling ClassNode into class-files.
      Transformer: moved to disl package.
      Transformer: removed propagateUninstrumentedClasses() method, its purpose is unclear.
      TransformerException: moved to disl package, to be used for exceptions resulting from applying transformers to code.
      TransformerInitializationException: created as a class to be used for exceptions occurring during transformer loading and initialization.
      Transformers: encapsulates transformer loading, initialization, and application code.
      InitException: renamed to DiSLInitializationException to serve as top-level exception for initialization exceptions.
      LocalVars: added put() methods for thread-local and synthetic-local variables.
      LocalVars: getThreadLocals() and getSyntheticLocals() now return unmodifiable maps.
      AbstractParser: use the LocalVars.put() methods to insert local variables into LocalVars.
      DislClassParser: renamed to DislClasses, as it represents the collected snippets.
      DislClasses: moved snippet and argument processor initialization code from DiSL class.
      DislClasses: removed the getProcessors() and getAllLocalVars() methods that are no long necessary.
      ClassByteLoader, DiSL: cleaned up formatting.
      testtools.agent.Transformer: initialize DiSL statically.
      testtools.agent.Transformer: partially cleaned up formatting.
       initialization/loading code 
      ec5b7a4a
  21. 02 Aug, 2014 1 commit
  22. 19 Jul, 2014 2 commits
  23. 20 Jun, 2014 1 commit
    • Lubomir Bulej's avatar
      Job: return self from start() method. · 7a3ff2d0
      Lubomir Bulej authored
      Runner: added utility method for watching a file.
      ClientServerRunner: detect DiSL server readiness, speeding up test execution.
      ClientServerEvaluationServer: detect DiSL and Shadow VM server readiness, speeding up test execution.
      7a3ff2d0
  24. 13 Jun, 2014 1 commit
    • Lubomir Bulej's avatar
      - Added annotation processor (DislClassFinder) to find DiSL classes. · 072e8bab
      Lubomir Bulej authored
      - Modified builds system to automatically find DiSL classes in test suites.
      - Removed MANIFEST.MF files from test suites.
      - Changed class name separator for DiSL-Classes attribute from colon to comma,
        because the Ant "jar" task does not like the colon as a separator when generating
        MANIFEST.MF on the fly.
      072e8bab
  25. 29 May, 2014 1 commit
    • Lubomir Bulej's avatar
      - Merged the new DiSL agent code. Code generations options are not yet used. · ed524974
      Lubomir Bulej authored
      - Removed the old DiSL agent code as well as the old Java agent.
      - Copied old shared DiSL agent headers to Shadow VM agent.
      - Added JDK includes for JNI and JVMTI to avoid looking for them.
      - Unified the naming of source directories.
      - Updated the test infrastructure to the new build system layout.
      - Examples can be now run even from the source distribution.
      ed524974
  26. 27 May, 2014 1 commit
    • Lubomir Bulej's avatar
      Sanitized the build system before merging the new DiSL agent: · a8e0a26b
      Lubomir Bulej authored
      - The build.xml file has been cleaned up extensively.
      - The build system for examples has been simplified and cleaned up.
      - There is support for binary DiSL releases with examples and documentation.
      - Examples should be used with a binary DiSL distribution (see output/dist).
      - Moved the disl.py launcher out of the examples subdirectory.
      - Test suite Runner has been modified to accept locations and native library names from outside.
      a8e0a26b
  27. 14 May, 2014 6 commits