| Index: runtime/vm/service_test.cc
|
| ===================================================================
|
| --- runtime/vm/service_test.cc (revision 36729)
|
| +++ runtime/vm/service_test.cc (working copy)
|
| @@ -90,11 +90,20 @@
|
|
|
|
|
| static RawInstance* Eval(Dart_Handle lib, const char* expr) {
|
| - Dart_Handle result = Dart_EvaluateExpr(lib, NewString(expr));
|
| - EXPECT_VALID(result);
|
| + Dart_Handle expr_val = Dart_EvaluateExpr(lib, NewString(expr));
|
| + EXPECT_VALID(expr_val);
|
| Isolate* isolate = Isolate::Current();
|
| - const Instance& instance = Api::UnwrapInstanceHandle(isolate, result);
|
| - return instance.raw();
|
| + const GrowableObjectArray& value =
|
| + Api::UnwrapGrowableObjectArrayHandle(isolate, expr_val);
|
| + const Array& result = Array::Handle(Array::MakeArray(value));
|
| + GrowableObjectArray& growable = GrowableObjectArray::Handle();
|
| + growable ^= result.At(3);
|
| + Array& array = Array::Handle(Array::MakeArray(growable));
|
| + result.SetAt(3, array);
|
| + growable ^= result.At(4);
|
| + array = Array::MakeArray(growable);
|
| + result.SetAt(4, array);
|
| + return result.raw();
|
| }
|
|
|
|
|
| @@ -175,7 +184,7 @@
|
| Instance& service_msg = Instance::Handle();
|
|
|
| // Get the isolate summary.
|
| - service_msg = Eval(lib, "[port, [], [], []]");
|
| + service_msg = Eval(lib, "[0, port, [], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
|
|
| @@ -230,7 +239,7 @@
|
| Instance& service_msg = Instance::Handle();
|
|
|
| // Get the stacktrace.
|
| - service_msg = Eval(lib, "[port, ['stacktrace'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['stacktrace'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -238,7 +247,7 @@
|
| handler.msg());
|
|
|
| // Malformed request.
|
| - service_msg = Eval(lib, "[port, ['stacktrace', 'jamboree'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['stacktrace', 'jamboree'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -274,7 +283,7 @@
|
| isolate->debugger()->SetBreakpointAtLine(url, 3);
|
|
|
| // Get the breakpoint list.
|
| - service_msg = Eval(lib, "[port, ['debug', 'breakpoints'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -286,7 +295,7 @@
|
| handler.msg());
|
|
|
| // Individual breakpoint.
|
| - service_msg = Eval(lib, "[port, ['debug', 'breakpoints', '1'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints', '1'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -297,7 +306,7 @@
|
| handler.msg());
|
|
|
| // Missing sub-command.
|
| - service_msg = Eval(lib, "[port, ['debug'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['debug'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -308,7 +317,8 @@
|
| handler.msg());
|
|
|
| // Unrecognized breakpoint.
|
| - service_msg = Eval(lib, "[port, ['debug', 'breakpoints', '1111'], [], []]");
|
| + service_msg = Eval(lib,
|
| + "[0, port, ['debug', 'breakpoints', '1111'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\","
|
| @@ -320,7 +330,7 @@
|
|
|
| // Command too long.
|
| service_msg =
|
| - Eval(lib, "[port, ['debug', 'breakpoints', '1111', 'green'], [], []]");
|
| + Eval(lib, "[0, port, ['debug', 'breakpoints', '1111', 'green'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\","
|
| @@ -331,7 +341,7 @@
|
| handler.msg());
|
|
|
| // Unrecognized subcommand.
|
| - service_msg = Eval(lib, "[port, ['debug', 'nosferatu'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['debug', 'nosferatu'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\","
|
| @@ -377,7 +387,7 @@
|
| Instance& service_msg = Instance::Handle();
|
|
|
| // null
|
| - service_msg = Eval(lib, "[port, ['objects', 'null'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -387,7 +397,7 @@
|
| handler.msg());
|
|
|
| // not initialized
|
| - service_msg = Eval(lib, "[port, ['objects', 'not-initialized'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'not-initialized'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -397,7 +407,8 @@
|
| handler.msg());
|
|
|
| // being initialized
|
| - service_msg = Eval(lib, "[port, ['objects', 'being-initialized'], [], []]");
|
| + service_msg = Eval(lib,
|
| + "[0, port, ['objects', 'being-initialized'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -407,7 +418,7 @@
|
| handler.msg());
|
|
|
| // optimized out
|
| - service_msg = Eval(lib, "[port, ['objects', 'optimized-out'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'optimized-out'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -417,7 +428,7 @@
|
| handler.msg());
|
|
|
| // collected
|
| - service_msg = Eval(lib, "[port, ['objects', 'collected'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'collected'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -427,7 +438,7 @@
|
| handler.msg());
|
|
|
| // expired
|
| - service_msg = Eval(lib, "[port, ['objects', 'expired'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'expired'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -437,7 +448,7 @@
|
| handler.msg());
|
|
|
| // bool
|
| - service_msg = Eval(lib, "[port, ['objects', 'bool-true'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'bool-true'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -448,7 +459,7 @@
|
| handler.msg());
|
|
|
| // int
|
| - service_msg = Eval(lib, "[port, ['objects', 'int-123'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'int-123'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -462,7 +473,7 @@
|
| handler.msg());
|
|
|
| // object id ring / valid
|
| - service_msg = Eval(lib, "[port, ['objects', '$validId'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', '$validId'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -481,7 +492,7 @@
|
| handler.msg());
|
|
|
| // object id ring / invalid => expired
|
| - service_msg = Eval(lib, "[port, ['objects', '99999999'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', '99999999'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -491,7 +502,7 @@
|
| handler.msg());
|
|
|
| // expired/eval => error
|
| - service_msg = Eval(lib, "[port, ['objects', 'expired', 'eval'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['objects', 'expired', 'eval'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -504,7 +515,7 @@
|
|
|
| // int/eval => good
|
| service_msg = Eval(lib,
|
| - "[port, ['objects', 'int-123', 'eval'], "
|
| + "[0, port, ['objects', 'int-123', 'eval'], "
|
| "['expr'], ['this+99']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -519,7 +530,7 @@
|
|
|
| // eval returning null works
|
| service_msg = Eval(lib,
|
| - "[port, ['objects', 'int-123', 'eval'], "
|
| + "[0, port, ['objects', 'int-123', 'eval'], "
|
| "['expr'], ['null']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -530,7 +541,7 @@
|
| handler.msg());
|
|
|
| // object id ring / invalid => expired
|
| - service_msg = Eval(lib, "[port, ['objects', '99999999', 'eval'], "
|
| + service_msg = Eval(lib, "[0, port, ['objects', '99999999', 'eval'], "
|
| "['expr'], ['this']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -544,7 +555,7 @@
|
|
|
| // Extra arg to eval.
|
| service_msg = Eval(lib,
|
| - "[port, ['objects', 'int-123', 'eval', 'foo'], "
|
| + "[0, port, ['objects', 'int-123', 'eval', 'foo'], "
|
| "['expr'], ['this+99']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -558,7 +569,7 @@
|
|
|
| // Retained by single instance.
|
| service_msg = Eval(lib,
|
| - "[port, ['objects', '$validId', 'retained'], [], []]");
|
| + "[0, port, ['objects', '$validId', 'retained'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| handler.filterMsg("name");
|
| @@ -569,7 +580,7 @@
|
| // Retaining path to 'arr', limit 1.
|
| service_msg = Eval(
|
| lib,
|
| - "[port, ['objects', '$validId', 'retaining_path'], ['limit'], ['1']]");
|
| + "[0, port, ['objects', '$validId', 'retaining_path'], ['limit'], ['1']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| ExpectSubstringF(
|
| @@ -580,7 +591,7 @@
|
| // Retaining path missing limit.
|
| service_msg = Eval(
|
| lib,
|
| - "[port, ['objects', '$validId', 'retaining_path'], [], []]");
|
| + "[0, port, ['objects', '$validId', 'retaining_path'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| ExpectSubstringF(handler.msg(), "{\"type\":\"Error\"");
|
| @@ -590,7 +601,7 @@
|
| internal_object = LiteralToken::New();
|
| arr.SetAt(0, internal_object);
|
| service_msg = Eval(lib,
|
| - "[port, ['objects', '$validId', 'eval'], "
|
| + "[0, port, ['objects', '$validId', 'eval'], "
|
| "['expr'], ['toString()']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -638,7 +649,7 @@
|
|
|
| // Request library.
|
| service_msg = EvalF(h_lib,
|
| - "[port, ['libraries', '%" Pd "'], [], []]", lib_id);
|
| + "[0, port, ['libraries', '%" Pd "'], [], []]", lib_id);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg());
|
| @@ -646,7 +657,7 @@
|
|
|
| // Evaluate an expression from a library.
|
| service_msg = EvalF(h_lib,
|
| - "[port, ['libraries', '%" Pd "', 'eval'], "
|
| + "[0, port, ['libraries', '%" Pd "', 'eval'], "
|
| "['expr'], ['libVar - 1']]", lib_id);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -703,7 +714,7 @@
|
| Instance& service_msg = Instance::Handle();
|
|
|
| // Request an invalid class id.
|
| - service_msg = Eval(h_lib, "[port, ['classes', '999999'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['classes', '999999'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -713,7 +724,7 @@
|
| "\"option_keys\":[],\"option_values\":[]}}", handler.msg());
|
|
|
| // Request the class A over the service.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "'], [], []]", cid);
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
|
| @@ -722,7 +733,7 @@
|
|
|
| // Evaluate an expression from class A.
|
| service_msg = EvalF(h_lib,
|
| - "[port, ['classes', '%" Pd "', 'eval'], "
|
| + "[0, port, ['classes', '%" Pd "', 'eval'], "
|
| "['expr'], ['cobra + 100000']]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -736,8 +747,9 @@
|
| handler.msg());
|
|
|
| // Request function 0 from class A.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'functions', '0'],"
|
| - "[], []]", cid);
|
| + service_msg = EvalF(h_lib,
|
| + "[0, port, ['classes', '%" Pd "', 'functions', '0'],"
|
| + "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Function\"", handler.msg());
|
| @@ -746,7 +758,7 @@
|
| "\"name\":\"get:a\",", cid);
|
|
|
| // Request field 0 from class A.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'fields', '0'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'fields', '0'],"
|
| "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -756,7 +768,7 @@
|
| "\"name\":\"a\",", cid);
|
|
|
| // Invalid sub command.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'huh', '0'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'huh', '0'],"
|
| "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -767,7 +779,7 @@
|
| "\"option_values\":[]}}", cid);
|
|
|
| // Invalid field request.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'fields', '9'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'fields', '9'],"
|
| "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -777,8 +789,9 @@
|
| "\"option_keys\":[],\"option_values\":[]}}", cid);
|
|
|
| // Invalid function request.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'functions', '9'],"
|
| - "[], []]", cid);
|
| + service_msg = EvalF(h_lib,
|
| + "[0, port, ['classes', '%" Pd "', 'functions', '9'],"
|
| + "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| ExpectSubstringF(handler.msg(),
|
| @@ -788,8 +801,9 @@
|
|
|
|
|
| // Invalid field subcommand.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'fields', '9', 'x']"
|
| - ",[], []]", cid);
|
| + service_msg = EvalF(h_lib,
|
| + "[0, port, ['classes', '%" Pd "', 'fields', '9', 'x']"
|
| + ",[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| ExpectSubstringF(handler.msg(),
|
| @@ -799,8 +813,9 @@
|
| "\"option_keys\":[],\"option_values\":[]}}", cid);
|
|
|
| // Invalid function request.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'functions', '9',"
|
| - "'x'], [], []]", cid);
|
| + service_msg = EvalF(h_lib,
|
| + "[0, port, ['classes', '%" Pd "', 'functions', '9',"
|
| + "'x'], [], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| ExpectSubstringF(handler.msg(),
|
| @@ -814,7 +829,7 @@
|
| EXPECT(!class_b.IsNull());
|
| const Instance& b0 = Instance::Handle(Instance::New(class_b));
|
| const Instance& b1 = Instance::Handle(Instance::New(class_b));
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'retained'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'retained'],"
|
| "[], []]", class_b.id());
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -856,7 +871,7 @@
|
| Instance& service_msg = Instance::Handle();
|
|
|
| // Request the class A over the service.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "'], [], []]", cid);
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
|
| @@ -865,7 +880,7 @@
|
| "\"id\":\"classes\\/%" Pd "\"", cid);
|
|
|
| // Request canonical type 0 from class A.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'types', '0'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'types', '0'],"
|
| "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -875,7 +890,7 @@
|
| "\"id\":\"classes\\/%" Pd "\\/types\\/0\"", cid);
|
|
|
| // Request canonical type 1 from class A.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'types', '1'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'types', '1'],"
|
| "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -885,7 +900,7 @@
|
| "\"id\":\"classes\\/%" Pd "\\/types\\/1\"", cid);
|
|
|
| // Request for non-existent canonical type from class A.
|
| - service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'types', '42'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "', 'types', '42'],"
|
| "[], []]", cid);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -897,7 +912,7 @@
|
| "\"option_keys\":[],\"option_values\":[]}}", cid);
|
|
|
| // Request canonical type arguments. Expect <A<bool>> to be listed.
|
| - service_msg = EvalF(h_lib, "[port, ['typearguments'],"
|
| + service_msg = EvalF(h_lib, "[0, port, ['typearguments'],"
|
| "[], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -905,8 +920,9 @@
|
| ExpectSubstringF(handler.msg(), "\"name\":\"<A<bool>>\",");
|
|
|
| // Request canonical type arguments with instantiations.
|
| - service_msg = EvalF(h_lib, "[port, ['typearguments', 'withinstantiations'],"
|
| - "[], []]");
|
| + service_msg = EvalF(h_lib,
|
| + "[0, port, ['typearguments', 'withinstantiations'],"
|
| + "[], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"TypeArgumentsList\"", handler.msg());
|
| @@ -961,7 +977,7 @@
|
| Instance& service_msg = Instance::Handle();
|
|
|
| // Request an invalid code object.
|
| - service_msg = Eval(h_lib, "[port, ['code', '0'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['code', '0'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -971,7 +987,7 @@
|
|
|
| // The following test checks that a code object can be found only
|
| // at compile_timestamp()-code.EntryPoint().
|
| - service_msg = EvalF(h_lib, "[port, ['code', '%" Px64"-%" Px "'], [], []]",
|
| + service_msg = EvalF(h_lib, "[0, port, ['code', '%" Px64"-%" Px "'], [], []]",
|
| compile_timestamp,
|
| entry);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| @@ -990,7 +1006,7 @@
|
| // Request code object at compile_timestamp-code.EntryPoint() + 16
|
| // Expect this to fail because the address is not the entry point.
|
| uintptr_t address = entry + 16;
|
| - service_msg = EvalF(h_lib, "[port, ['code', '%" Px64"-%" Px "'], [], []]",
|
| + service_msg = EvalF(h_lib, "[0, port, ['code', '%" Px64"-%" Px "'], [], []]",
|
| compile_timestamp,
|
| address);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| @@ -1009,7 +1025,7 @@
|
| // Request code object at (compile_timestamp - 1)-code.EntryPoint()
|
| // Expect this to fail because the timestamp is wrong.
|
| address = entry;
|
| - service_msg = EvalF(h_lib, "[port, ['code', '%" Px64"-%" Px "'], [], []]",
|
| + service_msg = EvalF(h_lib, "[0, port, ['code', '%" Px64"-%" Px "'], [], []]",
|
| compile_timestamp - 1,
|
| address);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| @@ -1027,7 +1043,7 @@
|
|
|
| // Request native code at address. Expect the null code object back.
|
| address = last;
|
| - service_msg = EvalF(h_lib, "[port, ['code', 'native-%" Px "'], [], []]",
|
| + service_msg = EvalF(h_lib, "[0, port, ['code', 'native-%" Px "'], [], []]",
|
| address);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -1036,7 +1052,7 @@
|
| handler.msg());
|
|
|
| // Request malformed native code.
|
| - service_msg = EvalF(h_lib, "[port, ['code', 'native%" Px "'], [], []]",
|
| + service_msg = EvalF(h_lib, "[0, port, ['code', 'native%" Px "'], [], []]",
|
| address);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -1063,7 +1079,7 @@
|
| EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(lib, "[port, ['vm'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['vm'], [], []]");
|
|
|
| Service::HandleRootMessage(service_msg);
|
| handler.HandleNextMessage();
|
| @@ -1095,7 +1111,7 @@
|
| EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(lib, "[port, ['flags'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['flags'], [], []]");
|
|
|
| // Make sure we can get the FlagList.
|
| Service::HandleRootMessage(service_msg);
|
| @@ -1108,14 +1124,14 @@
|
|
|
| // Modify a flag through the vm service.
|
| service_msg = Eval(lib,
|
| - "[port, ['flags', 'set'], "
|
| + "[0, port, ['flags', 'set'], "
|
| "['name', 'value'], ['service_testing_flag', 'true']]");
|
| Service::HandleRootMessage(service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("Success", handler.msg());
|
|
|
| // Make sure that the flag changed.
|
| - service_msg = Eval(lib, "[port, ['flags'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['flags'], [], []]");
|
| Service::HandleRootMessage(service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING(
|
| @@ -1144,7 +1160,7 @@
|
| EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(h_lib, "[port, ['scripts', 'test-lib'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['scripts', 'test-lib'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ(
|
| @@ -1187,7 +1203,7 @@
|
| EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(h_lib, "[port, ['coverage'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['coverage'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING(
|
| @@ -1228,46 +1244,48 @@
|
| EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(h_lib, "[port, ['allocationprofile'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['allocationprofile'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg());
|
|
|
| // Too long.
|
| - service_msg = Eval(h_lib, "[port, ['allocationprofile', 'foo'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['allocationprofile', 'foo'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
|
|
|
| // Bad gc option.
|
| - service_msg = Eval(h_lib, "[port, ['allocationprofile'], ['gc'], ['cat']]");
|
| + service_msg = Eval(h_lib,
|
| + "[0, port, ['allocationprofile'], ['gc'], ['cat']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
|
|
|
| // Bad reset option.
|
| - service_msg = Eval(h_lib, "[port, ['allocationprofile'], ['reset'], ['ff']]");
|
| + service_msg = Eval(h_lib,
|
| + "[0, port, ['allocationprofile'], ['reset'], ['ff']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
|
|
|
| // Good reset.
|
| service_msg =
|
| - Eval(h_lib, "[port, ['allocationprofile'], ['reset'], ['true']]");
|
| + Eval(h_lib, "[0, port, ['allocationprofile'], ['reset'], ['true']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg());
|
|
|
| // Good GC.
|
| service_msg =
|
| - Eval(h_lib, "[port, ['allocationprofile'], ['gc'], ['full']]");
|
| + Eval(h_lib, "[0, port, ['allocationprofile'], ['gc'], ['full']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg());
|
|
|
| // Good GC and reset.
|
| service_msg = Eval(h_lib,
|
| - "[port, ['allocationprofile'], ['gc', 'reset'], ['full', 'true']]");
|
| + "[0, port, ['allocationprofile'], ['gc', 'reset'], ['full', 'true']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg());
|
| @@ -1293,7 +1311,7 @@
|
| EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(lib, "[port, ['heapmap'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['heapmap'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_SUBSTRING("\"type\":\"HeapMap\"", handler.msg());
|
| @@ -1328,7 +1346,7 @@
|
| uword addr = start_addr + offset;
|
| char buf[1024];
|
| OS::SNPrint(buf, sizeof(buf),
|
| - "[port, ['address', '%" Px "'], [], []]", addr);
|
| + "[0, port, ['address', '%" Px "'], [], []]", addr);
|
| service_msg = Eval(lib, buf);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| @@ -1336,7 +1354,7 @@
|
| EXPECT_SUBSTRING("foobar", handler.msg());
|
| }
|
| // Expect null when no object is found.
|
| - service_msg = Eval(lib, "[port, ['address', '7'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['address', '7'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| // TODO(turnidge): Should this be a ServiceException instead?
|
| @@ -1398,11 +1416,11 @@
|
|
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(lib, "[port, ['alpha'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['alpha'], [], []]");
|
| Service::HandleRootMessage(service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("alpha", handler.msg());
|
| - service_msg = Eval(lib, "[port, ['beta'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['beta'], [], []]");
|
| Service::HandleRootMessage(service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("beta", handler.msg());
|
| @@ -1435,11 +1453,11 @@
|
| EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(lib, "[port, ['alpha'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['alpha'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("alpha", handler.msg());
|
| - service_msg = Eval(lib, "[port, ['beta'], [], []]");
|
| + service_msg = Eval(lib, "[0, port, ['beta'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| EXPECT_STREQ("beta", handler.msg());
|
| @@ -1476,19 +1494,19 @@
|
| EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
|
|
|
| Instance& service_msg = Instance::Handle();
|
| - service_msg = Eval(h_lib, "[port, ['profile'], [], []]");
|
| + service_msg = Eval(h_lib, "[0, port, ['profile'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| // Expect profile
|
| EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg());
|
|
|
| - service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hide']]");
|
| + service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hide']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| // Expect profile
|
| EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg());
|
|
|
| - service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]");
|
| + service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hidden']]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| // Expect error.
|
|
|