| Index: src/d8.cc
|
| diff --git a/src/d8.cc b/src/d8.cc
|
| index 1d798b14bfa3ef3e059f117c1f44b916fdc821df..f4c7846f5273e6dc5106e047febf4814ad6693ae 100644
|
| --- a/src/d8.cc
|
| +++ b/src/d8.cc
|
| @@ -26,8 +26,11 @@
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
| -#include <stdlib.h>
|
| +#ifdef COMPRESS_STARTUP_DATA_BZ2
|
| +#include <bzlib.h>
|
| +#endif
|
| #include <errno.h>
|
| +#include <stdlib.h>
|
|
|
| #include "v8.h"
|
|
|
| @@ -483,7 +486,44 @@ void Shell::AddHistogramSample(void* histogram, int sample) {
|
| }
|
|
|
|
|
| +#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
|
| +
|
| +
|
| void Shell::Initialize() {
|
| +#ifdef COMPRESS_STARTUP_DATA_BZ2
|
| + 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);
|
| + }
|
| +#endif
|
| +
|
| Shell::counter_map_ = new CounterMap();
|
| // Set up counters
|
| if (i::StrLength(i::FLAG_map_counters) != 0)
|
|
|