From ece83110e3d876aa4f01d42f816f45b76885c571 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 4 Mar 2014 18:48:43 +0100 Subject: [PATCH] file and doc mod stamps should be equal after save --- .../vfs/newvfs/impl/VirtualFileSystemEntry.java | 4 ++++ .../util/src/com/intellij/util/LocalTimeCounter.java | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java index 29844fb0e1c5..e0772bc3e4fc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java @@ -69,6 +69,10 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile { private volatile VirtualDirectoryImpl myParent; private volatile int myFlags; private volatile int myId; + + static { + assert (~ALL_FLAGS_MASK) == LocalTimeCounter.TIME_MASK; + } public VirtualFileSystemEntry(int nameId, VirtualDirectoryImpl parent, int id, @PersistentFS.Attributes int attributes) { myParent = parent; diff --git a/platform/util/src/com/intellij/util/LocalTimeCounter.java b/platform/util/src/com/intellij/util/LocalTimeCounter.java index 1cfbdb7e4df0..41b09b723197 100644 --- a/platform/util/src/com/intellij/util/LocalTimeCounter.java +++ b/platform/util/src/com/intellij/util/LocalTimeCounter.java @@ -18,12 +18,14 @@ package com.intellij.util; import java.util.concurrent.atomic.AtomicLong; public class LocalTimeCounter { + /** + * VirtualFile.modificationStamp is kept modulo this mask, and is compared with other stamps. Let's avoid accidental stamp inequalities + * by normalizing all of them. + */ + public static final int TIME_MASK = 0x00ffffff; private static final AtomicLong ourCurrentTime = new AtomicLong(); - private LocalTimeCounter() { - } - public static long currentTime() { - return ourCurrentTime.incrementAndGet(); + return TIME_MASK & (int)ourCurrentTime.incrementAndGet(); } } \ No newline at end of file