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 1302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1313 } | 1313 } |
1314 #ifdef V8_SHARED | 1314 #ifdef V8_SHARED |
1315 else if (strcmp(argv[i], "--dump-counters") == 0) { | 1315 else if (strcmp(argv[i], "--dump-counters") == 0) { |
1316 printf("D8 with shared library does not include counters\n"); | 1316 printf("D8 with shared library does not include counters\n"); |
1317 return false; | 1317 return false; |
1318 } else if (strcmp(argv[i], "--debugger") == 0) { | 1318 } else if (strcmp(argv[i], "--debugger") == 0) { |
1319 printf("Javascript debugger not included\n"); | 1319 printf("Javascript debugger not included\n"); |
1320 return false; | 1320 return false; |
1321 } | 1321 } |
1322 #endif // V8_SHARED | 1322 #endif // V8_SHARED |
1323 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | |
1324 else if (strncmp(argv[i], "--natives_blob=", 15) == 0) { | |
1325 options.natives_blob = argv[i] + 15; | |
1326 argv[i] = NULL; | |
1327 } else if (strncmp(argv[i], "--snapshot_blob=", 16) == 0) { | |
1328 options.snapshot_blob = argv[i] + 16; | |
1329 argv[i] = NULL; | |
1330 } | |
1331 #endif // V8_USE_EXTERNAL_STARTUP_DATA | |
1332 } | 1323 } |
1333 | 1324 |
1334 v8::V8::SetFlagsFromCommandLine(&argc, argv, true); | 1325 v8::V8::SetFlagsFromCommandLine(&argc, argv, true); |
1335 | 1326 |
1336 // Set up isolated source groups. | 1327 // Set up isolated source groups. |
1337 options.isolate_sources = new SourceGroup[options.num_isolates]; | 1328 options.isolate_sources = new SourceGroup[options.num_isolates]; |
1338 SourceGroup* current = options.isolate_sources; | 1329 SourceGroup* current = options.isolate_sources; |
1339 current->Begin(argv, 1); | 1330 current->Begin(argv, 1); |
1340 for (int i = 1; i < argc; i++) { | 1331 for (int i = 1; i < argc; i++) { |
1341 const char* str = argv[i]; | 1332 const char* str = argv[i]; |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1479 } | 1470 } |
1480 virtual void* AllocateUninitialized(size_t length) V8_OVERRIDE { | 1471 virtual void* AllocateUninitialized(size_t length) V8_OVERRIDE { |
1481 return malloc(0); | 1472 return malloc(0); |
1482 } | 1473 } |
1483 virtual void Free(void* p, size_t) V8_OVERRIDE { | 1474 virtual void Free(void* p, size_t) V8_OVERRIDE { |
1484 free(p); | 1475 free(p); |
1485 } | 1476 } |
1486 }; | 1477 }; |
1487 | 1478 |
1488 | 1479 |
1489 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | |
1490 class StartupDataHandler { | |
1491 public: | |
1492 StartupDataHandler(const char* natives_blob, | |
1493 const char* snapshot_blob) { | |
1494 Load(natives_blob, &natives_, v8::V8::SetNativesDataBlob); | |
1495 Load(snapshot_blob, &snapshot_, v8::V8::SetSnapshotDataBlob); | |
1496 } | |
1497 | |
1498 ~StartupDataHandler() { | |
1499 delete[] natives_.data; | |
1500 delete[] snapshot_.data; | |
1501 } | |
1502 | |
1503 private: | |
1504 void Load(const char* blob_file, | |
1505 v8::StartupData* startup_data, | |
1506 void (*setter_fn)(v8::StartupData*)) { | |
1507 startup_data->data = NULL; | |
1508 startup_data->compressed_size = 0; | |
1509 startup_data->raw_size = 0; | |
1510 | |
1511 if (!blob_file) | |
1512 return; | |
1513 | |
1514 FILE* file = fopen(blob_file, "rb"); | |
1515 if (!file) | |
1516 return; | |
1517 | |
1518 fseek(file, 0, SEEK_END); | |
1519 startup_data->raw_size = ftell(file); | |
1520 rewind(file); | |
1521 | |
1522 startup_data->data = new char[startup_data->raw_size]; | |
1523 startup_data->compressed_size = fread( | |
1524 const_cast<char*>(startup_data->data), 1, startup_data->raw_size, | |
1525 file); | |
1526 fclose(file); | |
1527 | |
1528 if (startup_data->raw_size == startup_data->compressed_size) | |
1529 (*setter_fn)(startup_data); | |
1530 } | |
1531 | |
1532 v8::StartupData natives_; | |
1533 v8::StartupData snapshot_; | |
1534 | |
1535 // Disallow copy & assign. | |
1536 StartupDataHandler(const StartupDataHandler& other); | |
1537 void operator=(const StartupDataHandler& other); | |
1538 }; | |
1539 #endif // V8_USE_EXTERNAL_STARTUP_DATA | |
1540 | |
1541 | |
1542 int Shell::Main(int argc, char* argv[]) { | 1480 int Shell::Main(int argc, char* argv[]) { |
1543 if (!SetOptions(argc, argv)) return 1; | 1481 if (!SetOptions(argc, argv)) return 1; |
1544 v8::V8::InitializeICU(options.icu_data_file); | 1482 v8::V8::InitializeICU(options.icu_data_file); |
1545 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | |
1546 StartupDataHandler startup_data(options.natives_blob, options.snapshot_blob); | |
1547 #endif | |
1548 SetFlagsFromString("--trace-hydrogen-file=hydrogen.cfg"); | 1483 SetFlagsFromString("--trace-hydrogen-file=hydrogen.cfg"); |
1549 SetFlagsFromString("--redirect-code-traces-to=code.asm"); | 1484 SetFlagsFromString("--redirect-code-traces-to=code.asm"); |
1550 ShellArrayBufferAllocator array_buffer_allocator; | 1485 ShellArrayBufferAllocator array_buffer_allocator; |
1551 MockArrayBufferAllocator mock_arraybuffer_allocator; | 1486 MockArrayBufferAllocator mock_arraybuffer_allocator; |
1552 if (options.mock_arraybuffer_allocator) { | 1487 if (options.mock_arraybuffer_allocator) { |
1553 v8::V8::SetArrayBufferAllocator(&mock_arraybuffer_allocator); | 1488 v8::V8::SetArrayBufferAllocator(&mock_arraybuffer_allocator); |
1554 } else { | 1489 } else { |
1555 v8::V8::SetArrayBufferAllocator(&array_buffer_allocator); | 1490 v8::V8::SetArrayBufferAllocator(&array_buffer_allocator); |
1556 } | 1491 } |
1557 int result = 0; | 1492 int result = 0; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1626 } | 1561 } |
1627 | 1562 |
1628 } // namespace v8 | 1563 } // namespace v8 |
1629 | 1564 |
1630 | 1565 |
1631 #ifndef GOOGLE3 | 1566 #ifndef GOOGLE3 |
1632 int main(int argc, char* argv[]) { | 1567 int main(int argc, char* argv[]) { |
1633 return v8::Shell::Main(argc, argv); | 1568 return v8::Shell::Main(argc, argv); |
1634 } | 1569 } |
1635 #endif | 1570 #endif |
OLD | NEW |