aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-01-19 12:34:18 +0000
committerBen Murdoch <benm@google.com>2011-01-20 11:56:33 +0000
commit85816cb2b687fe806bc6490054c53f9bd0f1d9d2 (patch)
tree8197adf6635b8d5a5347105d76b51fb8ca2fe53a
parent94e1191aadda9f44c360c33b19deafbf94881fd5 (diff)
downloadv8-85816cb2b687fe806bc6490054c53f9bd0f1d9d2.tar.gz
Update v8 to r6394 (2.5 branch)
This is v8 2.5.9.11. http://v8.googlecode.com/svn/branches/2.5@6394 Change-Id: I179913c9c86d36bfc5c6b8a50cdbf8d306508a93
-rw-r--r--V8_MERGE_REVISION4
-rw-r--r--include/v8.h10
-rw-r--r--src/api.cc4
-rw-r--r--src/version.cc2
-rw-r--r--test/cctest/test-api.cc4
5 files changed, 14 insertions, 10 deletions
diff --git a/V8_MERGE_REVISION b/V8_MERGE_REVISION
index b48f2501..27dc101f 100644
--- a/V8_MERGE_REVISION
+++ b/V8_MERGE_REVISION
@@ -1,4 +1,4 @@
We use a V8 revision that has been used for a Chromium release.
-http://src.chromium.org/svn/releases/9.0.597.69/DEPS
-http://v8.googlecode.com/svn/branches/2.5@6333
+http://src.chromium.org/svn/releases/9.0.597.76/DEPS
+http://v8.googlecode.com/svn/branches/2.5@6394
diff --git a/include/v8.h b/include/v8.h
index 2684cd34..a202eaa7 100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -3314,7 +3314,7 @@ template <> struct SmiTagging<4> {
// For 32-bit systems any 2 bytes aligned pointer can be encoded as smi
// with a plain reinterpret_cast.
- static const intptr_t kEncodablePointerMask = 0x1;
+ static const uintptr_t kEncodablePointerMask = 0x1;
static const int kPointerToSmiShift = 0;
};
@@ -3334,8 +3334,8 @@ template <> struct SmiTagging<8> {
// It might be not enough to cover stack allocated objects on some platforms.
static const int kPointerAlignment = 3;
- static const intptr_t kEncodablePointerMask =
- ~(intptr_t(0xffffffff) << kPointerAlignment);
+ static const uintptr_t kEncodablePointerMask =
+ ~(uintptr_t(0xffffffff) << kPointerAlignment);
static const int kPointerToSmiShift =
kSmiTagSize + kSmiShiftSize - kPointerAlignment;
@@ -3344,7 +3344,7 @@ template <> struct SmiTagging<8> {
typedef SmiTagging<kApiPointerSize> PlatformSmiTagging;
const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize;
const int kSmiValueSize = PlatformSmiTagging::kSmiValueSize;
-const intptr_t kEncodablePointerMask =
+const uintptr_t kEncodablePointerMask =
PlatformSmiTagging::kEncodablePointerMask;
const int kPointerToSmiShift = PlatformSmiTagging::kPointerToSmiShift;
@@ -3404,7 +3404,7 @@ class Internals {
}
static inline void* GetExternalPointerFromSmi(internal::Object* value) {
- const intptr_t address = reinterpret_cast<intptr_t>(value);
+ const uintptr_t address = reinterpret_cast<uintptr_t>(value);
return reinterpret_cast<void*>(address >> kPointerToSmiShift);
}
diff --git a/src/api.cc b/src/api.cc
index b1fb88a0..089c7973 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -3244,14 +3244,14 @@ void v8::Object::SetInternalField(int index, v8::Handle<Value> value) {
static bool CanBeEncodedAsSmi(void* ptr) {
- const intptr_t address = reinterpret_cast<intptr_t>(ptr);
+ const uintptr_t address = reinterpret_cast<uintptr_t>(ptr);
return ((address & i::kEncodablePointerMask) == 0);
}
static i::Smi* EncodeAsSmi(void* ptr) {
ASSERT(CanBeEncodedAsSmi(ptr));
- const intptr_t address = reinterpret_cast<intptr_t>(ptr);
+ const uintptr_t address = reinterpret_cast<uintptr_t>(ptr);
i::Smi* result = reinterpret_cast<i::Smi*>(address << i::kPointerToSmiShift);
ASSERT(i::Internals::HasSmiTag(result));
ASSERT_EQ(result, i::Smi::FromInt(result->value()));
diff --git a/src/version.cc b/src/version.cc
index 7b552eee..24e95847 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 2
#define MINOR_VERSION 5
#define BUILD_NUMBER 9
-#define PATCH_LEVEL 9
+#define PATCH_LEVEL 11
#define CANDIDATE_VERSION false
// Define SONAME to have the SCons build the put a specific SONAME into the
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index 8a6a6776..fae5d3b7 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -874,6 +874,10 @@ THREADED_TEST(ExternalWrap) {
TestExternalPointerWrapping();
#if defined(V8_HOST_ARCH_X64)
+ // Check a value with a leading 1 bit in x64 Smi encoding.
+ expected_ptr = reinterpret_cast<void*>(0x400000000);
+ TestExternalPointerWrapping();
+
expected_ptr = reinterpret_cast<void*>(0xdeadbeefdeadbeef);
TestExternalPointerWrapping();