| Index: runtime/observatory/lib/src/service/object.dart | 
| diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart | 
| index 954f24e6a55799ead125c570499d447097bb3dcc..7d524ea4c50b8b4adf77ade0e389d1980125ac67 100644 | 
| --- a/runtime/observatory/lib/src/service/object.dart | 
| +++ b/runtime/observatory/lib/src/service/object.dart | 
| @@ -767,29 +767,28 @@ abstract class VM extends ServiceObjectOwner implements M.VM { | 
| return this; | 
| } | 
|  | 
| -    assert(type == 'Isolate'); | 
| String id = map['id']; | 
| -    if (!id.startsWith(_isolateIdPrefix)) { | 
| -      // Currently the VM only supports upgrading Isolate ServiceObjects. | 
| -      throw new UnimplementedError(); | 
| -    } | 
| - | 
| -    // Check cache. | 
| -    var isolate = _isolateCache[id]; | 
| -    if (isolate == null) { | 
| -      // Add new isolate to the cache. | 
| -      isolate = new ServiceObject._fromMap(this, map); | 
| -      _isolateCache[id] = isolate; | 
| -      _buildIsolateList(); | 
| - | 
| -      // Eagerly load the isolate. | 
| -      isolate.load().catchError((e, stack) { | 
| -        Logger.root.info('Eagerly loading an isolate failed: $e\n$stack'); | 
| -      }); | 
| -    } else { | 
| -      isolate.update(map); | 
| +    if ((id != null) && id.startsWith(_isolateIdPrefix)) { | 
| +      // Check cache. | 
| +      var isolate = _isolateCache[id]; | 
| +      if (isolate == null) { | 
| +        // Add new isolate to the cache. | 
| +        isolate = new ServiceObject._fromMap(this, map); | 
| +        _isolateCache[id] = isolate; | 
| +        _buildIsolateList(); | 
| + | 
| +        // Eagerly load the isolate. | 
| +        isolate.load().catchError((e, stack) { | 
| +          Logger.root.info('Eagerly loading an isolate failed: $e\n$stack'); | 
| +        }); | 
| +      } else { | 
| +        isolate.update(map); | 
| +      } | 
| +      return isolate; | 
| } | 
| -    return isolate; | 
| + | 
| +    // Build the object from the map directly. | 
| +    return new ServiceObject._fromMap(this, map); | 
| } | 
|  | 
| // Note that this function does not reload the isolate if it found | 
| @@ -3008,7 +3007,7 @@ class ServiceFunction extends HeapObject implements M.Function { | 
| ServiceFunction._empty(ServiceObject owner) : super._empty(owner); | 
|  | 
| void _update(Map map, bool mapIsRef) { | 
| -    _upgradeCollection(map, isolate); | 
| +    _upgradeCollection(map, owner); | 
| super._update(map, mapIsRef); | 
|  | 
| name = map['name']; | 
|  |