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

Side by Side Diff: runtime/bin/gen_snapshot.cc

Issue 1130753006: Hide Isolate pointer from embedder (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
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 // Generate a snapshot file after loading all the scripts specified on the 5 // Generate a snapshot file after loading all the scripts specified on the
6 // command line. 6 // command line.
7 7
8 #include <stdlib.h> 8 #include <stdlib.h>
9 #include <string.h> 9 #include <string.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 if (!file->WriteFully(buffer, size)) { 164 if (!file->WriteFully(buffer, size)) {
165 Log::PrintErr("Error: Failed to write snapshot file.\n\n"); 165 Log::PrintErr("Error: Failed to write snapshot file.\n\n");
166 } 166 }
167 delete file; 167 delete file;
168 } 168 }
169 169
170 170
171 class UriResolverIsolateScope { 171 class UriResolverIsolateScope {
172 public: 172 public:
173 UriResolverIsolateScope() { 173 UriResolverIsolateScope() {
174 ASSERT(isolate != NULL); 174 ASSERT(isolate != ILLEGAL_ISOLATE);
175 snapshotted_isolate_ = Dart_CurrentIsolate(); 175 snapshotted_isolate_ = Dart_CurrentIsolate();
176 Dart_ExitIsolate(); 176 Dart_ExitIsolate();
177 Dart_EnterIsolate(isolate); 177 Dart_EnterIsolate(isolate);
178 Dart_EnterScope(); 178 Dart_EnterScope();
179 } 179 }
180 180
181 ~UriResolverIsolateScope() { 181 ~UriResolverIsolateScope() {
182 ASSERT(snapshotted_isolate_ != NULL); 182 ASSERT(snapshotted_isolate_ != ILLEGAL_ISOLATE);
183 Dart_ExitScope(); 183 Dart_ExitScope();
184 Dart_ExitIsolate(); 184 Dart_ExitIsolate();
185 Dart_EnterIsolate(snapshotted_isolate_); 185 Dart_EnterIsolate(snapshotted_isolate_);
186 } 186 }
187 187
188 static Dart_Isolate isolate; 188 static Dart_Isolate isolate;
189 189
190 private: 190 private:
191 Dart_Isolate snapshotted_isolate_; 191 Dart_Isolate snapshotted_isolate_;
192 192
193 DISALLOW_COPY_AND_ASSIGN(UriResolverIsolateScope); 193 DISALLOW_COPY_AND_ASSIGN(UriResolverIsolateScope);
194 }; 194 };
195 195
196 Dart_Isolate UriResolverIsolateScope::isolate = NULL; 196 Dart_Isolate UriResolverIsolateScope::isolate = ILLEGAL_ISOLATE;
197 197
198 198
199 static Dart_Handle ResolveScriptUri(const char* script_uri) { 199 static Dart_Handle ResolveScriptUri(const char* script_uri) {
200 bool failed = false; 200 bool failed = false;
201 char* result_string = NULL; 201 char* result_string = NULL;
202 202
203 { 203 {
204 UriResolverIsolateScope scope; 204 UriResolverIsolateScope scope;
205 205
206 // Run DartUtils::ResolveScriptUri in context of uri resolver isolate. 206 // Run DartUtils::ResolveScriptUri in context of uri resolver isolate.
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 DartUtils::ReadFile, 544 DartUtils::ReadFile,
545 DartUtils::WriteFile, 545 DartUtils::WriteFile,
546 DartUtils::CloseFile, 546 DartUtils::CloseFile,
547 DartUtils::EntropySource)) { 547 DartUtils::EntropySource)) {
548 Log::PrintErr("VM initialization failed\n"); 548 Log::PrintErr("VM initialization failed\n");
549 return 255; 549 return 255;
550 } 550 }
551 551
552 char* error; 552 char* error;
553 Dart_Isolate isolate = Dart_CreateIsolate(NULL, NULL, NULL, NULL, &error); 553 Dart_Isolate isolate = Dart_CreateIsolate(NULL, NULL, NULL, NULL, &error);
554 if (isolate == NULL) { 554 if (isolate == ILLEGAL_ISOLATE) {
555 Log::PrintErr("Error: %s", error); 555 Log::PrintErr("Error: %s", error);
556 free(error); 556 free(error);
557 exit(255); 557 exit(255);
558 } 558 }
559 559
560 Dart_Handle result; 560 Dart_Handle result;
561 Dart_Handle library; 561 Dart_Handle library;
562 Dart_EnterScope(); 562 Dart_EnterScope();
563 563
564 ASSERT(vm_isolate_snapshot_filename != NULL); 564 ASSERT(vm_isolate_snapshot_filename != NULL);
(...skipping 21 matching lines...) Expand all
586 result = 586 result =
587 DartUtils::PrepareForScriptLoading(package_root, false, builtin_lib); 587 DartUtils::PrepareForScriptLoading(package_root, false, builtin_lib);
588 CHECK_RESULT(result); 588 CHECK_RESULT(result);
589 Dart_ExitScope(); 589 Dart_ExitScope();
590 Dart_ExitIsolate(); 590 Dart_ExitIsolate();
591 591
592 UriResolverIsolateScope::isolate = isolate; 592 UriResolverIsolateScope::isolate = isolate;
593 593
594 // Now we create an isolate into which we load all the code that needs to 594 // Now we create an isolate into which we load all the code that needs to
595 // be in the snapshot. 595 // be in the snapshot.
596 if (Dart_CreateIsolate(NULL, NULL, NULL, NULL, &error) == NULL) { 596 if (Dart_CreateIsolate(NULL, NULL, NULL, NULL, &error) == ILLEGAL_ISOLATE) {
597 fprintf(stderr, "%s", error); 597 fprintf(stderr, "%s", error);
598 free(error); 598 free(error);
599 exit(255); 599 exit(255);
600 } 600 }
601 Dart_EnterScope(); 601 Dart_EnterScope();
602 602
603 // Set up the library tag handler in such a manner that it will use the 603 // Set up the library tag handler in such a manner that it will use the
604 // URL mapping specified on the command line to load the libraries. 604 // URL mapping specified on the command line to load the libraries.
605 result = Dart_SetLibraryTagHandler(CreateSnapshotLibraryTagHandler); 605 result = Dart_SetLibraryTagHandler(CreateSnapshotLibraryTagHandler);
606 CHECK_RESULT(result); 606 CHECK_RESULT(result);
(...skipping 13 matching lines...) Expand all
620 } 620 }
621 return 0; 621 return 0;
622 } 622 }
623 623
624 } // namespace bin 624 } // namespace bin
625 } // namespace dart 625 } // namespace dart
626 626
627 int main(int argc, char** argv) { 627 int main(int argc, char** argv) {
628 return dart::bin::main(argc, argv); 628 return dart::bin::main(argc, argv);
629 } 629 }
OLDNEW
« no previous file with comments | « runtime/bin/dbg_connection.cc ('k') | runtime/bin/main.cc » ('j') | runtime/include/dart_api.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698