mikemccand commented on a change in pull request #973: LUCENE-9027: Use SIMD 
instructions to decode postings.
URL: https://github.com/apache/lucene-solr/pull/973#discussion_r345755022
 
 

 ##########
 File path: 
lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java
 ##########
 @@ -107,6 +122,24 @@ public final void readBytes(byte[] b, int offset, int 
len) throws IOException {
     }
   }
 
+  @Override
+  public void readLongs(ByteOrder byteOrder, long[] dst, int offset, int 
length) throws IOException {
+    try {
+      final int position = curBuf.position();
+      guard.getLongs(curLongBufferViews[position & 0x07].position(position >>> 
3), dst, offset, length);
+      if (byteOrder != ByteOrder.nativeOrder()) {
+        for (int i = offset, end = offset + length; i < end; ++i) {
+          dst[i] = Long.reverseBytes(dst[i]);
+        }
+      }
+      curBuf.position(position + (length << 3));
+    } catch (BufferUnderflowException e) {
+      super.readLongs(byteOrder, dst, offset, length);
 
 Review comment:
   Hmm, how come we don't also do the `setCurBuf` here?  It seems like we are 
falling back to the slow (`super.readLongs`) implementation always on the first 
`readLongs` call, but since that slow version will use `readByte` it will then 
initialize the `curLongBufferViews` for subsequent `readLongs` calls?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to