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]