Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 // Defined when linking against shared lib on Windows. | 6 // Defined when linking against shared lib on Windows. |
| 7 #if defined(USING_V8_SHARED) && !defined(V8_SHARED) | 7 #if defined(USING_V8_SHARED) && !defined(V8_SHARED) |
| 8 #define V8_SHARED | 8 #define V8_SHARED |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1204 Context::Scope cscope(context); | 1204 Context::Scope cscope(context); |
| 1205 PerIsolateData::RealmScope realm_scope(PerIsolateData::Get(isolate)); | 1205 PerIsolateData::RealmScope realm_scope(PerIsolateData::Get(isolate)); |
| 1206 Execute(isolate); | 1206 Execute(isolate); |
| 1207 } | 1207 } |
| 1208 } | 1208 } |
| 1209 if (Shell::options.send_idle_notification) { | 1209 if (Shell::options.send_idle_notification) { |
| 1210 const int kLongIdlePauseInMs = 1000; | 1210 const int kLongIdlePauseInMs = 1000; |
| 1211 V8::ContextDisposedNotification(); | 1211 V8::ContextDisposedNotification(); |
| 1212 V8::IdleNotification(kLongIdlePauseInMs); | 1212 V8::IdleNotification(kLongIdlePauseInMs); |
| 1213 } | 1213 } |
| 1214 if (Shell::options.invoke_weak_callbacks) { | |
| 1215 // By sending a low memory notifications, we will try hard to collect | |
| 1216 // all garbage and will therefore also invoke all weak callbacks of | |
| 1217 // actually unreachable persistent handles. | |
| 1218 V8::LowMemoryNotification(); | |
| 1219 } | |
| 1214 } | 1220 } |
| 1215 done_semaphore_.Signal(); | 1221 done_semaphore_.Signal(); |
| 1216 } while (!Shell::options.last_run); | 1222 } while (!Shell::options.last_run); |
| 1223 | |
| 1217 isolate->Dispose(); | 1224 isolate->Dispose(); |
| 1218 } | 1225 } |
| 1219 | 1226 |
| 1220 | 1227 |
| 1221 void SourceGroup::StartExecuteInThread() { | 1228 void SourceGroup::StartExecuteInThread() { |
| 1222 if (thread_ == NULL) { | 1229 if (thread_ == NULL) { |
| 1223 thread_ = new IsolateThread(this); | 1230 thread_ = new IsolateThread(this); |
| 1224 thread_->Start(); | 1231 thread_->Start(); |
| 1225 } | 1232 } |
| 1226 next_semaphore_.Signal(); | 1233 next_semaphore_.Signal(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1267 argv[i] = NULL; | 1274 argv[i] = NULL; |
| 1268 } else if (strcmp(argv[i], "--shell") == 0) { | 1275 } else if (strcmp(argv[i], "--shell") == 0) { |
| 1269 options.interactive_shell = true; | 1276 options.interactive_shell = true; |
| 1270 argv[i] = NULL; | 1277 argv[i] = NULL; |
| 1271 } else if (strcmp(argv[i], "--test") == 0) { | 1278 } else if (strcmp(argv[i], "--test") == 0) { |
| 1272 options.test_shell = true; | 1279 options.test_shell = true; |
| 1273 argv[i] = NULL; | 1280 argv[i] = NULL; |
| 1274 } else if (strcmp(argv[i], "--send-idle-notification") == 0) { | 1281 } else if (strcmp(argv[i], "--send-idle-notification") == 0) { |
| 1275 options.send_idle_notification = true; | 1282 options.send_idle_notification = true; |
| 1276 argv[i] = NULL; | 1283 argv[i] = NULL; |
| 1284 } else if (strcmp(argv[i], "--invoke-weak-callbacks") == 0) { | |
| 1285 options.invoke_weak_callbacks = true; | |
| 1286 // TODO(jochen) See issue 3351 | |
| 1287 options.send_idle_notification = true; | |
| 1288 argv[i] = NULL; | |
| 1277 } else if (strcmp(argv[i], "-f") == 0) { | 1289 } else if (strcmp(argv[i], "-f") == 0) { |
| 1278 // Ignore any -f flags for compatibility with other stand-alone | 1290 // Ignore any -f flags for compatibility with other stand-alone |
| 1279 // JavaScript engines. | 1291 // JavaScript engines. |
| 1280 continue; | 1292 continue; |
| 1281 } else if (strcmp(argv[i], "--isolate") == 0) { | 1293 } else if (strcmp(argv[i], "--isolate") == 0) { |
| 1282 #ifdef V8_SHARED | 1294 #ifdef V8_SHARED |
| 1283 printf("D8 with shared library does not support multi-threading\n"); | 1295 printf("D8 with shared library does not support multi-threading\n"); |
| 1284 return false; | 1296 return false; |
| 1285 #endif // V8_SHARED | 1297 #endif // V8_SHARED |
| 1286 options.num_isolates++; | 1298 options.num_isolates++; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1360 Context::Scope cscope(context); | 1372 Context::Scope cscope(context); |
| 1361 PerIsolateData::RealmScope realm_scope(PerIsolateData::Get(isolate)); | 1373 PerIsolateData::RealmScope realm_scope(PerIsolateData::Get(isolate)); |
| 1362 options.isolate_sources[0].Execute(isolate); | 1374 options.isolate_sources[0].Execute(isolate); |
| 1363 } | 1375 } |
| 1364 } | 1376 } |
| 1365 if (options.send_idle_notification) { | 1377 if (options.send_idle_notification) { |
| 1366 const int kLongIdlePauseInMs = 1000; | 1378 const int kLongIdlePauseInMs = 1000; |
| 1367 V8::ContextDisposedNotification(); | 1379 V8::ContextDisposedNotification(); |
| 1368 V8::IdleNotification(kLongIdlePauseInMs); | 1380 V8::IdleNotification(kLongIdlePauseInMs); |
| 1369 } | 1381 } |
| 1382 if (options.invoke_weak_callbacks) { | |
| 1383 // By sending a low memory notifications, we will try hard to collect all | |
| 1384 // garbage and will therefore also invoke all weak callbacks of actually | |
| 1385 // unreachable persistent handles. | |
| 1386 V8::LowMemoryNotification(); | |
| 1387 } | |
|
Yang
2014/05/27 13:42:04
This duplicate code could be factored out into a h
| |
| 1370 | 1388 |
| 1371 #ifndef V8_SHARED | 1389 #ifndef V8_SHARED |
| 1372 for (int i = 1; i < options.num_isolates; ++i) { | 1390 for (int i = 1; i < options.num_isolates; ++i) { |
| 1373 options.isolate_sources[i].WaitForThread(); | 1391 options.isolate_sources[i].WaitForThread(); |
| 1374 } | 1392 } |
| 1375 #endif // !V8_SHARED | 1393 #endif // !V8_SHARED |
| 1376 return 0; | 1394 return 0; |
| 1377 } | 1395 } |
| 1378 | 1396 |
| 1379 | 1397 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1542 } | 1560 } |
| 1543 | 1561 |
| 1544 } // namespace v8 | 1562 } // namespace v8 |
| 1545 | 1563 |
| 1546 | 1564 |
| 1547 #ifndef GOOGLE3 | 1565 #ifndef GOOGLE3 |
| 1548 int main(int argc, char* argv[]) { | 1566 int main(int argc, char* argv[]) { |
| 1549 return v8::Shell::Main(argc, argv); | 1567 return v8::Shell::Main(argc, argv); |
| 1550 } | 1568 } |
| 1551 #endif | 1569 #endif |
| OLD | NEW |