Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(690)

Unified Diff: third_party/jmake/src/org/pantsbuild/jmake/BinaryFileWriter.java

Issue 1373723003: Fix javac --incremental by using jmake for dependency analysis (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@aidl
Patch Set: fix license check Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/jmake/src/org/pantsbuild/jmake/BinaryFileWriter.java
diff --git a/third_party/jmake/src/org/pantsbuild/jmake/BinaryFileWriter.java b/third_party/jmake/src/org/pantsbuild/jmake/BinaryFileWriter.java
new file mode 100644
index 0000000000000000000000000000000000000000..01de41589e1c6d247d2c5fb6fb03f75d208b8f31
--- /dev/null
+++ b/third_party/jmake/src/org/pantsbuild/jmake/BinaryFileWriter.java
@@ -0,0 +1,99 @@
+/* Copyright (c) 2002-2008 Sun Microsystems, Inc. All rights reserved
+ *
+ * This program is distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+package org.pantsbuild.jmake;
+
+/**
+ * Basic operations for writing to a byte array representing a binary file.
+ *
+ * @author Misha Dmitriev
+ * 30 January 2002
+ */
+public class BinaryFileWriter {
+
+ protected byte[] buf;
+ protected int curBufSize, bufInc, curBufPos, threshold;
+ private boolean bufferIncreaseAllowed = true;
+
+ protected void initBuf(int initSize) {
+ buf = new byte[initSize];
+ curBufSize = initSize;
+ bufInc = initSize / 5;
+ curBufPos = 0;
+ threshold = curBufSize - bufInc;
+ }
+
+ protected void increaseBuf() {
+ if (!bufferIncreaseAllowed) {
+ return;
+ }
+ byte newBuf[] = new byte[curBufSize + bufInc];
+ System.arraycopy(buf, 0, newBuf, 0, curBufPos);
+ buf = newBuf;
+ curBufSize = buf.length;
+ threshold = curBufSize - bufInc;
+ }
+
+ // This should be called with false only when we are sure that we set the exact size of the buffer
+ // and there is no need to increase it.
+ protected void setBufferIncreaseMode(boolean increaseMode) {
+ bufferIncreaseAllowed = increaseMode;
+ }
+
+ public byte[] getBuffer() {
+ return buf;
+ }
+
+
+ protected void writeByte(byte b) {
+ if (curBufPos > threshold) {
+ increaseBuf();
+ }
+ buf[curBufPos++] = b;
+ }
+
+ protected void writeChar(int ch) {
+ buf[curBufPos++] = (byte) ((ch >> 8) & 255);
+ buf[curBufPos++] = (byte) (ch & 255);
+ if (curBufPos > threshold) {
+ increaseBuf();
+ }
+ }
+
+ protected void writeInt(int i) {
+ buf[curBufPos++] = (byte) ((i >> 24) & 255);
+ buf[curBufPos++] = (byte) ((i >> 16) & 255);
+ buf[curBufPos++] = (byte) ((i >> 8) & 255);
+ buf[curBufPos++] = (byte) (i & 255);
+ if (curBufPos > threshold) {
+ increaseBuf();
+ }
+ }
+
+ protected void writeLong(long l) {
+ buf[curBufPos++] = (byte) ((l >> 56) & 255);
+ buf[curBufPos++] = (byte) ((l >> 48) & 255);
+ buf[curBufPos++] = (byte) ((l >> 40) & 255);
+ buf[curBufPos++] = (byte) ((l >> 32) & 255);
+ buf[curBufPos++] = (byte) ((l >> 24) & 255);
+ buf[curBufPos++] = (byte) ((l >> 16) & 255);
+ buf[curBufPos++] = (byte) ((l >> 8) & 255);
+ buf[curBufPos++] = (byte) (l & 255);
+ if (curBufPos > threshold) {
+ increaseBuf();
+ }
+ }
+
+ protected void writeFloat(float f) {
+ int i = Float.floatToIntBits(f);
+ writeInt(i);
+ }
+
+ protected void writeDouble(double d) {
+ long l = Double.doubleToLongBits(d);
+ writeLong(l);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698