summaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-11-30 15:57:28 +0000
committerBen Murdoch <benm@google.com>2011-12-02 17:27:08 +0000
commit257744e915dfc84d6d07a6b2accf8402d9ffc708 (patch)
tree19d8782d5686697f36b1771e7fcd46f290b82c3c /samples
parent92022043ea907575278de828a5c9cf6939b51e5e (diff)
downloadandroid_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.cc4
-rw-r--r--samples/shell.cc46
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));
}