Index: runtime/vm/profiler_service.cc |
diff --git a/runtime/vm/profiler_service.cc b/runtime/vm/profiler_service.cc |
index 4e371794ca55f50128f9d594f34be0c78b54fef5..049a1980cd6d63b2dab93b98d23a5649c799af8d 100644 |
--- a/runtime/vm/profiler_service.cc |
+++ b/runtime/vm/profiler_service.cc |
@@ -1905,6 +1905,15 @@ class ProfileBuilder : public ValueObject { |
0, |
code); |
} |
+ |
+#if defined(HOST_ARCH_ARM) |
zra
2015/10/30 18:28:31
We should probably check that __thumb__ or __thumb
rmacnak
2015/10/30 18:36:50
Other compilation units or dynamic libraries in ou
|
+ if ((native_start % 2) == 1) { |
zra
2015/10/30 18:28:30
unconditionally:
const uintptr_t one = 1;
native_s
rmacnak
2015/10/30 18:36:50
Done.
Florian Schneider
2015/10/30 19:12:02
I'd 1U for unsigned literal one. Here however, sig
rmacnak
2015/10/30 19:48:51
ack
|
+ // The symbol for a Thumb function will be xxx1, but we may have samples |
+ // at function entry which will have pc xxx0. |
+ native_start -= 1; |
+ } |
+#endif |
+ |
ASSERT(pc >= native_start); |
ProfileCode* profile_code = |
new ProfileCode(ProfileCode::kNativeCode, |
@@ -1913,7 +1922,7 @@ class ProfileBuilder : public ValueObject { |
0, |
code); |
profile_code->SetName(native_name); |
- free(native_name); |
+ NativeSymbolResolver::FreeSymbolName(native_name); |
return profile_code; |
} |