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

Side by Side Diff: runtime/vm/service.cc

Issue 1401643002: Remove isolate parameter when allocating handles (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Sync Created 5 years, 2 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/service_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/service.h" 5 #include "vm/service.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "include/dart_native_api.h" 8 #include "include/dart_native_api.h"
9 #include "platform/globals.h" 9 #include "platform/globals.h"
10 10
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 ObjectIdRing::LookupResult* kind) { 1106 ObjectIdRing::LookupResult* kind) {
1107 *kind = ObjectIdRing::kValid; 1107 *kind = ObjectIdRing::kValid;
1108 if (strncmp(arg, "int-", 4) == 0) { 1108 if (strncmp(arg, "int-", 4) == 0) {
1109 arg += 4; 1109 arg += 4;
1110 int64_t value = 0; 1110 int64_t value = 0;
1111 if (!OS::StringToInt64(arg, &value) || 1111 if (!OS::StringToInt64(arg, &value) ||
1112 !Smi::IsValid(value)) { 1112 !Smi::IsValid(value)) {
1113 *kind = ObjectIdRing::kInvalid; 1113 *kind = ObjectIdRing::kInvalid;
1114 return Object::null(); 1114 return Object::null();
1115 } 1115 }
1116 const Integer& obj = 1116 const Integer& obj = Integer::Handle(isolate->current_zone(),
1117 Integer::Handle(isolate, Smi::New(static_cast<intptr_t>(value))); 1117 Smi::New(static_cast<intptr_t>(value)));
1118 return obj.raw(); 1118 return obj.raw();
1119 } else if (strcmp(arg, "bool-true") == 0) { 1119 } else if (strcmp(arg, "bool-true") == 0) {
1120 return Bool::True().raw(); 1120 return Bool::True().raw();
1121 } else if (strcmp(arg, "bool-false") == 0) { 1121 } else if (strcmp(arg, "bool-false") == 0) {
1122 return Bool::False().raw(); 1122 return Bool::False().raw();
1123 } else if (strcmp(arg, "null") == 0) { 1123 } else if (strcmp(arg, "null") == 0) {
1124 return Object::null(); 1124 return Object::null();
1125 } 1125 }
1126 1126
1127 ObjectIdRing* ring = isolate->object_id_ring(); 1127 ObjectIdRing* ring = isolate->object_id_ring();
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 return Object::sentinel().raw(); 1231 return Object::sentinel().raw();
1232 } 1232 }
1233 return field.raw(); 1233 return field.raw();
1234 1234
1235 } else if (strcmp(parts[2], "functions") == 0) { 1235 } else if (strcmp(parts[2], "functions") == 0) {
1236 // Function ids look like: "classes/17/functions/11" 1236 // Function ids look like: "classes/17/functions/11"
1237 if (num_parts != 4) { 1237 if (num_parts != 4) {
1238 return Object::sentinel().raw(); 1238 return Object::sentinel().raw();
1239 } 1239 }
1240 const char* encoded_id = parts[3]; 1240 const char* encoded_id = parts[3];
1241 String& id = String::Handle(isolate, String::New(encoded_id)); 1241 String& id = String::Handle(isolate->current_zone(),
1242 String::New(encoded_id));
1242 id = String::DecodeIRI(id); 1243 id = String::DecodeIRI(id);
1243 if (id.IsNull()) { 1244 if (id.IsNull()) {
1244 return Object::sentinel().raw(); 1245 return Object::sentinel().raw();
1245 } 1246 }
1246 Function& func = Function::Handle(cls.LookupFunction(id)); 1247 Function& func = Function::Handle(cls.LookupFunction(id));
1247 if (func.IsNull()) { 1248 if (func.IsNull()) {
1248 return Object::sentinel().raw(); 1249 return Object::sentinel().raw();
1249 } 1250 }
1250 return func.raw(); 1251 return func.raw();
1251 1252
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1421 if (num_parts < MAX_PARTS) { 1422 if (num_parts < MAX_PARTS) {
1422 parts[num_parts++] = &id[start_pos]; 1423 parts[num_parts++] = &id[start_pos];
1423 } 1424 }
1424 1425
1425 if (result != NULL) { 1426 if (result != NULL) {
1426 *result = ObjectIdRing::kValid; 1427 *result = ObjectIdRing::kValid;
1427 } 1428 }
1428 1429
1429 if (strcmp(parts[0], "objects") == 0) { 1430 if (strcmp(parts[0], "objects") == 0) {
1430 // Object ids look like "objects/1123" 1431 // Object ids look like "objects/1123"
1431 Object& obj = Object::Handle(isolate); 1432 Object& obj = Object::Handle(isolate->current_zone());
1432 ObjectIdRing::LookupResult lookup_result; 1433 ObjectIdRing::LookupResult lookup_result;
1433 obj = LookupObjectId(isolate, parts[1], &lookup_result); 1434 obj = LookupObjectId(isolate, parts[1], &lookup_result);
1434 if (lookup_result != ObjectIdRing::kValid) { 1435 if (lookup_result != ObjectIdRing::kValid) {
1435 if (result != NULL) { 1436 if (result != NULL) {
1436 *result = lookup_result; 1437 *result = lookup_result;
1437 } 1438 }
1438 return Object::sentinel().raw(); 1439 return Object::sentinel().raw();
1439 } 1440 }
1440 return obj.raw(); 1441 return obj.raw();
1441 1442
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 if (limit_cstr == NULL) { 1584 if (limit_cstr == NULL) {
1584 PrintMissingParamError(js, "limit"); 1585 PrintMissingParamError(js, "limit");
1585 return true; 1586 return true;
1586 } 1587 }
1587 intptr_t limit; 1588 intptr_t limit;
1588 if (!GetIntegerId(limit_cstr, &limit)) { 1589 if (!GetIntegerId(limit_cstr, &limit)) {
1589 PrintInvalidParamError(js, "limit"); 1590 PrintInvalidParamError(js, "limit");
1590 return true; 1591 return true;
1591 } 1592 }
1592 1593
1593 Object& obj = Object::Handle(isolate); 1594 Object& obj = Object::Handle(thread->zone());
1594 ObjectIdRing::LookupResult lookup_result; 1595 ObjectIdRing::LookupResult lookup_result;
1595 { 1596 {
1596 HANDLESCOPE(thread); 1597 HANDLESCOPE(thread);
1597 obj = LookupHeapObject(isolate, target_id, &lookup_result); 1598 obj = LookupHeapObject(isolate, target_id, &lookup_result);
1598 } 1599 }
1599 if (obj.raw() == Object::sentinel().raw()) { 1600 if (obj.raw() == Object::sentinel().raw()) {
1600 if (lookup_result == ObjectIdRing::kCollected) { 1601 if (lookup_result == ObjectIdRing::kCollected) {
1601 PrintSentinel(js, kCollectedSentinel); 1602 PrintSentinel(js, kCollectedSentinel);
1602 } else if (lookup_result == ObjectIdRing::kExpired) { 1603 } else if (lookup_result == ObjectIdRing::kExpired) {
1603 PrintSentinel(js, kExpiredSentinel); 1604 PrintSentinel(js, kExpiredSentinel);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1685 if (limit_cstr == NULL) { 1686 if (limit_cstr == NULL) {
1686 PrintMissingParamError(js, "limit"); 1687 PrintMissingParamError(js, "limit");
1687 return true; 1688 return true;
1688 } 1689 }
1689 intptr_t limit; 1690 intptr_t limit;
1690 if (!GetIntegerId(limit_cstr, &limit)) { 1691 if (!GetIntegerId(limit_cstr, &limit)) {
1691 PrintInvalidParamError(js, "limit"); 1692 PrintInvalidParamError(js, "limit");
1692 return true; 1693 return true;
1693 } 1694 }
1694 1695
1695 Object& obj = Object::Handle(isolate); 1696 Object& obj = Object::Handle(thread->zone());
1696 ObjectIdRing::LookupResult lookup_result; 1697 ObjectIdRing::LookupResult lookup_result;
1697 { 1698 {
1698 HANDLESCOPE(thread); 1699 HANDLESCOPE(thread);
1699 obj = LookupHeapObject(isolate, target_id, &lookup_result); 1700 obj = LookupHeapObject(isolate, target_id, &lookup_result);
1700 } 1701 }
1701 if (obj.raw() == Object::sentinel().raw()) { 1702 if (obj.raw() == Object::sentinel().raw()) {
1702 if (lookup_result == ObjectIdRing::kCollected) { 1703 if (lookup_result == ObjectIdRing::kCollected) {
1703 PrintSentinel(js, kCollectedSentinel); 1704 PrintSentinel(js, kCollectedSentinel);
1704 } else if (lookup_result == ObjectIdRing::kExpired) { 1705 } else if (lookup_result == ObjectIdRing::kExpired) {
1705 PrintSentinel(js, kExpiredSentinel); 1706 PrintSentinel(js, kExpiredSentinel);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1766 const char* target_id = js->LookupParam("targetId"); 1767 const char* target_id = js->LookupParam("targetId");
1767 if (target_id == NULL) { 1768 if (target_id == NULL) {
1768 PrintMissingParamError(js, "targetId"); 1769 PrintMissingParamError(js, "targetId");
1769 return true; 1770 return true;
1770 } 1771 }
1771 const char* expr = js->LookupParam("expression"); 1772 const char* expr = js->LookupParam("expression");
1772 if (expr == NULL) { 1773 if (expr == NULL) {
1773 PrintMissingParamError(js, "expression"); 1774 PrintMissingParamError(js, "expression");
1774 return true; 1775 return true;
1775 } 1776 }
1776 const String& expr_str = String::Handle(isolate, String::New(expr)); 1777 const String& expr_str =
1778 String::Handle(isolate->current_zone(), String::New(expr));
1777 ObjectIdRing::LookupResult lookup_result; 1779 ObjectIdRing::LookupResult lookup_result;
1778 Object& obj = Object::Handle(LookupHeapObject(isolate, target_id, 1780 Object& obj = Object::Handle(LookupHeapObject(isolate, target_id,
1779 &lookup_result)); 1781 &lookup_result));
1780 if (obj.raw() == Object::sentinel().raw()) { 1782 if (obj.raw() == Object::sentinel().raw()) {
1781 if (lookup_result == ObjectIdRing::kCollected) { 1783 if (lookup_result == ObjectIdRing::kCollected) {
1782 PrintSentinel(js, kCollectedSentinel); 1784 PrintSentinel(js, kCollectedSentinel);
1783 } else if (lookup_result == ObjectIdRing::kExpired) { 1785 } else if (lookup_result == ObjectIdRing::kExpired) {
1784 PrintSentinel(js, kExpiredSentinel); 1786 PrintSentinel(js, kExpiredSentinel);
1785 } else { 1787 } else {
1786 PrintInvalidParamError(js, "targetId"); 1788 PrintInvalidParamError(js, "targetId");
(...skipping 12 matching lines...) Expand all
1799 const Class& cls = Class::Cast(obj); 1801 const Class& cls = Class::Cast(obj);
1800 const Object& result = Object::Handle(cls.Evaluate(expr_str, 1802 const Object& result = Object::Handle(cls.Evaluate(expr_str,
1801 Array::empty_array(), 1803 Array::empty_array(),
1802 Array::empty_array())); 1804 Array::empty_array()));
1803 result.PrintJSON(js, true); 1805 result.PrintJSON(js, true);
1804 return true; 1806 return true;
1805 } 1807 }
1806 if ((obj.IsInstance() || obj.IsNull()) && 1808 if ((obj.IsInstance() || obj.IsNull()) &&
1807 !ContainsNonInstance(obj)) { 1809 !ContainsNonInstance(obj)) {
1808 // We don't use Instance::Cast here because it doesn't allow null. 1810 // We don't use Instance::Cast here because it doesn't allow null.
1809 Instance& instance = Instance::Handle(isolate); 1811 Instance& instance = Instance::Handle(isolate->current_zone());
1810 instance ^= obj.raw(); 1812 instance ^= obj.raw();
1811 const Object& result = 1813 const Object& result =
1812 Object::Handle(instance.Evaluate(expr_str, 1814 Object::Handle(instance.Evaluate(expr_str,
1813 Array::empty_array(), 1815 Array::empty_array(),
1814 Array::empty_array())); 1816 Array::empty_array()));
1815 result.PrintJSON(js, true); 1817 result.PrintJSON(js, true);
1816 return true; 1818 return true;
1817 } 1819 }
1818 js->PrintError(kInvalidParams, 1820 js->PrintError(kInvalidParams,
1819 "%s: invalid 'targetId' parameter: " 1821 "%s: invalid 'targetId' parameter: "
(...skipping 14 matching lines...) Expand all
1834 static bool EvaluateInFrame(Isolate* isolate, JSONStream* js) { 1836 static bool EvaluateInFrame(Isolate* isolate, JSONStream* js) {
1835 DebuggerStackTrace* stack = isolate->debugger()->StackTrace(); 1837 DebuggerStackTrace* stack = isolate->debugger()->StackTrace();
1836 intptr_t framePos = UIntParameter::Parse(js->LookupParam("frameIndex")); 1838 intptr_t framePos = UIntParameter::Parse(js->LookupParam("frameIndex"));
1837 if (framePos > stack->Length()) { 1839 if (framePos > stack->Length()) {
1838 PrintInvalidParamError(js, "frameIndex"); 1840 PrintInvalidParamError(js, "frameIndex");
1839 return true; 1841 return true;
1840 } 1842 }
1841 ActivationFrame* frame = stack->FrameAt(framePos); 1843 ActivationFrame* frame = stack->FrameAt(framePos);
1842 1844
1843 const char* expr = js->LookupParam("expression"); 1845 const char* expr = js->LookupParam("expression");
1844 const String& expr_str = String::Handle(isolate, String::New(expr)); 1846 const String& expr_str = String::Handle(isolate->current_zone(),
1847 String::New(expr));
1845 1848
1846 const Object& result = Object::Handle(frame->Evaluate(expr_str)); 1849 const Object& result = Object::Handle(frame->Evaluate(expr_str));
1847 result.PrintJSON(js, true); 1850 result.PrintJSON(js, true);
1848 return true; 1851 return true;
1849 } 1852 }
1850 1853
1851 1854
1852 class GetInstancesVisitor : public ObjectGraph::Visitor { 1855 class GetInstancesVisitor : public ObjectGraph::Visitor {
1853 public: 1856 public:
1854 GetInstancesVisitor(const Class& cls, const Array& storage) 1857 GetInstancesVisitor(const Class& cls, const Array& storage)
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1988 const Class& cls, 1991 const Class& cls,
1989 const Function& func) const { 1992 const Function& func) const {
1990 return func.raw() == func_.raw(); 1993 return func.raw() == func_.raw();
1991 } 1994 }
1992 private: 1995 private:
1993 const Function& func_; 1996 const Function& func_;
1994 }; 1997 };
1995 1998
1996 1999
1997 static bool GetHitsOrSites(Isolate* isolate, JSONStream* js, bool as_sites) { 2000 static bool GetHitsOrSites(Isolate* isolate, JSONStream* js, bool as_sites) {
2001 Thread* thread = Thread::Current();
1998 if (!js->HasParam("targetId")) { 2002 if (!js->HasParam("targetId")) {
1999 CodeCoverage::PrintJSON(isolate, js, NULL, as_sites); 2003 CodeCoverage::PrintJSON(thread, js, NULL, as_sites);
2000 return true; 2004 return true;
2001 } 2005 }
2002 const char* target_id = js->LookupParam("targetId"); 2006 const char* target_id = js->LookupParam("targetId");
2003 Object& obj = Object::Handle(LookupHeapObject(isolate, target_id, NULL)); 2007 Object& obj = Object::Handle(LookupHeapObject(isolate, target_id, NULL));
2004 if (obj.raw() == Object::sentinel().raw()) { 2008 if (obj.raw() == Object::sentinel().raw()) {
2005 PrintInvalidParamError(js, "targetId"); 2009 PrintInvalidParamError(js, "targetId");
2006 return true; 2010 return true;
2007 } 2011 }
2008 if (obj.IsScript()) { 2012 if (obj.IsScript()) {
2009 ScriptCoverageFilter sf(Script::Cast(obj)); 2013 ScriptCoverageFilter sf(Script::Cast(obj));
2010 CodeCoverage::PrintJSON(isolate, js, &sf, as_sites); 2014 CodeCoverage::PrintJSON(thread, js, &sf, as_sites);
2011 return true; 2015 return true;
2012 } 2016 }
2013 if (obj.IsLibrary()) { 2017 if (obj.IsLibrary()) {
2014 LibraryCoverageFilter lf(Library::Cast(obj)); 2018 LibraryCoverageFilter lf(Library::Cast(obj));
2015 CodeCoverage::PrintJSON(isolate, js, &lf, as_sites); 2019 CodeCoverage::PrintJSON(thread, js, &lf, as_sites);
2016 return true; 2020 return true;
2017 } 2021 }
2018 if (obj.IsClass()) { 2022 if (obj.IsClass()) {
2019 ClassCoverageFilter cf(Class::Cast(obj)); 2023 ClassCoverageFilter cf(Class::Cast(obj));
2020 CodeCoverage::PrintJSON(isolate, js, &cf, as_sites); 2024 CodeCoverage::PrintJSON(thread, js, &cf, as_sites);
2021 return true; 2025 return true;
2022 } 2026 }
2023 if (obj.IsFunction()) { 2027 if (obj.IsFunction()) {
2024 FunctionCoverageFilter ff(Function::Cast(obj)); 2028 FunctionCoverageFilter ff(Function::Cast(obj));
2025 CodeCoverage::PrintJSON(isolate, js, &ff, as_sites); 2029 CodeCoverage::PrintJSON(thread, js, &ff, as_sites);
2026 return true; 2030 return true;
2027 } 2031 }
2028 js->PrintError(kInvalidParams, 2032 js->PrintError(kInvalidParams,
2029 "%s: invalid 'targetId' parameter: " 2033 "%s: invalid 'targetId' parameter: "
2030 "id '%s' does not correspond to a " 2034 "id '%s' does not correspond to a "
2031 "script, library, class, or function", 2035 "script, library, class, or function",
2032 js->method(), target_id); 2036 js->method(), target_id);
2033 return true; 2037 return true;
2034 } 2038 }
2035 2039
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2204 PrintInvalidParamError(js, "breakpointId"); 2208 PrintInvalidParamError(js, "breakpointId");
2205 return true; 2209 return true;
2206 } 2210 }
2207 isolate->debugger()->RemoveBreakpoint(bpt->id()); 2211 isolate->debugger()->RemoveBreakpoint(bpt->id());
2208 PrintSuccess(js); 2212 PrintSuccess(js);
2209 return true; 2213 return true;
2210 } 2214 }
2211 2215
2212 2216
2213 static RawClass* GetMetricsClass(Isolate* isolate) { 2217 static RawClass* GetMetricsClass(Isolate* isolate) {
2218 Zone* zone = isolate->current_zone();
2214 const Library& prof_lib = 2219 const Library& prof_lib =
2215 Library::Handle(isolate, Library::DeveloperLibrary()); 2220 Library::Handle(zone, Library::DeveloperLibrary());
2216 ASSERT(!prof_lib.IsNull()); 2221 ASSERT(!prof_lib.IsNull());
2217 const String& metrics_cls_name = 2222 const String& metrics_cls_name =
2218 String::Handle(isolate, String::New("Metrics")); 2223 String::Handle(zone, String::New("Metrics"));
2219 ASSERT(!metrics_cls_name.IsNull()); 2224 ASSERT(!metrics_cls_name.IsNull());
2220 const Class& metrics_cls = 2225 const Class& metrics_cls =
2221 Class::Handle(isolate, prof_lib.LookupClass(metrics_cls_name)); 2226 Class::Handle(zone, prof_lib.LookupClass(metrics_cls_name));
2222 ASSERT(!metrics_cls.IsNull()); 2227 ASSERT(!metrics_cls.IsNull());
2223 return metrics_cls.raw(); 2228 return metrics_cls.raw();
2224 } 2229 }
2225 2230
2226 2231
2227 2232
2228 static bool HandleNativeMetricsList(Isolate* isolate, JSONStream* js) { 2233 static bool HandleNativeMetricsList(Isolate* isolate, JSONStream* js) {
2229 JSONObject obj(js); 2234 JSONObject obj(js);
2230 obj.AddProperty("type", "MetricList"); 2235 obj.AddProperty("type", "MetricList");
2231 { 2236 {
(...skipping 20 matching lines...) Expand all
2252 return true; 2257 return true;
2253 } 2258 }
2254 current = current->next(); 2259 current = current->next();
2255 } 2260 }
2256 PrintInvalidParamError(js, "metricId"); 2261 PrintInvalidParamError(js, "metricId");
2257 return true; 2262 return true;
2258 } 2263 }
2259 2264
2260 2265
2261 static bool HandleDartMetricsList(Isolate* isolate, JSONStream* js) { 2266 static bool HandleDartMetricsList(Isolate* isolate, JSONStream* js) {
2262 const Class& metrics_cls = Class::Handle(isolate, GetMetricsClass(isolate)); 2267 Zone* zone = isolate->current_zone();
2268 const Class& metrics_cls = Class::Handle(zone, GetMetricsClass(isolate));
2263 const String& print_metrics_name = 2269 const String& print_metrics_name =
2264 String::Handle(String::New("_printMetrics")); 2270 String::Handle(String::New("_printMetrics"));
2265 ASSERT(!print_metrics_name.IsNull()); 2271 ASSERT(!print_metrics_name.IsNull());
2266 const Function& print_metrics = Function::Handle( 2272 const Function& print_metrics = Function::Handle(
2267 isolate, 2273 zone,
2268 metrics_cls.LookupStaticFunctionAllowPrivate(print_metrics_name)); 2274 metrics_cls.LookupStaticFunctionAllowPrivate(print_metrics_name));
2269 ASSERT(!print_metrics.IsNull()); 2275 ASSERT(!print_metrics.IsNull());
2270 const Array& args = Object::empty_array(); 2276 const Array& args = Object::empty_array();
2271 const Object& result = 2277 const Object& result =
2272 Object::Handle(isolate, DartEntry::InvokeFunction(print_metrics, args)); 2278 Object::Handle(zone, DartEntry::InvokeFunction(print_metrics, args));
2273 ASSERT(!result.IsNull()); 2279 ASSERT(!result.IsNull());
2274 ASSERT(result.IsString()); 2280 ASSERT(result.IsString());
2275 TextBuffer* buffer = js->buffer(); 2281 TextBuffer* buffer = js->buffer();
2276 buffer->AddString(String::Cast(result).ToCString()); 2282 buffer->AddString(String::Cast(result).ToCString());
2277 return true; 2283 return true;
2278 } 2284 }
2279 2285
2280 2286
2281 static bool HandleDartMetric(Isolate* isolate, JSONStream* js, const char* id) { 2287 static bool HandleDartMetric(Isolate* isolate, JSONStream* js, const char* id) {
2282 const Class& metrics_cls = Class::Handle(isolate, GetMetricsClass(isolate)); 2288 Zone* zone = isolate->current_zone();
2289 const Class& metrics_cls = Class::Handle(zone, GetMetricsClass(isolate));
2283 const String& print_metric_name = 2290 const String& print_metric_name =
2284 String::Handle(String::New("_printMetric")); 2291 String::Handle(String::New("_printMetric"));
2285 ASSERT(!print_metric_name.IsNull()); 2292 ASSERT(!print_metric_name.IsNull());
2286 const Function& print_metric = Function::Handle( 2293 const Function& print_metric = Function::Handle(
2287 isolate, 2294 zone,
2288 metrics_cls.LookupStaticFunctionAllowPrivate(print_metric_name)); 2295 metrics_cls.LookupStaticFunctionAllowPrivate(print_metric_name));
2289 ASSERT(!print_metric.IsNull()); 2296 ASSERT(!print_metric.IsNull());
2290 const String& arg0 = String::Handle(String::New(id)); 2297 const String& arg0 = String::Handle(String::New(id));
2291 ASSERT(!arg0.IsNull()); 2298 ASSERT(!arg0.IsNull());
2292 const Array& args = Array::Handle(Array::New(1)); 2299 const Array& args = Array::Handle(Array::New(1));
2293 ASSERT(!args.IsNull()); 2300 ASSERT(!args.IsNull());
2294 args.SetAt(0, arg0); 2301 args.SetAt(0, arg0);
2295 const Object& result = 2302 const Object& result =
2296 Object::Handle(isolate, DartEntry::InvokeFunction(print_metric, args)); 2303 Object::Handle(zone, DartEntry::InvokeFunction(print_metric, args));
2297 if (!result.IsNull()) { 2304 if (!result.IsNull()) {
2298 ASSERT(result.IsString()); 2305 ASSERT(result.IsString());
2299 TextBuffer* buffer = js->buffer(); 2306 TextBuffer* buffer = js->buffer();
2300 buffer->AddString(String::Cast(result).ToCString()); 2307 buffer->AddString(String::Cast(result).ToCString());
2301 return true; 2308 return true;
2302 } 2309 }
2303 PrintInvalidParamError(js, "metricId"); 2310 PrintInvalidParamError(js, "metricId");
2304 return true; 2311 return true;
2305 } 2312 }
2306 2313
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
2740 }; 2747 };
2741 2748
2742 2749
2743 static const MethodParameter* get_object_by_address_params[] = { 2750 static const MethodParameter* get_object_by_address_params[] = {
2744 ISOLATE_PARAMETER, 2751 ISOLATE_PARAMETER,
2745 NULL, 2752 NULL,
2746 }; 2753 };
2747 2754
2748 2755
2749 static RawObject* GetObjectHelper(Isolate* isolate, uword addr) { 2756 static RawObject* GetObjectHelper(Isolate* isolate, uword addr) {
2750 Object& object = Object::Handle(isolate); 2757 Object& object = Object::Handle(isolate->current_zone());
2751 2758
2752 { 2759 {
2753 NoSafepointScope no_safepoint; 2760 NoSafepointScope no_safepoint;
2754 ContainsAddressVisitor visitor(isolate, addr); 2761 ContainsAddressVisitor visitor(isolate, addr);
2755 object = isolate->heap()->FindObject(&visitor); 2762 object = isolate->heap()->FindObject(&visitor);
2756 } 2763 }
2757 2764
2758 if (!object.IsNull()) { 2765 if (!object.IsNull()) {
2759 return object.raw(); 2766 return object.raw();
2760 } 2767 }
(...skipping 15 matching lines...) Expand all
2776 return true; 2783 return true;
2777 } 2784 }
2778 2785
2779 // Handle heap objects. 2786 // Handle heap objects.
2780 uword addr = 0; 2787 uword addr = 0;
2781 if (!GetUnsignedIntegerId(addr_str, &addr, 16)) { 2788 if (!GetUnsignedIntegerId(addr_str, &addr, 16)) {
2782 PrintInvalidParamError(js, "address"); 2789 PrintInvalidParamError(js, "address");
2783 return true; 2790 return true;
2784 } 2791 }
2785 bool ref = js->HasParam("ref") && js->ParamIs("ref", "true"); 2792 bool ref = js->HasParam("ref") && js->ParamIs("ref", "true");
2786 const Object& obj = Object::Handle(isolate, GetObjectHelper(isolate, addr)); 2793 const Object& obj = Object::Handle(isolate->current_zone(),
2794 GetObjectHelper(isolate, addr));
2787 if (obj.IsNull()) { 2795 if (obj.IsNull()) {
2788 PrintSentinel(js, kFreeSentinel); 2796 PrintSentinel(js, kFreeSentinel);
2789 } else { 2797 } else {
2790 obj.PrintJSON(js, ref); 2798 obj.PrintJSON(js, ref);
2791 } 2799 }
2792 return true; 2800 return true;
2793 } 2801 }
2794 2802
2795 2803
2796 static const MethodParameter* get_ports_params[] = { 2804 static const MethodParameter* get_ports_params[] = {
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
3288 ServiceMethodDescriptor& method = service_methods_[i]; 3296 ServiceMethodDescriptor& method = service_methods_[i];
3289 if (strcmp(method_name, method.name) == 0) { 3297 if (strcmp(method_name, method.name) == 0) {
3290 return &method; 3298 return &method;
3291 } 3299 }
3292 } 3300 }
3293 return NULL; 3301 return NULL;
3294 } 3302 }
3295 3303
3296 3304
3297 } // namespace dart 3305 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/service_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698