Add AllocStackTrace(). Move InternalStackTrace to managed heap.
Replaces trace.method and trace.pc with IntArray and ObjectArray<Method>.
Exception_tests pass.
Change-Id: I54431bbf8031b186fdd360ec27a31b11c8eff052
diff --git a/src/thread.h b/src/thread.h
index 8b64249..85abf2f 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -29,6 +29,8 @@
class Throwable;
class StackTraceElement;
template<class T> class ObjectArray;
+template<class T> class PrimitiveArray;
+typedef PrimitiveArray<int32_t> IntArray;
class Mutex {
public:
@@ -398,15 +400,8 @@
class_loader_override_ = class_loader_override;
}
- struct InternalStackTrace {
- const Method* method;
- uintptr_t pc;
- };
-
- // Get the top length frames information
- InternalStackTrace* GetStackTrace(uint16_t length);
-
- ObjectArray<StackTraceElement>* GetStackTraceElement(uint16_t length, InternalStackTrace *raw_trace);
+ // Allocate stack trace
+ ObjectArray<StackTraceElement>* AllocStackTrace(uint16_t length);
private:
Thread()
@@ -427,6 +422,8 @@
void InitCpu();
void InitFunctionPointers();
+ bool WalkStack(uint16_t length, ObjectArray<Method>* method_trace, IntArray* pc_trace);
+
// Managed thread id.
uint32_t id_;