| Index: runtime/bin/main.cc
 | 
| diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
 | 
| index 6be11f0cc2cb8bf01044760242a257486fd10e48..42c804c8688c0e658280007a44f3fc172e9cfb08 100644
 | 
| --- a/runtime/bin/main.cc
 | 
| +++ b/runtime/bin/main.cc
 | 
| @@ -407,12 +407,10 @@ static bool ProcessFullSnapshotAfterRunOption(
 | 
|  
 | 
|  static bool ProcessRunFullSnapshotOption(
 | 
|      const char* filename, CommandLineOptions* vm_options) {
 | 
| -  // Ensure that we are not running 'dart_no_snapshot'.
 | 
| -  if (isolate_snapshot_buffer == NULL) {
 | 
| -    Log::PrintErr("Full Application snapshots cannot be run with"
 | 
| -                  " dart_no_snapshot\n");
 | 
| -    return false;
 | 
| -  }
 | 
| +#ifndef DART_PRODUCT_BINARY
 | 
| +  Log::PrintErr("Full Application snapshots can only be be run with"
 | 
| +                " dart_product\n");
 | 
| +#endif
 | 
|    return ProcessSnapshotOptionHelper(filename, &run_full_snapshot);
 | 
|  }
 | 
|  
 | 
| @@ -742,8 +740,15 @@ static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
 | 
|                                                  char** error,
 | 
|                                                  int* exit_code) {
 | 
|    ASSERT(script_uri != NULL);
 | 
| +#if defined(DART_PRODUCT_BINARY)
 | 
| +  if (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0) {
 | 
| +    // No service isolate support.
 | 
| +    return NULL;
 | 
| +  }
 | 
| +#endif  // defined(DART_PRODUCT_BINARY)
 | 
| +
 | 
|    if (run_full_snapshot &&
 | 
| -      !strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME)) {
 | 
| +      (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0)) {
 | 
|      // We do not create a service isolate when running a full application
 | 
|      // snapshot.
 | 
|      return NULL;
 | 
| @@ -777,6 +782,9 @@ static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
 | 
|    Dart_Handle result = Dart_SetLibraryTagHandler(DartUtils::LibraryTagHandler);
 | 
|    CHECK_RESULT(result);
 | 
|  
 | 
| +#if defined(DART_PRODUCT_BINARY)
 | 
| +  ASSERT(!Dart_IsServiceIsolate(isolate));
 | 
| +#else
 | 
|    if (Dart_IsServiceIsolate(isolate)) {
 | 
|      // If this is the service isolate, load embedder specific bits and return.
 | 
|      if (!VmService::Setup(vm_service_server_ip,
 | 
| @@ -793,6 +801,7 @@ static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
 | 
|      Dart_ExitIsolate();
 | 
|      return isolate;
 | 
|    }
 | 
| +#endif  // defined(DART_PRODUCT_BINARY)
 | 
|  
 | 
|    // Prepare builtin and other core libraries for use to resolve URIs.
 | 
|    // Set up various closures, e.g: printing, timers etc.
 | 
| @@ -1268,6 +1277,7 @@ bool RunMainIsolate(const char* script_name,
 | 
|          reinterpret_cast<IsolateData*>(Dart_IsolateData(isolate));
 | 
|      result = Dart_LibraryImportLibrary(
 | 
|          isolate_data->builtin_lib(), root_lib, Dart_Null());
 | 
| +#ifndef DART_PRODUCT_BINARY
 | 
|      if (is_noopt || gen_precompiled_snapshot) {
 | 
|        // Load the embedder's portion of the VM service's Dart code so it will
 | 
|        // be included in the precompiled snapshot.
 | 
| @@ -1279,6 +1289,7 @@ bool RunMainIsolate(const char* script_name,
 | 
|          exit(kErrorExitCode);
 | 
|        }
 | 
|      }
 | 
| +#endif  // !DART_PRODUCT_BINARY
 | 
|  
 | 
|      if (compile_all) {
 | 
|        result = Dart_CompileAll();
 | 
| 
 |