| Index: runtime/vm/dart_api_impl.cc | 
| =================================================================== | 
| --- runtime/vm/dart_api_impl.cc	(revision 20756) | 
| +++ runtime/vm/dart_api_impl.cc	(working copy) | 
| @@ -80,12 +80,6 @@ | 
| } while (0) | 
|  | 
|  | 
| -void SetupErrorResult(Isolate* isolate, Dart_Handle* handle) { | 
| -  *handle = Api::NewHandle( | 
| -      isolate, Isolate::Current()->object_store()->sticky_error()); | 
| -} | 
| - | 
| - | 
| Dart_Handle Api::NewHandle(Isolate* isolate, RawObject* raw) { | 
| LocalHandles* local_handles = Api::TopScope(isolate)->local_handles(); | 
| ASSERT(local_handles != NULL); | 
| @@ -159,9 +153,8 @@ | 
| isolate->object_store()->PreallocateObjects()) { | 
| return Api::Success(isolate); | 
| } | 
| -  const Object& obj = Object::Handle(isolate->object_store()->sticky_error()); | 
| -  ASSERT(obj.IsError()); | 
| -  return Api::NewHandle(isolate, obj.raw()); | 
| +  ASSERT(isolate->object_store()->sticky_error() != Object::null()); | 
| +  return Api::NewHandle(isolate, isolate->object_store()->sticky_error()); | 
| } | 
|  | 
|  | 
| @@ -972,8 +965,7 @@ | 
|  | 
| DART_EXPORT Dart_Handle Dart_RunLoop() { | 
| Isolate* isolate = Isolate::Current(); | 
| - | 
| -  DARTSCOPE(isolate); | 
| +  CHECK_ISOLATE_SCOPE(isolate); | 
| CHECK_CALLBACK_STATE(isolate); | 
| Monitor monitor; | 
| MonitorLocker ml(&monitor); | 
| @@ -990,12 +982,12 @@ | 
| ml.Wait(); | 
| } | 
| } | 
| -  const Object& obj = Object::Handle(isolate->object_store()->sticky_error()); | 
| -  isolate->object_store()->clear_sticky_error(); | 
| -  if (obj.IsError()) { | 
| -    return Api::NewHandle(isolate, obj.raw()); | 
| +  if (isolate->object_store()->sticky_error() != Object::null()) { | 
| +    Dart_Handle error = Api::NewHandle(isolate, | 
| +                                       isolate->object_store()->sticky_error()); | 
| +    isolate->object_store()->clear_sticky_error(); | 
| +    return error; | 
| } | 
| -  ASSERT(obj.IsNull()); | 
| if (FLAG_print_class_table) { | 
| isolate->class_table()->Print(); | 
| } | 
| @@ -1005,10 +997,11 @@ | 
|  | 
| DART_EXPORT Dart_Handle Dart_HandleMessage() { | 
| Isolate* isolate = Isolate::Current(); | 
| -  CHECK_ISOLATE(isolate); | 
| +  CHECK_ISOLATE_SCOPE(isolate); | 
| +  CHECK_CALLBACK_STATE(isolate); | 
| if (!isolate->message_handler()->HandleNextMessage()) { | 
| -    Dart_Handle error = | 
| -        Api::NewHandle(isolate, isolate->object_store()->sticky_error()); | 
| +    Dart_Handle error = Api::NewHandle(isolate, | 
| +                                       isolate->object_store()->sticky_error()); | 
| isolate->object_store()->clear_sticky_error(); | 
| return error; | 
| } | 
|  |