projects
/
deliverable
/
tracecompass.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tmf: buf 495911 Fix timestamp transform fast for small timestamps
[deliverable/tracecompass.git]
/
tmf
/
org.eclipse.tracecompass.tmf.core
/
src
/
org
/
eclipse
/
tracecompass
/
internal
/
tmf
/
core
/
synchronization
/
TmfTimestampTransformLinearFast.java
diff --git
a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/tmf/core/synchronization/TmfTimestampTransformLinearFast.java
b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/tmf/core/synchronization/TmfTimestampTransformLinearFast.java
index 30531a60f6e921b6988d91bad7a688a821755d6b..3e9c0f89d2d8152faa0dc79dafc6127f12773a4a 100644
(file)
--- a/
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/tmf/core/synchronization/TmfTimestampTransformLinearFast.java
+++ b/
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/tmf/core/synchronization/TmfTimestampTransformLinearFast.java
@@
-13,6
+13,8
@@
package org.eclipse.tracecompass.internal.tmf.core.synchronization;
package org.eclipse.tracecompass.internal.tmf.core.synchronization;
+import java.io.IOException;
+import java.io.ObjectInputStream;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.BigDecimal;
import java.math.MathContext;
@@
-73,8
+75,7
@@
public class TmfTimestampTransformLinearFast implements ITmfTimestampTransformIn
private final int fDeltaBits;
private final int fHashCode;
private final int fDeltaBits;
private final int fHashCode;
- private long fOffset;
-
+ private transient long fOffset;
private transient long fRangeStart;
private transient long fScaleMiss;
private transient long fScaleHit;
private transient long fRangeStart;
private transient long fScaleMiss;
private transient long fScaleHit;
@@
-151,8
+152,7
@@
public class TmfTimestampTransformLinearFast implements ITmfTimestampTransformIn
fDeltaBits = Math.max(Math.min(width, DECIMAL_BITS), 0);
fDeltaMax = 1 << fDeltaBits;
fAlphaLong = fAlpha.multiply(BigDecimal.valueOf(fDeltaMax), MC).longValue();
fDeltaBits = Math.max(Math.min(width, DECIMAL_BITS), 0);
fDeltaMax = 1 << fDeltaBits;
fAlphaLong = fAlpha.multiply(BigDecimal.valueOf(fDeltaMax), MC).longValue();
- fRangeStart = 0L;
- fOffset = 0L;
+ rescale(0);
fScaleMiss = 0;
fScaleHit = 0;
fHashCode = HASHER.newHasher()
fScaleMiss = 0;
fScaleHit = 0;
fHashCode = HASHER.newHasher()
@@
-185,8
+185,7
@@
public class TmfTimestampTransformLinearFast implements ITmfTimestampTransformIn
*
* TODO: use exact math arithmetic to detect overflow when switching to Java 8
*/
*
* TODO: use exact math arithmetic to detect overflow when switching to Java 8
*/
- fRangeStart = timestamp - (timestamp % fDeltaMax);
- fOffset = BigDecimal.valueOf(fRangeStart).multiply(fAlpha, MC).add(fBeta, MC).longValue();
+ rescale(timestamp);
delta = Math.abs(timestamp - fRangeStart);
fScaleMiss++;
} else {
delta = Math.abs(timestamp - fRangeStart);
fScaleMiss++;
} else {
@@
-195,6
+194,11
@@
public class TmfTimestampTransformLinearFast implements ITmfTimestampTransformIn
return ((fAlphaLong * delta) >> fDeltaBits) + fOffset;
}
return ((fAlphaLong * delta) >> fDeltaBits) + fOffset;
}
+ private void rescale(long timestamp) {
+ fRangeStart = timestamp - (timestamp % fDeltaMax);
+ fOffset = BigDecimal.valueOf(fRangeStart).multiply(fAlpha, MC).add(fBeta, MC).longValue();
+ }
+
//-------------------------------------------------------------------------
// Transform composition
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
// Transform composition
//-------------------------------------------------------------------------
@@
-308,4
+312,12
@@
public class TmfTimestampTransformLinearFast implements ITmfTimestampTransformIn
return fHashCode;
}
return fHashCode;
}
+ // Deserialization method, make sure there is a first scaling
+ private void readObject(ObjectInputStream stream)
+ throws IOException, ClassNotFoundException {
+ stream.defaultReadObject();
+
+ rescale(0);
+ }
+
}
\ No newline at end of file
}
\ No newline at end of file
This page took
0.024801 seconds
and
5
git commands to generate.