diff options
author | Ben Murdoch <benm@google.com> | 2011-11-30 15:57:28 +0000 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-12-02 17:27:08 +0000 |
commit | 257744e915dfc84d6d07a6b2accf8402d9ffc708 (patch) | |
tree | 19d8782d5686697f36b1771e7fcd46f290b82c3c /samples | |
parent | 92022043ea907575278de828a5c9cf6939b51e5e (diff) | |
download | android_external_v8-257744e915dfc84d6d07a6b2accf8402d9ffc708.tar.gz android_external_v8-257744e915dfc84d6d07a6b2accf8402d9ffc708.tar.bz2 android_external_v8-257744e915dfc84d6d07a6b2accf8402d9ffc708.zip |
Upgrade to V8 3.3
Merge V8 at 3.3.10.39
Simple merge required updates to makefiles only.
Bug: 5688872
Change-Id: I14703f418235f5ce6013b9b3e2e502407a9f6dfd
Diffstat (limited to 'samples')
-rw-r--r-- | samples/process.cc | 4 | ||||
-rw-r--r-- | samples/shell.cc | 46 |
2 files changed, 50 insertions, 0 deletions
diff --git a/samples/process.cc b/samples/process.cc index 6be4ea54..4a873b76 100644 --- a/samples/process.cc +++ b/samples/process.cc @@ -30,6 +30,10 @@ #include <string> #include <map> +#ifdef COMPRESS_STARTUP_DATA_BZ2 +#error Using compressed startup data is not supported for this sample +#endif + using namespace std; using namespace v8; diff --git a/samples/shell.cc b/samples/shell.cc index 222eeda1..342031db 100644 --- a/samples/shell.cc +++ b/samples/shell.cc @@ -28,6 +28,9 @@ #include <v8.h> #include <v8-testing.h> #include <assert.h> +#ifdef COMPRESS_STARTUP_DATA_BZ2 +#include <bzlib.h> +#endif #include <fcntl.h> #include <string.h> #include <stdio.h> @@ -72,6 +75,7 @@ v8::Handle<v8::Value> Uint16Array(const v8::Arguments& args); v8::Handle<v8::Value> Int32Array(const v8::Arguments& args); v8::Handle<v8::Value> Uint32Array(const v8::Arguments& args); v8::Handle<v8::Value> Float32Array(const v8::Arguments& args); +v8::Handle<v8::Value> Float64Array(const v8::Arguments& args); v8::Handle<v8::Value> PixelArray(const v8::Arguments& args); v8::Handle<v8::String> ReadFile(const char* name); void ReportException(v8::TryCatch* handler); @@ -298,6 +302,31 @@ 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; + } + v8::V8::SetDecompressedStartupData(compressed_data); +#endif // COMPRESS_STARTUP_DATA_BZ2 + v8::V8::SetFlagsFromCommandLine(&argc, argv, true); int result = 0; if (FLAG_stress_opt || FLAG_stress_deopt) { @@ -318,6 +347,14 @@ int main(int argc, char* argv[]) { result = RunMain(argc, 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; } @@ -359,6 +396,8 @@ v8::Persistent<v8::Context> CreateShellContext() { v8::FunctionTemplate::New(Uint32Array)); global->Set(v8::String::New("Float32Array"), v8::FunctionTemplate::New(Float32Array)); + global->Set(v8::String::New("Float64Array"), + v8::FunctionTemplate::New(Float64Array)); global->Set(v8::String::New("PixelArray"), v8::FunctionTemplate::New(PixelArray)); @@ -465,6 +504,7 @@ v8::Handle<v8::Value> CreateExternalArray(const v8::Arguments& args, v8::Persistent<v8::Object> persistent_array = v8::Persistent<v8::Object>::New(array); persistent_array.MakeWeak(data, ExternalArrayWeakCallback); + persistent_array.MarkIndependent(); array->SetIndexedPropertiesToExternalArrayData(data, type, length); array->Set(v8::String::New("length"), v8::Int32::New(length), v8::ReadOnly); @@ -512,6 +552,12 @@ v8::Handle<v8::Value> Float32Array(const v8::Arguments& args) { } +v8::Handle<v8::Value> Float64Array(const v8::Arguments& args) { + return CreateExternalArray(args, v8::kExternalDoubleArray, + sizeof(double)); // NOLINT +} + + v8::Handle<v8::Value> PixelArray(const v8::Arguments& args) { return CreateExternalArray(args, v8::kExternalPixelArray, sizeof(uint8_t)); } |