Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Document that enum order is important for metadata cache

  1. … 1 more file in changeset.
Avoid computing the Maven scope name in lower case

This happens to create significant garbage.

  1. … 1 more file in changeset.
Use guava for equals() and hashCode()

  1. … 6 more files in changeset.
Make Exclude.hashCode efficient

This method is called on a very hot code path and

calling Objects.hashCode implicitly creates an array.

Use IDEA-generated hashCode method instead.

Make `DefaultExclude.artifacts` nullable

Use `null` value for exclude that doesn't exclude artifacts

This is likely more efficient that the existing wildcard match,

and more consistent with other wildcard matches.

  1. … 10 more files in changeset.
Make `Exclude.patternMatcher` nullable

Use a null value for the default exclude rule pattern matching.

Only use a concrete value when defined in an Ivy descriptor.

  1. … 4 more files in changeset.
Use ModuleIdentifierFactory when creating ExcludeRules for module metadata

  1. … 6 more files in changeset.
Write structured excludes to module metadata

Instead of an encoded "$group:$module" string keep the parts

separate in module metadata and in internal representations

of variant dependency excludes.

  1. … 12 more files in changeset.
Removed the legacy `ModuleDescriptorState` type from the various metadata types. All data is now contained in properties on the relevant metadata types, rather than spread or duplicated across the metadata and the descriptor types.

    • -30
    • +0
    ./MutableModuleDescriptorState.java
  1. … 22 more files in changeset.
Merged the 'status' property from the legacy `ModuleDescriptorState` into the 'status' property on the metadata types.

  1. … 16 more files in changeset.
Moved the 'generated' property from the legacy `ModuleDescriptorState` onto the relevant metadata types and renamed the property to 'missing'.

  1. … 25 more files in changeset.
Moved the extra attributes for Ivy metadata from the legacy `ModuleDescriptorState` onto the relevant metadata types. The Maven metadata has extra Ivy attributes, so don't persist these for Maven modules.

  1. … 14 more files in changeset.
Moved the module level exclude rule definitions and branch property for Ivy metadata from the legacy `ModuleDescriptorState` onto the relevant metadata types. The Maven metadata has no module level excludes or branch property, so don't persist these for Maven modules.

Incremented the cache layout version to reflect the changes to the persisted metadata.

  1. … 25 more files in changeset.
Moved the artifact definitions for Ivy and Maven metadata from the legacy `ModuleDescriptorState` onto the relevant metadata types. The Maven metadata always includes a single hard-coded artifact, so don't persist the artifact definitions for Maven modules.

Changed the Maven metadata implementation so that the Jar artifact is attached to the 'compile' configuration and is inherited by the other configurations. Previously the artifact was attached to the 'default' configuration.

Incremented the cache layout version to reflect the changes to the persisted metadata.

  1. … 30 more files in changeset.
Changed construction of default metadata when a pom/ivy.xml is missing to always define a 'jar' artifact regardless of the artifact overrides expressed in dependency declarations.

    • -12
    • +3
    ./MutableModuleDescriptorState.java
  1. … 13 more files in changeset.
Some simplifications to the Ivy and Maven metadata parsing. Don't extract and persist the `description` and `publicationDate` properties for Ivy and Maven as these values are not required for dependency resolution. Incremented the cache version to reflect this change.

Removed some dead code that attempted to include a `description` in a generated ivy.xml, as there is no way to specify this in the Gradle DSL.

Moved some Maven metadata properties from constructor parameters to mutable properties.

  1. … 16 more files in changeset.
Change `DefaultExclude` constructors to use a `ModuleIdentifier` directly

This change will reduce the need to pass a factory around and allow us to reuse

identifiers directly.

  1. … 5 more files in changeset.
Revert De-duplicate commonly used immutable objects in dependency resolution and IDE changes

Commits reverted:

- 807b1e4f8d1585d93c1de3e9ca83d99d0819e2d2

- 9482b0b05374253cafdb776550d7016385912e04

- 4ecead06b53ec6b0f15c517bf0d0c6a74c3b3c05

- db1135a8a5f1c507e0df3c03ad12ddc963799e4d

- 7350bcbae30a777909cec74ebfd5a91d2c89081e

Additionally, minor changes to avoid usage of introduced

classes and methods from subsequent commits.

Issue: gradle/gradle-private#563

  1. … 108 more files in changeset.
De-duplicate (= intern) some instances in dependency resolution

- Reduce memory usage of dependency resolution by de-duplicating the

most commonly used immutable instances.

- Objects aren't strictly immutable: displayName is calculated lazily

- solution is thread-safe without synchronization

- lazy calculation is needed for efficient interning since a lookup

will always create a new instance.

- Use strong references in some instance interners

- strong references cause less GC overhead than weak references

- Strong references:

DefaultModuleIdentifier

DefaultModuleVersionIdentifier

DefaultModuleVersionSelector

DefaultModuleComponentIdentifier

DefaultModuleComponentSelector

DefaultProjectComponentSelector

- Weak references:

DefaultLibraryBinaryIdentifier

DefaultLibraryComponentSelector

DefaultIvyArtifactName

- Both reference types:

DefaultBuildIdentifier

DefaultProjectComponentIdentifier

- The reason for special handing is that DefaultBuildIdentifier

has a state field "current" as part of the instance which

isn't part of equals/hashCode.

+review REVIEW-6277

  1. … 103 more files in changeset.
Moved `ModuleDescriptorState.dependencies` up to the `Metadata` types.

  1. … 19 more files in changeset.
Moved `ModuleDescriptorState.configurations` up to the `Metadata` types.

  1. … 20 more files in changeset.
Don't persist the configurations of a Maven module metadata, as they are always the same for every Maven module.

Incremented the metadata cache layout version.

  1. … 20 more files in changeset.
Merged the `Dependency` hierarchy into the `DependencyMetadata` hierarchy.

  1. … 36 more files in changeset.
Moved the logic for unpacking a `DependencyMetadata` to produce a `Dependency` to live with the code that generates an ivy.xml, which is the only place where it is used.

    • -34
    • +0
    ./MutableModuleDescriptorState.java
  1. … 8 more files in changeset.
Started to separate the `DependencyMetadata` implementations into Ivy specific, Maven specific and local implementations. This will allow us to make type specific performance optimisations by moving behaviour into the implementations rather than treating them as buckets of data.

This change adds Ivy and Maven `Dependency` sub types and retains this type when persisted via the module metadata cache. Don't persist data for Maven dependencies that is always constant for dependencies of this type.

    • -0
    • +54
    ./IvyDependency.java
    • -0
    • +52
    ./MavenDependency.java
  1. … 9 more files in changeset.
Started to separate the implementations of module meta-data into an immutable and a mutable implementation.

    • -0
    • +19
    ./MutableModuleDescriptorState.java
  1. … 25 more files in changeset.
Some renames.

  1. … 13 more files in changeset.
Moved the module type specific state from the module meta indexed cache entry to the serialized meta data for the module. Serialize `ModuleComponentResolveMetadata` instances directly instead of unpacking to a mutable `ModuleDescriptorState` instance.

  1. … 13 more files in changeset.
Polishing

+review REVIEW-6123

  1. … 7 more files in changeset.
Fix for GRADLE-3440 & some improved integTests

  1. … 8 more files in changeset.