cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aadamc...@apache.org
Subject svn commit: r1292240 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/JavaCharStream.java
Date Wed, 22 Feb 2012 11:22:37 GMT
Author: aadamchik
Date: Wed Feb 22 11:22:36 2012
New Revision: 1292240

URL: http://svn.apache.org/viewvc?rev=1292240&view=rev
Log:
CAY-1667 Expression parser performance optimization

reusing a shared instance of internal IOException that indicates end of stream

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/JavaCharStream.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/JavaCharStream.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/JavaCharStream.java?rev=1292240&r1=1292239&r2=1292240&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/JavaCharStream.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/JavaCharStream.java
Wed Feb 22 11:22:36 2012
@@ -22,6 +22,8 @@
 
 package org.apache.cayenne.exp.parser;
 
+import java.io.IOException;
+
 /**
  * An implementation of interface CharStream, where the stream is assumed to
  * contain only ASCII characters (with java-like unicode escape processing).
@@ -29,6 +31,18 @@ package org.apache.cayenne.exp.parser;
 
 public class JavaCharStream
 {
+
+    // optimizing internal Exception by reusing the exception per CAY-1667. This exception
+    // never reaches the end user, so we can suppress stack trace creation and make it
+    // efficient
+    private static final IOException END_OF_STREAM_EXCEPTION = new IOException() {
+
+        @Override
+        public synchronized Throwable fillInStackTrace() {
+            return this;
+        };
+    };
+    
 /** Whether parser is static. */
   public static final boolean staticFlag = false;
   static final int hexval(char c) throws java.io.IOException {
@@ -163,7 +177,7 @@ public class JavaCharStream
                                             4096 - maxNextCharInd)) == -1)
         {
            inputStream.close();
-           throw new java.io.IOException();
+           throw END_OF_STREAM_EXCEPTION;
         }
         else
            maxNextCharInd += i;



Mime
View raw message