| Index: samples/shell.cc
|
| diff --git a/samples/shell.cc b/samples/shell.cc
|
| index 0a9b8a0d4f899ba423af2eafd4135341dada952f..e253fbaaa060559dfda7d31bcba114b69fa097e4 100644
|
| --- a/samples/shell.cc
|
| +++ b/samples/shell.cc
|
| @@ -213,6 +213,34 @@ class SourceGroup {
|
| static SourceGroup* isolate_sources = NULL;
|
|
|
|
|
| +#ifdef COMPRESS_STARTUP_DATA_BZ2
|
| +class BZip2Decompressor : public v8::StartupDataDecompressor {
|
| + public:
|
| + virtual ~BZip2Decompressor() { }
|
| +
|
| + protected:
|
| + virtual int DecompressData(char* raw_data,
|
| + int* raw_data_size,
|
| + const char* compressed_data,
|
| + int compressed_data_size) {
|
| + ASSERT_EQ(v8::StartupData::kBZip2,
|
| + v8::V8::GetCompressedStartupDataAlgorithm());
|
| + unsigned int decompressed_size = *raw_data_size;
|
| + int result =
|
| + BZ2_bzBuffToBuffDecompress(raw_data,
|
| + &decompressed_size,
|
| + const_cast<char*>(compressed_data),
|
| + compressed_data_size,
|
| + 0, 1);
|
| + if (result == BZ_OK) {
|
| + *raw_data_size = decompressed_size;
|
| + }
|
| + return result;
|
| + }
|
| +};
|
| +#endif
|
| +
|
| +
|
| int RunMain(int argc, char* argv[]) {
|
| v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
|
| v8::HandleScope handle_scope;
|
| @@ -303,29 +331,13 @@ int main(int argc, char* argv[]) {
|
| }
|
|
|
| #ifdef COMPRESS_STARTUP_DATA_BZ2
|
| - ASSERT_EQ(v8::StartupData::kBZip2,
|
| - v8::V8::GetCompressedStartupDataAlgorithm());
|
| - int compressed_data_count = v8::V8::GetCompressedStartupDataCount();
|
| - v8::StartupData* compressed_data = new v8::StartupData[compressed_data_count];
|
| - v8::V8::GetCompressedStartupData(compressed_data);
|
| - for (int i = 0; i < compressed_data_count; ++i) {
|
| - char* decompressed = new char[compressed_data[i].raw_size];
|
| - unsigned int decompressed_size = compressed_data[i].raw_size;
|
| - int result =
|
| - BZ2_bzBuffToBuffDecompress(decompressed,
|
| - &decompressed_size,
|
| - const_cast<char*>(compressed_data[i].data),
|
| - compressed_data[i].compressed_size,
|
| - 0, 1);
|
| - if (result != BZ_OK) {
|
| - fprintf(stderr, "bzip error code: %d\n", result);
|
| - exit(1);
|
| - }
|
| - compressed_data[i].data = decompressed;
|
| - compressed_data[i].raw_size = decompressed_size;
|
| + BZip2Decompressor startup_data_decompressor;
|
| + int bz2_result = startup_data_decompressor.Decompress();
|
| + if (bz2_result != BZ_OK) {
|
| + fprintf(stderr, "bzip error code: %d\n", bz2_result);
|
| + exit(1);
|
| }
|
| - v8::V8::SetDecompressedStartupData(compressed_data);
|
| -#endif // COMPRESS_STARTUP_DATA_BZ2
|
| +#endif
|
|
|
| v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
|
| int result = 0;
|
| @@ -348,13 +360,6 @@ int main(int argc, char* argv[]) {
|
| }
|
| v8::V8::Dispose();
|
|
|
| -#ifdef COMPRESS_STARTUP_DATA_BZ2
|
| - for (int i = 0; i < compressed_data_count; ++i) {
|
| - delete[] compressed_data[i].data;
|
| - }
|
| - delete[] compressed_data;
|
| -#endif // COMPRESS_STARTUP_DATA_BZ2
|
| -
|
| return result;
|
| }
|
|
|
|
|