Backed out changeset 8e247550d6cf (bug 1411984) for bustage.
authorRyan VanderMeulen <ryanvm@gmail.com>
Wed, 01 Nov 2017 16:47:19 -0400
changeset 389647 3568e6d34bf626fb500fd11ed746ecd1832a7a2e
parent 389646 49def60bda3dc18ec60c42f3d06fd6418a57e2bd
child 389648 934518b87cbbc35547348d31e137d633e725ba1d
push id54563
push userryanvm@gmail.com
push dateWed, 01 Nov 2017 20:47:24 +0000
treeherderautoland@3568e6d34bf6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1411984
milestone58.0a1
backs out8e247550d6cf4ee040564ecced15bca47715b3b5
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
Backed out changeset 8e247550d6cf (bug 1411984) for bustage.
layout/printing/DrawEventRecorder.h
--- a/layout/printing/DrawEventRecorder.h
+++ b/layout/printing/DrawEventRecorder.h
@@ -10,107 +10,62 @@
 #include "mozilla/gfx/DrawEventRecorder.h"
 #include "mozilla/gfx/RecordingTypes.h"
 #include "prio.h"
 
 namespace mozilla {
 namespace layout {
 
 class PRFileDescStream : public mozilla::gfx::EventStream {
-  // Most writes, as seen in the print IPC use case, are very small (<32 bytes),
-  // with a small number of very large (>40KB) writes. Writes larger than this
-  // value are not buffered.
-  static const size_t kBufferSize = 1024;
 public:
-  PRFileDescStream() : mFd(nullptr), mBuffer(nullptr), mBufferPos(0),
-                       mGood(true) {}
+  PRFileDescStream() : mFd(nullptr), mGood(true) {}
 
   void OpenFD(PRFileDesc* aFd) {
     MOZ_ASSERT(!IsOpen());
     mFd = aFd;
     mGood = true;
-    mBuffer.reset(new uint8_t[kBufferSize]);
-    mBufferPos = 0;
   }
 
   void Close() {
-    Flush();
     PR_Close(mFd);
     mFd = nullptr;
-    mBuffer.reset();
-    mBufferPos = 0;
   }
 
   bool IsOpen() {
     return mFd != nullptr;
   }
 
   void Flush() {
-    // We need to be API compatible with std::ostream, and so we silently handle
-    // flushes on a closed FD.
-    if (IsOpen() && mBufferPos > 0) {
-      PR_Write(mFd, static_cast<const void*>(mBuffer.get()), mBufferPos);
-      mBufferPos = 0;
-    }
+    // For std::ostream this flushes any internal buffers. PRFileDesc's IO isn't
+    // buffered, so nothing to do here.
   }
 
   void Seek(PRInt32 aOffset, PRSeekWhence aWhence) {
-    Flush();
     PR_Seek(mFd, aOffset, aWhence);
   }
 
   void write(const char* aData, size_t aSize) {
-    // See comment in Flush().
+    // We need to be API compatible with std::ostream, and so we silently handle
+    // writes on a closed FD.
     if (IsOpen()) {
-      // If we're writing more data than could ever fit in our buffer, flush the
-      // buffer and write directly.
-      if (aSize > kBufferSize) {
-        Flush();
-        PR_Write(mFd, static_cast<const void*>(aData), aSize);
-      // If our write could fit in our buffer, but doesn't because the buffer is
-      // partially full, write to the buffer, flush the buffer, and then write
-      // the rest of the data to the buffer.
-      } else if (aSize > AvailableBufferSpace()) {
-        size_t length = AvailableBufferSpace();
-        WriteToBuffer(aData, length);
-        Flush();
-
-        MOZ_ASSERT(aSize <= kBufferSize);
-        WriteToBuffer(aData + length, aSize - length);
-      // Write fits in the buffer.
-      } else {
-        WriteToBuffer(aData, aSize);
-      }
+      PR_Write(mFd, static_cast<const void*>(aData), aSize);
     }
   }
 
   void read(char* aOut, size_t aSize) {
-    Flush();
     PRInt32 res = PR_Read(mFd, static_cast<void*>(aOut), aSize);
     mGood = res >= 0 && ((size_t)res == aSize);
   }
 
   bool good() {
     return mGood;
   }
 
 private:
-  size_t AvailableBufferSpace() {
-    return kBufferSize - mBufferPos;
-  }
-
-  void WriteToBuffer(const char* aData, size_t aSize) {
-    MOZ_ASSERT(aSize <= AvailableBufferSpace());
-    memcpy(mBuffer.get() + mBufferPos, aData, aSize);
-    mBufferPos += aSize;
-  }
-
   PRFileDesc* mFd;
-  std::unique_ptr<uint8_t[]> mBuffer;
-  size_t mBufferPos;
   bool mGood;
 };
 
 class DrawEventRecorderPRFileDesc : public gfx::DrawEventRecorderPrivate
 {
 public:
   MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(DrawEventRecorderPRFileDesc, override)
   explicit DrawEventRecorderPRFileDesc() { };