Bug 785738 Part 3: use PRTime instead of int64_t where appropriate; r=ehsan
authorLandry Breuil <landry@openbsd.org>
Thu, 30 Aug 2012 09:10:35 +0200
changeset 103873 78648d1350939b9b30849a120c39608bd53fd007
parent 103872 b523c75e74b895cfcc34c1094289db41833b2b4d
child 103874 5108cd2d73068e4547ae70190323bc6edfb51abe
push id14212
push userlandry@openbsd.org
push dateThu, 30 Aug 2012 07:15:08 +0000
treeherdermozilla-inbound@6442238886ea [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersehsan
bugs785738
milestone18.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 785738 Part 3: use PRTime instead of int64_t where appropriate; r=ehsan
content/base/src/nsDOMFile.cpp
dom/devicestorage/nsDeviceStorage.cpp
dom/plugins/base/nsPluginHost.cpp
image/src/imgLoader.cpp
modules/libjar/zipwriter/src/nsZipWriter.cpp
netwerk/base/src/nsDirectoryIndexStream.cpp
profile/dirserviceprovider/src/nsProfileLock.cpp
profile/dirserviceprovider/src/nsProfileLock.h
rdf/datasource/src/nsFileSystemDataSource.cpp
toolkit/components/filepicker/nsFileView.cpp
toolkit/components/places/Database.cpp
toolkit/components/startup/nsAppStartup.cpp
toolkit/profile/nsIToolkitProfile.idl
toolkit/profile/nsToolkitProfileService.cpp
toolkit/xre/nsAppRunner.cpp
xpcom/io/nsIFile.idl
xpcom/io/nsLocalFileOS2.cpp
xpcom/io/nsLocalFileUnix.cpp
xpcom/io/nsLocalFileWin.cpp
xpcom/system/nsIXULRuntime.idl
--- a/content/base/src/nsDOMFile.cpp
+++ b/content/base/src/nsDOMFile.cpp
@@ -489,17 +489,17 @@ nsDOMFileFile::GetMozFullPathInternal(ns
 {
   NS_ASSERTION(mIsFile, "Should only be called on files");
   return mFile->GetPath(aFilename);
 }
 
 NS_IMETHODIMP
 nsDOMFileFile::GetLastModifiedDate(JSContext* cx, JS::Value *aLastModifiedDate)
 {
-  int64_t msecs;
+  PRTime msecs;
   mFile->GetLastModifiedTime(&msecs);
   JSObject* date = JS_NewDateObjectMsec(cx, msecs);
   if (date) {
     aLastModifiedDate->setObject(*date);
   }
   else {
     aLastModifiedDate->setNull();
   }
--- a/dom/devicestorage/nsDeviceStorage.cpp
+++ b/dom/devicestorage/nsDeviceStorage.cpp
@@ -311,17 +311,17 @@ DeviceStorageFile::collectFilesInternal(
     return;
   }
 
   nsCOMPtr<nsIDirectoryEnumerator> files = do_QueryInterface(e);
   nsCOMPtr<nsIFile> f;
 
   while (NS_SUCCEEDED(files->GetNextFile(getter_AddRefs(f))) && f) {
 
-    int64_t msecs;
+    PRTime msecs;
     f->GetLastModifiedTime(&msecs);
 
     if (msecs < aSince) {
       continue;
      }
 
     bool isDir;
     f->IsDirectory(&isDir);
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -1999,17 +1999,17 @@ nsPluginHost::FirstPluginWithPath(const 
   }
   return nullptr;
 }
 
 namespace {
 
 int64_t GetPluginLastModifiedTime(const nsCOMPtr<nsIFile>& localfile)
 {
-  int64_t fileModTime = LL_ZERO;
+  PRTime fileModTime = LL_ZERO;
 
 #if defined(XP_MACOSX)
   // On OS X the date of a bundle's "contents" (i.e. of its Info.plist file)
   // is a much better guide to when it was last modified than the date of
   // its package directory.  See bug 313700.
   nsCOMPtr<nsILocalFileMac> localFileMac = do_QueryInterface(localfile);
   if (localFileMac) {
     localFileMac->GetBundleContentsLastModifiedTime(&fileModTime);
--- a/image/src/imgLoader.cpp
+++ b/image/src/imgLoader.cpp
@@ -1279,17 +1279,17 @@ bool imgLoader::ValidateEntry(imgCacheEn
   // Special treatment for file URLs - aEntry has expired if file has changed
   nsCOMPtr<nsIFileURL> fileUrl(do_QueryInterface(aURI));
   if (fileUrl) {
     uint32_t lastModTime = aEntry->GetTouchedTime();
 
     nsCOMPtr<nsIFile> theFile;
     rv = fileUrl->GetFile(getter_AddRefs(theFile));
     if (NS_SUCCEEDED(rv)) {
-      int64_t fileLastMod;
+      PRTime fileLastMod;
       rv = theFile->GetLastModifiedTime(&fileLastMod);
       if (NS_SUCCEEDED(rv)) {
         // nsIFile uses millisec, NSPR usec
         fileLastMod *= 1000;
         hasExpired = SecondsFromPRTime((PRTime)fileLastMod) > lastModTime;
       }
     }
   }
--- a/modules/libjar/zipwriter/src/nsZipWriter.cpp
+++ b/modules/libjar/zipwriter/src/nsZipWriter.cpp
@@ -359,17 +359,17 @@ NS_IMETHODIMP nsZipWriter::AddEntryFile(
     NS_ENSURE_SUCCESS(rv, rv);
     if (!exists)
         return NS_ERROR_FILE_NOT_FOUND;
 
     bool isdir;
     rv = aFile->IsDirectory(&isdir);
     NS_ENSURE_SUCCESS(rv, rv);
 
-    int64_t modtime;
+    PRTime modtime;
     rv = aFile->GetLastModifiedTime(&modtime);
     NS_ENSURE_SUCCESS(rv, rv);
     modtime *= PR_USEC_PER_MSEC;
 
     uint32_t permissions;
     rv = aFile->GetPermissions(&permissions);
     NS_ENSURE_SUCCESS(rv, rv);
 
--- a/netwerk/base/src/nsDirectoryIndexStream.cpp
+++ b/netwerk/base/src/nsDirectoryIndexStream.cpp
@@ -273,17 +273,17 @@ nsDirectoryIndexStream::Read(char* aBuf,
                         this));
                 continue;
             }
 #endif
 
             int64_t fileSize = 0;
             current->GetFileSize( &fileSize );
 
-            int64_t fileInfoModifyTime = 0;
+            PRTime fileInfoModifyTime = 0;
             current->GetLastModifiedTime( &fileInfoModifyTime );
             fileInfoModifyTime *= PR_USEC_PER_MSEC;
 
             mBuf.AppendLiteral("201: ");
 
             // The "filename" field
             char* escaped = nullptr;
             if (!NS_IsNativeUTF8()) {
--- a/profile/dirserviceprovider/src/nsProfileLock.cpp
+++ b/profile/dirserviceprovider/src/nsProfileLock.cpp
@@ -421,17 +421,17 @@ PR_BEGIN_MACRO                          
         printf("symlink() failed. errno = %d\n", errno);
 #endif
         rv = NS_ERROR_FAILURE;
     }
     return rv;
 }
 #endif /* XP_UNIX */
 
-nsresult nsProfileLock::GetReplacedLockTime(int64_t *aResult) {
+nsresult nsProfileLock::GetReplacedLockTime(PRTime *aResult) {
     *aResult = mReplacedLockTime;
     return NS_OK;
 }
 
 nsresult nsProfileLock::Lock(nsIFile* aProfileDir,
                              nsIProfileUnlocker* *aUnlocker)
 {
 #if defined (XP_MACOSX)
--- a/profile/dirserviceprovider/src/nsProfileLock.h
+++ b/profile/dirserviceprovider/src/nsProfileLock.h
@@ -54,21 +54,21 @@ public:
      * the application is in the process of shutting down because of a fatal
      * signal, set aFatalSignal to true.
      */
     nsresult                Unlock(bool aFatalSignal = false);
 
     /**
      * Get the modification time of a replaced profile lock, otherwise 0.
      */
-    nsresult                GetReplacedLockTime(int64_t* aResult);
+    nsresult                GetReplacedLockTime(PRTime* aResult);
 
 private:
     bool                    mHaveLock;
-    int64_t                 mReplacedLockTime;
+    PRTime                  mReplacedLockTime;
 
 #if defined (XP_WIN)
     HANDLE                  mLockFileHandle;
 #elif defined (XP_OS2)
     LHANDLE                 mLockFileHandle;
 #elif defined (XP_UNIX)
 
     struct RemovePidLockFilesExiting {
--- a/rdf/datasource/src/nsFileSystemDataSource.cpp
+++ b/rdf/datasource/src/nsFileSystemDataSource.cpp
@@ -1128,17 +1128,17 @@ FileSystemDataSource::GetLastMod(nsIRDFR
     if (NS_FAILED(rv = fileURL->GetFile(getter_AddRefs(aFile))))
         return(rv);
     if (!aFile)
         return(NS_ERROR_UNEXPECTED);
 
     // ensure that we DO NOT resolve aliases
     aFile->SetFollowLinks(false);
 
-    int64_t lastModDate;
+    PRTime lastModDate;
     if (NS_FAILED(rv = aFile->GetLastModifiedTime(&lastModDate)))
         return(rv);
 
     // convert from milliseconds to seconds
     PRTime      temp64, thousand;
     LL_I2L(thousand, PR_MSEC_PER_SEC);
     LL_MUL(temp64, lastModDate, thousand);
 
--- a/toolkit/components/filepicker/nsFileView.cpp
+++ b/toolkit/components/filepicker/nsFileView.cpp
@@ -745,17 +745,17 @@ nsFileView::GetCellText(int32_t aRow, ns
     return NS_OK;
   }
 
   const PRUnichar* colID;
   aCol->GetIdConst(&colID);
   if (NS_LITERAL_STRING("FilenameColumn").Equals(colID)) {
     curFile->GetLeafName(aCellText);
   } else if (NS_LITERAL_STRING("LastModifiedColumn").Equals(colID)) {
-    int64_t lastModTime;
+    PRTime lastModTime;
     curFile->GetLastModifiedTime(&lastModTime);
     // XXX FormatPRTime could take an nsAString&
     nsAutoString temp;
     mDateFormatter->FormatPRTime(nullptr, kDateFormatShort, kTimeFormatSeconds,
                                  lastModTime * 1000, temp);
     aCellText = temp;
   } else {
     // file size
@@ -941,17 +941,17 @@ SortSizeCallback(const void* aElement1, 
 }
 
 static int
 SortDateCallback(const void* aElement1, const void* aElement2, void* aContext)
 {
   nsIFile* file1 = *static_cast<nsIFile* const *>(aElement1);
   nsIFile* file2 = *static_cast<nsIFile* const *>(aElement2);
 
-  int64_t time1, time2;
+  PRTime time1, time2;
   file1->GetLastModifiedTime(&time1);
   file2->GetLastModifiedTime(&time2);
 
   if (LL_EQ(time1, time2))
     return 0;
 
   return (LL_CMP(time1, <, time2) ? -1 : 1);
 }
--- a/toolkit/components/places/Database.cpp
+++ b/toolkit/components/places/Database.cpp
@@ -85,17 +85,17 @@ hasRecentCorruptDB()
     NS_ENSURE_TRUE(next, false);
     nsCOMPtr<nsIFile> currFile = do_QueryInterface(next);
     NS_ENSURE_TRUE(currFile, false);
 
     nsAutoString leafName;
     if (NS_SUCCEEDED(currFile->GetLeafName(leafName)) &&
         leafName.Length() >= DATABASE_CORRUPT_FILENAME.Length() &&
         leafName.Find(".corrupt", DATABASE_FILENAME.Length()) != -1) {
-      int64_t lastMod = 0;
+      PRTime lastMod = 0;
       currFile->GetLastModifiedTime(&lastMod);
       NS_ENSURE_TRUE(lastMod > 0, false);
       return (PR_Now() - lastMod) > RECENT_BACKUP_TIME_MICROSEC;
     }
   }
   return false;
 }
 
--- a/toolkit/components/startup/nsAppStartup.cpp
+++ b/toolkit/components/startup/nsAppStartup.cpp
@@ -952,17 +952,17 @@ nsAppStartup::TrackStartupCrashBegin(boo
   }
 
   bool inSafeMode = false;
   nsCOMPtr<nsIXULRuntime> xr = do_GetService(XULRUNTIME_SERVICE_CONTRACTID);
   NS_ENSURE_TRUE(xr, NS_ERROR_FAILURE);
 
   xr->GetInSafeMode(&inSafeMode);
 
-  int64_t replacedLockTime;
+  PRTime replacedLockTime;
   rv = xr->GetReplacedLockTime(&replacedLockTime);
 
   if (NS_FAILED(rv) || !replacedLockTime) {
     if (!inSafeMode)
       Preferences::ClearUser(kPrefRecentCrashes);
     GetAutomaticSafeModeNecessary(aIsSafeModeNecessary);
     return NS_OK;
   }
--- a/toolkit/profile/nsIToolkitProfile.idl
+++ b/toolkit/profile/nsIToolkitProfile.idl
@@ -29,17 +29,17 @@ interface nsIProfileLock : nsISupports
      *
      * In some cases, this directory may just be the main profile directory.
      */
     readonly attribute nsIFile localDirectory;
 
     /**
      * The timestamp of an existing profile lock at lock time.
      */
-    readonly attribute int64_t replacedLockTime;
+    readonly attribute PRTime replacedLockTime;
 
     /**
      * Unlock the profile.
      */
     void unlock();
 };
 
 /**
--- a/toolkit/profile/nsToolkitProfileService.cpp
+++ b/toolkit/profile/nsToolkitProfileService.cpp
@@ -347,17 +347,17 @@ nsToolkitProfileLock::Unlock()
     }
     mDirectory = nullptr;
     mLocalDirectory = nullptr;
 
     return NS_OK;
 }
 
 NS_IMETHODIMP
-nsToolkitProfileLock::GetReplacedLockTime(int64_t *aResult)
+nsToolkitProfileLock::GetReplacedLockTime(PRTime *aResult)
 {
     mLock.GetReplacedLockTime(aResult);
     return NS_OK;
 }
 
 nsToolkitProfileLock::~nsToolkitProfileLock()
 {
     if (mDirectory) {
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -805,17 +805,17 @@ nsXULAppInfo::InvalidateCachesOnRestart(
     static const char kInvalidationHeader[] = NS_LINEBREAK "InvalidateCaches=1" NS_LINEBREAK;
     PR_Write(fd, kInvalidationHeader, sizeof(kInvalidationHeader) - 1);
     PR_Close(fd);
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsXULAppInfo::GetReplacedLockTime(int64_t *aReplacedLockTime)
+nsXULAppInfo::GetReplacedLockTime(PRTime *aReplacedLockTime)
 {
   if (!gProfileLock)
     return NS_ERROR_NOT_AVAILABLE;
   gProfileLock->GetReplacedLockTime(aReplacedLockTime);
   return NS_OK;
 }
 
 NS_IMETHODIMP
--- a/xpcom/io/nsIFile.idl
+++ b/xpcom/io/nsIFile.idl
@@ -183,18 +183,18 @@ interface nsIFile : nsISupports
     attribute unsigned long permissions;
     attribute unsigned long permissionsOfLink;
 
     /**
      *  File Times are to be in milliseconds from
      *  midnight (00:00:00), January 1, 1970 Greenwich Mean
      *  Time (GMT).
      */
-    attribute int64_t lastModifiedTime;
-    attribute int64_t lastModifiedTimeOfLink;
+    attribute PRTime lastModifiedTime;
+    attribute PRTime lastModifiedTimeOfLink;
 
     /**
      *  WARNING!  On the Mac, getting/setting the file size with nsIFile
      *  only deals with the size of the data fork.  If you need to
      *  know the size of the combined data and resource forks use the
      *  GetFileSizeWithResFork() method defined on nsILocalFileMac.
      */
     attribute int64_t fileSize;
--- a/xpcom/io/nsLocalFileOS2.cpp
+++ b/xpcom/io/nsLocalFileOS2.cpp
@@ -1697,17 +1697,17 @@ nsLocalFile::Remove(bool recursive)
     if (rv == (nsresult)-1)
         rv = NSRESULT_FOR_ERRNO();
 
     MakeDirty();
     return rv;
 }
 
 NS_IMETHODIMP
-nsLocalFile::GetLastModifiedTime(int64_t *aLastModifiedTime)
+nsLocalFile::GetLastModifiedTime(PRTime *aLastModifiedTime)
 {
     // Check we are correctly initialized.
     CHECK_mWorkingPath();
 
     NS_ENSURE_ARG(aLastModifiedTime);
 
     *aLastModifiedTime = 0;
     nsresult rv = Stat();
@@ -1718,40 +1718,40 @@ nsLocalFile::GetLastModifiedTime(int64_t
     int64_t usecPerMsec;
     LL_I2L(usecPerMsec, PR_USEC_PER_MSEC);
     LL_DIV(*aLastModifiedTime, mFileInfo64.modifyTime, usecPerMsec);
     return NS_OK;
 }
 
 
 NS_IMETHODIMP
-nsLocalFile::GetLastModifiedTimeOfLink(int64_t *aLastModifiedTime)
+nsLocalFile::GetLastModifiedTimeOfLink(PRTime *aLastModifiedTime)
 {
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 
 NS_IMETHODIMP
-nsLocalFile::SetLastModifiedTime(int64_t aLastModifiedTime)
+nsLocalFile::SetLastModifiedTime(PRTime aLastModifiedTime)
 {
     // Check we are correctly initialized.
     CHECK_mWorkingPath();
 
     return nsLocalFile::SetModDate(aLastModifiedTime);
 }
 
 
 NS_IMETHODIMP
-nsLocalFile::SetLastModifiedTimeOfLink(int64_t aLastModifiedTime)
+nsLocalFile::SetLastModifiedTimeOfLink(PRTime aLastModifiedTime)
 {
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 nsresult
-nsLocalFile::SetModDate(int64_t aLastModifiedTime)
+nsLocalFile::SetModDate(PRTime aLastModifiedTime)
 {
     nsresult rv = Stat();
 
     if (NS_FAILED(rv))
         return rv;
 
     PRExplodedTime pret;
     FILESTATUS3 pathInfo;
--- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp
@@ -958,72 +958,72 @@ nsLocalFile::Remove(bool recursive)
                 return rv;
         }
     }
 
     return NSRESULT_FOR_RETURN(rmdir(mPath.get()));
 }
 
 NS_IMETHODIMP
-nsLocalFile::GetLastModifiedTime(int64_t *aLastModTime)
+nsLocalFile::GetLastModifiedTime(PRTime *aLastModTime)
 {
     CHECK_mPath();
     NS_ENSURE_ARG(aLastModTime);
 
     PRFileInfo64 info;
     if (PR_GetFileInfo64(mPath.get(), &info) != PR_SUCCESS)
         return NSRESULT_FOR_ERRNO();
-    int64_t modTime = int64_t(info.modifyTime);
+    PRTime modTime = info.modifyTime;
     if (modTime == 0)
         *aLastModTime = 0;
     else
-        *aLastModTime = modTime / int64_t(PR_USEC_PER_MSEC);
+        *aLastModTime = modTime / PR_USEC_PER_MSEC;
 
     return NS_OK;
 }
 
 NS_IMETHODIMP
-nsLocalFile::SetLastModifiedTime(int64_t aLastModTime)
+nsLocalFile::SetLastModifiedTime(PRTime aLastModTime)
 {
     CHECK_mPath();
 
     int result;
     if (aLastModTime != 0) {
         ENSURE_STAT_CACHE();
         struct utimbuf ut;
         ut.actime = mCachedStat.st_atime;
 
         // convert milliseconds to seconds since the unix epoch
-        ut.modtime = (time_t)(double(aLastModTime) / PR_MSEC_PER_SEC);
+        ut.modtime = (time_t)(aLastModTime / PR_MSEC_PER_SEC);
         result = utime(mPath.get(), &ut);
     } else {
         result = utime(mPath.get(), nullptr);
     }
     return NSRESULT_FOR_RETURN(result);
 }
 
 NS_IMETHODIMP
-nsLocalFile::GetLastModifiedTimeOfLink(int64_t *aLastModTimeOfLink)
+nsLocalFile::GetLastModifiedTimeOfLink(PRTime *aLastModTimeOfLink)
 {
     CHECK_mPath();
     NS_ENSURE_ARG(aLastModTimeOfLink);
 
     struct STAT sbuf;
     if (LSTAT(mPath.get(), &sbuf) == -1)
         return NSRESULT_FOR_ERRNO();
-    *aLastModTimeOfLink = int64_t(sbuf.st_mtime) * int64_t(PR_MSEC_PER_SEC);
+    *aLastModTimeOfLink = PRTime(sbuf.st_mtime) * PR_MSEC_PER_SEC;
 
     return NS_OK;
 }
 
 /*
  * utime(2) may or may not dereference symlinks, joy.
  */
 NS_IMETHODIMP
-nsLocalFile::SetLastModifiedTimeOfLink(int64_t aLastModTimeOfLink)
+nsLocalFile::SetLastModifiedTimeOfLink(PRTime aLastModTimeOfLink)
 {
     return SetLastModifiedTime(aLastModTimeOfLink);
 }
 
 /*
  * Only send back permissions bits: maybe we want to send back the whole
  * mode_t to permit checks against other file types?
  */
--- a/xpcom/io/nsLocalFileWin.cpp
+++ b/xpcom/io/nsLocalFileWin.cpp
@@ -2245,17 +2245,17 @@ nsLocalFile::Remove(bool recursive)
             return ConvertWinError(GetLastError());
     }
 
     MakeDirty();
     return rv;
 }
 
 NS_IMETHODIMP
-nsLocalFile::GetLastModifiedTime(int64_t *aLastModifiedTime)
+nsLocalFile::GetLastModifiedTime(PRTime *aLastModifiedTime)
 {
     // Check we are correctly initialized.
     CHECK_mWorkingPath();
 
     NS_ENSURE_ARG(aLastModifiedTime);
  
     // get the modified time of the target as determined by mFollowSymlinks
     // If true, then this will be for the target of the shortcut file, 
@@ -2270,17 +2270,17 @@ nsLocalFile::GetLastModifiedTime(int64_t
     int64_t usecPerMsec;
     LL_I2L(usecPerMsec, PR_USEC_PER_MSEC);
     LL_DIV(*aLastModifiedTime, mFileInfo64.modifyTime, usecPerMsec);
     return NS_OK;
 }
 
 
 NS_IMETHODIMP
-nsLocalFile::GetLastModifiedTimeOfLink(int64_t *aLastModifiedTime)
+nsLocalFile::GetLastModifiedTimeOfLink(PRTime *aLastModifiedTime)
 {
     // Check we are correctly initialized.
     CHECK_mWorkingPath();
 
     NS_ENSURE_ARG(aLastModifiedTime);
  
     // The caller is assumed to have already called IsSymlink 
     // and to have found that this file is a link. 
@@ -2294,17 +2294,17 @@ nsLocalFile::GetLastModifiedTimeOfLink(i
     int64_t usecPerMsec;
     LL_I2L(usecPerMsec, PR_USEC_PER_MSEC);
     LL_DIV(*aLastModifiedTime, info.modifyTime, usecPerMsec);
     return NS_OK;
 }
 
 
 NS_IMETHODIMP
-nsLocalFile::SetLastModifiedTime(int64_t aLastModifiedTime)
+nsLocalFile::SetLastModifiedTime(PRTime aLastModifiedTime)
 {
     // Check we are correctly initialized.
     CHECK_mWorkingPath();
 
     nsresult rv = ResolveAndStat();
     if (NS_FAILED(rv))
         return rv;
 
@@ -2317,30 +2317,30 @@ nsLocalFile::SetLastModifiedTime(int64_t
     if (NS_SUCCEEDED(rv))
         MakeDirty();
 
     return rv;
 }
 
 
 NS_IMETHODIMP
-nsLocalFile::SetLastModifiedTimeOfLink(int64_t aLastModifiedTime)
+nsLocalFile::SetLastModifiedTimeOfLink(PRTime aLastModifiedTime)
 {
     // The caller is assumed to have already called IsSymlink 
     // and to have found that this file is a link. 
 
     nsresult rv = SetModDate(aLastModifiedTime, mWorkingPath.get());
     if (NS_SUCCEEDED(rv))
         MakeDirty();
 
     return rv;
 }
 
 nsresult
-nsLocalFile::SetModDate(int64_t aLastModifiedTime, const PRUnichar *filePath)
+nsLocalFile::SetModDate(PRTime aLastModifiedTime, const PRUnichar *filePath)
 {
     // The FILE_FLAG_BACKUP_SEMANTICS is required in order to change the
     // modification time for directories.
     HANDLE file = ::CreateFileW(filePath,          // pointer to name of the file
                                 GENERIC_WRITE,     // access (write) mode
                                 0,                 // share mode
                                 NULL,              // pointer to security attributes
                                 OPEN_EXISTING,     // how to create
--- a/xpcom/system/nsIXULRuntime.idl
+++ b/xpcom/system/nsIXULRuntime.idl
@@ -83,16 +83,16 @@ interface nsIXULRuntime : nsISupports
    */
   void ensureContentProcess();
 
   /**
    * Modification time of the profile lock before the profile was locked on
    * this startup. Used to know the last time the profile was used and not
    * closed cleanly. This is set to 0 if there was no existing profile lock.
    */
-  readonly attribute int64_t replacedLockTime;
+  readonly attribute PRTime replacedLockTime;
 
   /**
    * Local ID of the minidump generated when the process crashed
    * on the previous run. Can be passed directly to CrashSubmit.submit.
    */
   readonly attribute DOMString lastRunCrashID;
 };