<div dir="ltr"><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 14, 2013 at 10:46 AM, Kostya Serebryany <span dir="ltr"><<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Did you do performance testing? </div></blockquote><div><br></div><div>No. CopyFrom() is currently only used in unittests (I agree with you, though - we may benefit from putting its body into the header w/o extra function calls).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Our current implementation of <span style="font-family:arial,sans-serif;font-size:13px">internal_memcpy is not that great and your change might have negative impact on performance. </span></div>

</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 11, 2013 at 3:14 PM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: samsonov<br>
Date: Fri Oct 11 06:14:20 2013<br>
New Revision: 192441<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=192441&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=192441&view=rev</a><br>
Log:<br>
[Sanitizer] StackTrace: kill CopyTo and reimplement CopyFrom<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc?rev=192441&r1=192440&r2=192441&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc?rev=192441&r1=192440&r2=192441&view=diff</a><br>


==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc Fri Oct 11 06:14:20 2013<br>
@@ -13,6 +13,7 @@<br>
<br>
 #include "sanitizer_common.h"<br>
 #include "sanitizer_flags.h"<br>
+#include "sanitizer_libc.h"<br>
 #include "sanitizer_procmaps.h"<br>
 #include "sanitizer_stacktrace.h"<br>
 #include "sanitizer_symbolizer.h"<br>
@@ -34,6 +35,11 @@ uptr StackTrace::GetPreviousInstructionP<br>
 #endif<br>
 }<br>
<br>
+void StackTrace::CopyFrom(const uptr *src, uptr src_size) {<br>
+  size = Min(src_size, kStackTraceMax);<br>
+  internal_memcpy(trace, src, sizeof(trace[0]) * size);<br>
+}<br>
+<br>
 static void PrintStackFramePrefix(uptr frame_num, uptr pc) {<br>
   Printf("    #%zu 0x%zx", frame_num, pc);<br>
 }<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h?rev=192441&r1=192440&r2=192441&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h?rev=192441&r1=192440&r2=192441&view=diff</a><br>


==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h Fri Oct 11 06:14:20 2013<br>
@@ -36,20 +36,8 @@ struct StackTrace {<br>
   uptr trace[kStackTraceMax];<br>
   static void PrintStack(const uptr *addr, uptr size, bool symbolize,<br>
                          SymbolizeCallback symbolize_callback);<br>
-  void CopyTo(uptr *dst, uptr dst_size) {<br>
-    for (uptr i = 0; i < size && i < dst_size; i++)<br>
-      dst[i] = trace[i];<br>
-    for (uptr i = size; i < dst_size; i++)<br>
-      dst[i] = 0;<br>
-  }<br>
<br>
-  void CopyFrom(uptr *src, uptr src_size) {<br>
-    size = src_size;<br>
-    if (size > kStackTraceMax) size = kStackTraceMax;<br>
-    for (uptr i = 0; i < size; i++) {<br>
-      trace[i] = src[i];<br>
-    }<br>
-  }<br>
+  void CopyFrom(const uptr *src, uptr src_size);<br>
<br>
   void FastUnwindStack(uptr pc, uptr bp, uptr stack_top, uptr stack_bottom,<br>
                        uptr max_depth);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>