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

Side by Side Diff: runtime/embedders/openglui/common/vm_glue.cc

Issue 14752023: Fix the embedder on the desktop. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 <math.h> 5 #include <math.h>
6 #include <stdarg.h> 6 #include <stdarg.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 #include <string.h> 9 #include <string.h>
10 #include <sys/stat.h> 10 #include <sys/stat.h>
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 error); 122 error);
123 } 123 }
124 124
125 const char* VM_FLAGS[] = { 125 const char* VM_FLAGS[] = {
126 "--enable_type_checks", // TODO(gram): This should be an option! 126 "--enable_type_checks", // TODO(gram): This should be an option!
127 // "--trace_isolates", 127 // "--trace_isolates",
128 // "--trace_natives", 128 // "--trace_natives",
129 // "--trace_compiler", 129 // "--trace_compiler",
130 }; 130 };
131 131
132 static void* openFileCallback(const char* name, bool write) {
133 return fopen(name, write ? "w" : "r");
134 }
135
136 static void readFileCallback(const uint8_t** data, intptr_t* fileLength,
137 void* stream) {
138 if (!stream) {
139 *data = 0;
140 *fileLength = 0;
141 } else {
142 FILE* file = reinterpret_cast<FILE*>(stream);
143
144 // Get the file size.
145 fseek(file, 0, SEEK_END);
146 *fileLength = ftell(file);
147 rewind(file);
148
149 // Allocate data buffer.
150 *data = new uint8_t[*fileLength];
151 *fileLength = fread(const_cast<uint8_t*>(*data), 1, *fileLength, file);
152 }
153 }
154
155 static void writeFileCallback(const void* data, intptr_t length, void* file) {
156 fwrite(data, 1, length, reinterpret_cast<FILE*>(file));
157 }
158
159 static void closeFileCallback(void* file) {
160 fclose(reinterpret_cast<FILE*>(file));
161 }
162
132 int VMGlue::InitializeVM() { 163 int VMGlue::InitializeVM() {
133 // We need the next call to get Dart_Initialize not to bail early. 164 // We need the next call to get Dart_Initialize not to bail early.
134 LOGI("Setting VM Options"); 165 LOGI("Setting VM Options");
135 Dart_SetVMFlags(sizeof(VM_FLAGS) / sizeof(VM_FLAGS[0]), VM_FLAGS); 166 Dart_SetVMFlags(sizeof(VM_FLAGS) / sizeof(VM_FLAGS[0]), VM_FLAGS);
136 167
137 // Initialize the Dart VM, providing the callbacks to use for 168 // Initialize the Dart VM, providing the callbacks to use for
138 // creating and shutting down isolates. 169 // creating and shutting down isolates.
139 LOGI("Initializing Dart"); 170 LOGI("Initializing Dart");
140 if (!Dart_Initialize(CreateIsolateAndSetup, 171 if (!Dart_Initialize(CreateIsolateAndSetup,
141 NULL, 172 0,
142 NULL, 173 0,
143 NULL, 174 0,
144 NULL, 175 openFileCallback,
145 NULL, 176 readFileCallback,
146 NULL, 177 writeFileCallback,
147 NULL)) { 178 closeFileCallback)) {
148 LOGE("VM initialization failed\n"); 179 LOGE("VM initialization failed\n");
149 return -1; 180 return -1;
150 } 181 }
151 initialized_vm_ = true; 182 initialized_vm_ = true;
152 183
153 return 0; 184 return 0;
154 } 185 }
155 186
156 Dart_Handle VMGlue::LoadSourceFromFile(const char* url) { 187 Dart_Handle VMGlue::LoadSourceFromFile(const char* url) {
157 FILE* file = fopen(url, "r"); 188 FILE* file = fopen(url, "r");
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 389
359 void VMGlue::FinishMainIsolate() { 390 void VMGlue::FinishMainIsolate() {
360 LOGI("Finish main isolate"); 391 LOGI("Finish main isolate");
361 Dart_EnterIsolate(isolate_); 392 Dart_EnterIsolate(isolate_);
362 // Shutdown the isolate. 393 // Shutdown the isolate.
363 Dart_ShutdownIsolate(); 394 Dart_ShutdownIsolate();
364 isolate_ = NULL; 395 isolate_ = NULL;
365 initialized_script_ = false; 396 initialized_script_ = false;
366 } 397 }
367 398
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698