summaryrefslogtreecommitdiff
path: root/libartbase/base/array_slice.h
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2020-11-12 17:05:28 +0000
committer Treehugger Robot <treehugger-gerrit@google.com> 2020-11-13 10:07:21 +0000
commitb6837f0350ff66c13582b0e94178dd5ca283ff0a (patch)
treef79fff81352545efe967850e3d17e32255dcfecd /libartbase/base/array_slice.h
parent32c2eb81320f24b5bab24754204b8be95faa08b0 (diff)
Revert^2 "Partial LSE analysis & store removal"
A ScopedArenaAllocator in a single test was accidentally loaded using operator new which is not supported. This caused a memory leak. This reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1. This unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763. Bug: 67037140 Reason for revert: Fixed memory leak in LoadStoreAnalysisTest.PartialEscape test case Test: SANITIZE_HOST=address ASAN_OPTIONS=detect_leaks=0 m test-art-host-gtest-dependencies Run art_compiler_tests Change-Id: I34fa2079df946ae54b8c91fa771a44d56438a719
Diffstat (limited to 'libartbase/base/array_slice.h')
-rw-r--r--libartbase/base/array_slice.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/libartbase/base/array_slice.h b/libartbase/base/array_slice.h
index 4679146ca1..a58ff4439d 100644
--- a/libartbase/base/array_slice.h
+++ b/libartbase/base/array_slice.h
@@ -17,6 +17,7 @@
#ifndef ART_LIBARTBASE_BASE_ARRAY_SLICE_H_
#define ART_LIBARTBASE_BASE_ARRAY_SLICE_H_
+#include <ostream>
#include "bit_utils.h"
#include "casts.h"
#include "iteration_range.h"
@@ -63,6 +64,10 @@ class ArraySlice {
lpa != nullptr && lpa->size() != 0 ? &lpa->At(0, element_size, alignment) : nullptr,
lpa != nullptr ? lpa->size() : 0,
element_size) {}
+ ArraySlice(const ArraySlice<T>&) = default;
+ ArraySlice(ArraySlice<T>&&) = default;
+ ArraySlice<T>& operator=(const ArraySlice<T>&) = default;
+ ArraySlice<T>& operator=(ArraySlice<T>&&) = default;
// Iterators.
iterator begin() { return iterator(&AtUnchecked(0), element_size_); }
@@ -166,6 +171,19 @@ class ArraySlice {
size_t element_size_;
};
+template<typename T>
+std::ostream& operator<<(std::ostream& os, const ArraySlice<T>& ts) {
+ bool first = true;
+ os << "[";
+ for (const T& t : ts) {
+ if (!first) { os << ", "; }
+ first = false;
+ os << t;
+ }
+ os << "]";
+ return os;
+}
+
} // namespace art
#endif // ART_LIBARTBASE_BASE_ARRAY_SLICE_H_