This is an automated email from the ASF dual-hosted git repository.

changchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new b8ae8426e should never use m_capacity because of  reserve padding 
(#4957)
b8ae8426e is described below

commit b8ae8426efa9f0cc7bf08db9ad2a188fcf66ad8a
Author: 李扬 <[email protected]>
AuthorDate: Mon Mar 18 19:05:01 2024 +0800

    should never use m_capacity because of  reserve padding (#4957)
---
 cpp-ch/local-engine/Shuffle/ShuffleReader.cpp | 14 +++++++++-----
 cpp-ch/local-engine/Shuffle/ShuffleReader.h   | 15 +++++++++++----
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/cpp-ch/local-engine/Shuffle/ShuffleReader.cpp 
b/cpp-ch/local-engine/Shuffle/ShuffleReader.cpp
index 6af003fad..143fc19ae 100644
--- a/cpp-ch/local-engine/Shuffle/ShuffleReader.cpp
+++ b/cpp-ch/local-engine/Shuffle/ShuffleReader.cpp
@@ -72,17 +72,20 @@ bool ReadBufferFromJavaInputStream::nextImpl()
         working_buffer.resize(count);
     return count > 0;
 }
+
 int ReadBufferFromJavaInputStream::readFromJava() const
 {
     GET_JNIENV(env)
     jint count = safeCallIntMethod(
-        env, java_in, ShuffleReader::input_stream_read, 
reinterpret_cast<jlong>(working_buffer.begin()), memory.m_capacity);
+        env, java_in, ShuffleReader::input_stream_read, 
reinterpret_cast<jlong>(internal_buffer.begin()), internal_buffer.size());
     CLEAN_JNIENV
     return count;
 }
+
 ReadBufferFromJavaInputStream::ReadBufferFromJavaInputStream(jobject 
input_stream) : java_in(input_stream)
 {
 }
+
 ReadBufferFromJavaInputStream::~ReadBufferFromJavaInputStream()
 {
     GET_JNIENV(env)
@@ -92,13 +95,14 @@ 
ReadBufferFromJavaInputStream::~ReadBufferFromJavaInputStream()
 
 bool ReadBufferFromByteArray::nextImpl()
 {
-    if (read_pos_ >= array_size_)
+    if (read_pos >= array_size)
         return false;
+
     GET_JNIENV(env)
-    const size_t read_size = std::min(memory.m_capacity, array_size_ - 
read_pos_);
-    env->GetByteArrayRegion(array_, read_pos_, read_size, 
reinterpret_cast<jbyte *>(working_buffer.begin()));
+    const size_t read_size = std::min(internal_buffer.size(), array_size - 
read_pos);
+    env->GetByteArrayRegion(array, read_pos, read_size, reinterpret_cast<jbyte 
*>(internal_buffer.begin()));
     working_buffer.resize(read_size);
-    read_pos_ += read_size;
+    read_pos += read_size;
     CLEAN_JNIENV
     return true;
 }
diff --git a/cpp-ch/local-engine/Shuffle/ShuffleReader.h 
b/cpp-ch/local-engine/Shuffle/ShuffleReader.h
index 0a7650420..3281a3c84 100644
--- a/cpp-ch/local-engine/Shuffle/ShuffleReader.h
+++ b/cpp-ch/local-engine/Shuffle/ShuffleReader.h
@@ -66,13 +66,20 @@ private:
 class ReadBufferFromByteArray final : public 
DB::BufferWithOwnMemory<DB::ReadBuffer>
 {
 public:
-    ReadBufferFromByteArray(const jbyteArray array, const size_t array_size) : 
array_(array), array_size_(array_size) { }
+    ReadBufferFromByteArray(const jbyteArray array_, size_t array_size_)
+        : 
DB::BufferWithOwnMemory<DB::ReadBuffer>(std::min<size_t>(DB::DBMS_DEFAULT_BUFFER_SIZE,
 array_size_))
+        , array(array_)
+        , array_size(array_size_)
+        , read_pos(0)
+    {
+    }
 
 private:
-    const jbyteArray array_;
-    const size_t array_size_;
-    size_t read_pos_ = 0;
     bool nextImpl() override;
+
+    const jbyteArray array;
+    const size_t array_size;
+    size_t read_pos;
 };
 
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to