OLD | NEW |
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 1253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1264 return Object::sentinel().raw(); | 1264 return Object::sentinel().raw(); |
1265 } | 1265 } |
1266 Function& func = Function::Handle(zone); | 1266 Function& func = Function::Handle(zone); |
1267 func ^= isolate->ClosureFunctionFromIndex(id); | 1267 func ^= isolate->ClosureFunctionFromIndex(id); |
1268 if (func.IsNull()) { | 1268 if (func.IsNull()) { |
1269 return Object::sentinel().raw(); | 1269 return Object::sentinel().raw(); |
1270 } | 1270 } |
1271 return func.raw(); | 1271 return func.raw(); |
1272 | 1272 |
1273 } else if (strcmp(parts[2], "fields") == 0) { | 1273 } else if (strcmp(parts[2], "fields") == 0) { |
1274 // Field ids look like: "classes/17/fields/11" | 1274 // Field ids look like: "classes/17/fields/name" |
1275 if (num_parts != 4) { | 1275 if (num_parts != 4) { |
1276 return Object::sentinel().raw(); | 1276 return Object::sentinel().raw(); |
1277 } | 1277 } |
1278 intptr_t id; | 1278 const char* encoded_id = parts[3]; |
1279 if (!GetIntegerId(parts[3], &id)) { | 1279 String& id = String::Handle(zone, String::New(encoded_id)); |
| 1280 id = String::DecodeIRI(id); |
| 1281 if (id.IsNull()) { |
1280 return Object::sentinel().raw(); | 1282 return Object::sentinel().raw(); |
1281 } | 1283 } |
1282 Field& field = Field::Handle(zone, cls.FieldFromIndex(id)); | 1284 Field& field = Field::Handle(zone, cls.LookupField(id)); |
1283 if (field.IsNull()) { | 1285 if (field.IsNull()) { |
1284 return Object::sentinel().raw(); | 1286 return Object::sentinel().raw(); |
1285 } | 1287 } |
1286 return field.raw(); | 1288 return field.raw(); |
1287 | 1289 |
1288 } else if (strcmp(parts[2], "functions") == 0) { | 1290 } else if (strcmp(parts[2], "functions") == 0) { |
1289 // Function ids look like: "classes/17/functions/11" | 1291 // Function ids look like: "classes/17/functions/name" |
1290 if (num_parts != 4) { | 1292 if (num_parts != 4) { |
1291 return Object::sentinel().raw(); | 1293 return Object::sentinel().raw(); |
1292 } | 1294 } |
1293 const char* encoded_id = parts[3]; | 1295 const char* encoded_id = parts[3]; |
1294 String& id = String::Handle(zone, String::New(encoded_id)); | 1296 String& id = String::Handle(zone, String::New(encoded_id)); |
1295 id = String::DecodeIRI(id); | 1297 id = String::DecodeIRI(id); |
1296 if (id.IsNull()) { | 1298 if (id.IsNull()) { |
1297 return Object::sentinel().raw(); | 1299 return Object::sentinel().raw(); |
1298 } | 1300 } |
1299 Function& func = Function::Handle(zone, cls.LookupFunction(id)); | 1301 Function& func = Function::Handle(zone, cls.LookupFunction(id)); |
(...skipping 2253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3553 const ServiceMethodDescriptor& method = service_methods_[i]; | 3555 const ServiceMethodDescriptor& method = service_methods_[i]; |
3554 if (strcmp(method_name, method.name) == 0) { | 3556 if (strcmp(method_name, method.name) == 0) { |
3555 return &method; | 3557 return &method; |
3556 } | 3558 } |
3557 } | 3559 } |
3558 return NULL; | 3560 return NULL; |
3559 } | 3561 } |
3560 | 3562 |
3561 | 3563 |
3562 } // namespace dart | 3564 } // namespace dart |
OLD | NEW |