Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(794)

Unified Diff: runtime/vm/debugger_api_impl_test.cc

Issue 10702068: Implement ActivationFrame::GetLocalVarValue on x64. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/vm/debugger_x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/debugger_api_impl_test.cc
diff --git a/runtime/vm/debugger_api_impl_test.cc b/runtime/vm/debugger_api_impl_test.cc
index 98759136b50c56cc355addd43753414c87fd71f7..570d651a571838e455e43995533cd38ad74e9f91 100644
--- a/runtime/vm/debugger_api_impl_test.cc
+++ b/runtime/vm/debugger_api_impl_test.cc
@@ -175,28 +175,67 @@ static void PrintStackTrace(Dart_StackTrace trace) {
}
+static void VerifyListEquals(Dart_Handle expected, Dart_Handle got) {
+ EXPECT(Dart_IsList(expected));
+ EXPECT(Dart_IsList(got));
+ Dart_Handle res;
+ intptr_t expected_length;
+ res = Dart_ListLength(expected, &expected_length);
+ EXPECT_NOT_ERROR(res);
+ intptr_t got_length;
+ res = Dart_ListLength(expected, &got_length);
+ EXPECT_NOT_ERROR(res);
+ EXPECT_EQ(expected_length, got_length);
+ for (intptr_t i = 0; i < expected_length; i++) {
+ Dart_Handle expected_elem = Dart_ListGetAt(expected, i);
+ EXPECT_NOT_ERROR(expected_elem);
+ Dart_Handle got_elem = Dart_ListGetAt(got, i);
+ EXPECT_NOT_ERROR(got_elem);
+ bool equals;
+ res = Dart_ObjectEquals(expected_elem, got_elem, &equals);
+ EXPECT_NOT_ERROR(res);
+ EXPECT(equals);
+ }
+}
+
+
+static void VerifyStackFrame(Dart_ActivationFrame frame,
+ const char* expected_name,
+ Dart_Handle expected_locals) {
+ Dart_Handle func_name;
+ Dart_Handle res;
+ res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
+ EXPECT_NOT_ERROR(res);
+ EXPECT(Dart_IsString(func_name));
+ const char* func_name_chars;
+ Dart_StringToCString(func_name, &func_name_chars);
+ if (expected_name != NULL) {
+ EXPECT_STREQ(func_name_chars, expected_name);
+ }
+
+ if (!Dart_IsNull(expected_locals)) {
+ Dart_Handle locals = Dart_GetLocalVariables(frame);
+ EXPECT_NOT_ERROR(locals);
+ VerifyListEquals(expected_locals, locals);
+ }
+}
+
+
static void VerifyStackTrace(Dart_StackTrace trace,
const char* func_names[],
- int names_len) {
+ Dart_Handle local_vars[],
+ int expected_frames) {
intptr_t trace_len;
Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
- Dart_Handle func_name;
EXPECT_NOT_ERROR(res);
for (int i = 0; i < trace_len; i++) {
Dart_ActivationFrame frame;
res = Dart_GetActivationFrame(trace, i, &frame);
EXPECT_NOT_ERROR(res);
- res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
- EXPECT_NOT_ERROR(res);
- EXPECT(Dart_IsString(func_name));
- const char* func_name_chars;
- Dart_StringToCString(func_name, &func_name_chars);
- if (i < names_len) {
- EXPECT_STREQ(func_name_chars, func_names[i]);
- if (strcmp(func_name_chars, func_names[i]) != 0) {
- OS::Print("Stack frame %d: expected function %s, but found %s\n",
- i, func_names[i], func_name_chars);
- }
+ if (i < expected_frames) {
+ VerifyStackFrame(frame, func_names[i], local_vars[i]);
+ } else {
+ VerifyStackFrame(frame, NULL, Dart_Null());
}
}
}
@@ -585,10 +624,16 @@ TEST_CASE(Debug_ClosureBreakpoint) {
static void ExprClosureBreakpointHandler(Dart_Breakpoint bpt,
Dart_StackTrace trace) {
- static const char* expected_trace[] = {"add", "main", ""};
+ static const char* expected_trace[] = {"add", "main"};
+ Dart_Handle add_locals = Dart_NewList(4);
+ Dart_ListSetAt(add_locals, 0, Dart_NewString("a"));
+ Dart_ListSetAt(add_locals, 1, Dart_NewInteger(10));
+ Dart_ListSetAt(add_locals, 2, Dart_NewString("b"));
+ Dart_ListSetAt(add_locals, 3, Dart_NewInteger(20));
+ Dart_Handle expected_locals[] = {add_locals, Dart_Null()};
breakpoint_hit_counter++;
PrintStackTrace(trace);
- VerifyStackTrace(trace, expected_trace, 2);
+ VerifyStackTrace(trace, expected_trace, expected_locals, 2);
}
@@ -621,7 +666,6 @@ TEST_CASE(Debug_ExprClosureBreakpoint) {
EXPECT_EQ(1, breakpoint_hit_counter);
}
Ivan Posva 2012/07/02 21:10:38 ?
-
static intptr_t bp_id_to_be_deleted;
static void DeleteBreakpointHandler(Dart_Breakpoint bpt,
« no previous file with comments | « no previous file | runtime/vm/debugger_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698