Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Implement missing optimizations

This commit introduces some missing union optimizations during

exclude rule merging. Those weren't implemented because we didn't

see them in our test cases, but we had customer logs showing such

operations.

It's worth noting this commit adds an utility class which transforms

a JSON dump from a log entry into code which can be used to create

test cases.

  1. … 3 more files in changeset.
Implement missing optimizations

This commit introduces some missing union optimizations during

exclude rule merging. Those weren't implemented because we didn't

see them in our test cases, but we had customer logs showing such

operations.

It's worth noting this commit adds an utility class which transforms

a JSON dump from a log entry into code which can be used to create

test cases.

  1. … 3 more files in changeset.
Add more missing optimizations

  1. … 2 more files in changeset.
Add more missing optimizations

  1. … 2 more files in changeset.
Add ability to trace stack overflows only

Add ability to trace stack overflows only

Add ability to trace stack overflows only

Optimize A ∩ (B ∪ C)

-> (A ∩ B) ∪ (A ∩ C)

User data shows this can often be reduced to an empty set because

distribution will compute empty sets on both sides.

  1. … 1 more file in changeset.
Optimize A ∩ (B ∪ C)

-> (A ∩ B) ∪ (A ∩ C)

User data shows this can often be reduced to an empty set because

distribution will compute empty sets on both sides.

  1. … 1 more file in changeset.
Optimize A ∩ (B ∪ C)

-> (A ∩ B) ∪ (A ∩ C)

User data shows this can often be reduced to an empty set because

distribution will compute empty sets on both sides.

  1. … 1 more file in changeset.
Add missing optimization of intersection

when module ids are different

  1. … 1 more file in changeset.
Add missing optimization of intersection

when module ids are different

  1. … 1 more file in changeset.
Add missing optimization of intersection

  1. … 1 more file in changeset.
Add missing optimization of intersection

  1. … 1 more file in changeset.
Add a logging exclude factory

This factory is enabled if, and only if, the log level is set to debug (`-d`).

Then it will log all merge operations, and report if there's a stack overflow

in merging exclude specs.

    • -0
    • +96
    ./LoggingExcludeFactory.java
  1. … 13 more files in changeset.
Add a logging exclude factory

This factory is enabled if, and only if, the log level is set to debug (`-d`).

Then it will log all merge operations, and report if there's a stack overflow

in merging exclude specs.

    • -0
    • +96
    ./LoggingExcludeFactory.java
  1. … 13 more files in changeset.
Add a logging exclude factory

This factory is enabled if, and only if, the log level is set to debug (`-d`).

Then it will log all merge operations, and report if there's a stack overflow

in merging exclude specs.

  1. … 13 more files in changeset.
Add test coverage for intersections of 3 elements

and add more test coverage for unions

  1. … 1 more file in changeset.
Add test coverage for intersections of 3 elements

and add more test coverage for unions

  1. … 1 more file in changeset.
Add randomization of sets

  1. … 2 more files in changeset.
Add randomization of sets

  1. … 2 more files in changeset.
Fix incorrect reduction of intersections

Simplification of intersections in the normalizing exclude

factory is done by pairs. There was a bug in the reduction

algorithm, that would cause the reduction result to be

wrong because we used the wrong, non simplified, exclude spec

for merging whenever a merge occured, to reduce on the next

item in a list.

  1. … 2 more files in changeset.
Fix incorrect reduction of intersections

Simplification of intersections in the normalizing exclude

factory is done by pairs. There was a bug in the reduction

algorithm, that would cause the reduction result to be

wrong because we used the wrong, non simplified, exclude spec

for merging whenever a merge occured, to reduce on the next

item in a list.

  1. … 2 more files in changeset.
Fix incorrect reduction of intersections

Simplification of intersections in the normalizing exclude

factory is done by pairs. There was a bug in the reduction

algorithm, that would cause the reduction result to be

wrong because we used the wrong, non simplified, exclude spec

for merging whenever a merge occured, to reduce on the next

item in a list.

  1. … 2 more files in changeset.
Optimize a couple more cases

Optimize intersect(group, module) -> moduleId(group, module)

Optimize intersect(group, module names) -> moduleIdSet(group + name...)

  1. … 1 more file in changeset.
Optimize a couple more cases

Optimize intersect(group, module) -> moduleId(group, module)

Optimize intersect(group, module names) -> moduleIdSet(group + name...)

  1. … 1 more file in changeset.
Optimize a couple more cases

Optimize intersect(group, module) -> moduleId(group, module)

Optimize intersect(group, module names) -> moduleIdSet(group + name...)

  1. … 1 more file in changeset.
Fix incorrect simplification of intersection of unions

The result of simplification was only correct if there was one

item not in common on both hands of the intersection.

Fixes #9718

  1. … 1 more file in changeset.
Fix incorrect simplification of intersection of unions

The result of simplification was only correct if there was one

item not in common on both hands of the intersection.

Fixes #9718

  1. … 1 more file in changeset.
Fix incorrect simplification of intersection of unions

The result of simplification was only correct if there was one

item not in common on both hands of the intersection.

Fixes #9718

  1. … 1 more file in changeset.