From f52935278fca8c7aa220543eef4544e3d1105d91 Mon Sep 17 00:00:00 2001 From: Brian Carlstrom Date: Fri, 19 Jul 2013 00:24:00 -0700 Subject: Move JDWP to std::vector to remove runtime/arrays warning Change-Id: I8494a25a65de4ebac2b1f4f41c0f5eedf117b7ac --- runtime/jdwp/jdwp.h | 2 +- runtime/jdwp/jdwp_event.cc | 10 +++++----- runtime/jdwp/jdwp_main.cc | 10 +++++----- runtime/jdwp/jdwp_priv.h | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) (limited to 'runtime/jdwp') diff --git a/runtime/jdwp/jdwp.h b/runtime/jdwp/jdwp.h index 6a5d0d1..1735852 100644 --- a/runtime/jdwp/jdwp.h +++ b/runtime/jdwp/jdwp.h @@ -288,7 +288,7 @@ struct JdwpState { void UnregisterEvent(JdwpEvent* pEvent) EXCLUSIVE_LOCKS_REQUIRED(event_list_lock_) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); - void SendBufferedRequest(uint32_t type, const iovec* iov, int iov_count); + void SendBufferedRequest(uint32_t type, const std::vector& iov); public: // TODO: fix privacy const JdwpOptions* options_; diff --git a/runtime/jdwp/jdwp_event.cc b/runtime/jdwp/jdwp_event.cc index 546c637..ef5a7d3 100644 --- a/runtime/jdwp/jdwp_event.cc +++ b/runtime/jdwp/jdwp_event.cc @@ -1046,10 +1046,10 @@ void JdwpState::DdmSendChunkV(uint32_t type, const iovec* iov, int iov_count) { * "Wrap" the contents of the iovec with a JDWP/DDMS header. We do * this by creating a new copy of the vector with space for the header. */ - iovec wrapiov[iov_count+1]; // NOLINT(runtime/arrays) iov_count < 10 + std::vector wrapiov; + wrapiov.push_back(iovec()); for (int i = 0; i < iov_count; i++) { - wrapiov[i+1].iov_base = iov[i].iov_base; - wrapiov[i+1].iov_len = iov[i].iov_len; + wrapiov.push_back(iov[i]); dataLen += iov[i].iov_len; } @@ -1080,11 +1080,11 @@ void JdwpState::DdmSendChunkV(uint32_t type, const iovec* iov, int iov_count) { if (safe_to_release_mutator_lock_over_send) { // Change state to waiting to allow GC, ... while we're sending. self->TransitionFromRunnableToSuspended(kWaitingForDebuggerSend); - SendBufferedRequest(type, wrapiov, iov_count + 1); + SendBufferedRequest(type, wrapiov); self->TransitionFromSuspendedToRunnable(); } else { // Send and possibly block GC... - SendBufferedRequest(type, wrapiov, iov_count + 1); + SendBufferedRequest(type, wrapiov); } } diff --git a/runtime/jdwp/jdwp_main.cc b/runtime/jdwp/jdwp_main.cc index 3b6dd81..790bcb5 100644 --- a/runtime/jdwp/jdwp_main.cc +++ b/runtime/jdwp/jdwp_main.cc @@ -132,16 +132,16 @@ ssize_t JdwpNetStateBase::WritePacket(ExpandBuf* pReply) { /* * Write a buffered packet. Grabs a mutex to assure atomicity. */ -ssize_t JdwpNetStateBase::WriteBufferedPacket(const iovec* iov, int iov_count) { +ssize_t JdwpNetStateBase::WriteBufferedPacket(const std::vector& iov) { MutexLock mu(Thread::Current(), socket_lock_); - return TEMP_FAILURE_RETRY(writev(clientSock, iov, iov_count)); + return TEMP_FAILURE_RETRY(writev(clientSock, &iov[0], iov.size())); } bool JdwpState::IsConnected() { return netState != NULL && netState->IsConnected(); } -void JdwpState::SendBufferedRequest(uint32_t type, const iovec* iov, int iov_count) { +void JdwpState::SendBufferedRequest(uint32_t type, const std::vector& iov) { if (netState->clientSock < 0) { // Can happen with some DDMS events. VLOG(jdwp) << "Not sending JDWP packet: no debugger attached!"; @@ -149,12 +149,12 @@ void JdwpState::SendBufferedRequest(uint32_t type, const iovec* iov, int iov_cou } size_t expected = 0; - for (int i = 0; i < iov_count; ++i) { + for (size_t i = 0; i < iov.size(); ++i) { expected += iov[i].iov_len; } errno = 0; - ssize_t actual = netState->WriteBufferedPacket(iov, iov_count); + ssize_t actual = netState->WriteBufferedPacket(iov); if (static_cast(actual) != expected) { PLOG(ERROR) << StringPrintf("Failed to send JDWP packet %c%c%c%c to debugger (%d of %d)", static_cast(type >> 24), diff --git a/runtime/jdwp/jdwp_priv.h b/runtime/jdwp/jdwp_priv.h index 557632c..f919f97 100644 --- a/runtime/jdwp/jdwp_priv.h +++ b/runtime/jdwp/jdwp_priv.h @@ -70,7 +70,7 @@ class JdwpNetStateBase { void Close(); ssize_t WritePacket(ExpandBuf* pReply); - ssize_t WriteBufferedPacket(const iovec* iov, int iov_count); + ssize_t WriteBufferedPacket(const std::vector& iov); int clientSock; // Active connection to debugger. -- cgit v1.1