diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS
index bfe58a2c37..5c5ae4e1b8 100644
--- a/deps/v8/AUTHORS
+++ b/deps/v8/AUTHORS
@@ -17,3 +17,4 @@ Paolo Giarrusso
Rafal Krypa
Rene Rebe
Ryan Dahl
+Patrick Gansterer
diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog
index b07e7cc15e..a78755b63a 100644
--- a/deps/v8/ChangeLog
+++ b/deps/v8/ChangeLog
@@ -1,3 +1,15 @@
+2009-09-09: Version 1.3.10
+
+ Fixed profiler on Mac in 64-bit mode.
+
+ Optimized creation of objects from simple constructor functions on
+ ARM.
+
+ Fixed a number of debugger issues.
+
+ Reduced the amount of memory consumed by V8.
+
+
2009-09-02: Version 1.3.9
Optimized stack guard checks on ARM.
diff --git a/deps/v8/SConstruct b/deps/v8/SConstruct
index 71673c0f0a..ddd0190af7 100644
--- a/deps/v8/SConstruct
+++ b/deps/v8/SConstruct
@@ -258,6 +258,10 @@ V8_EXTRA_FLAGS = {
'all': {
'WARNINGFLAGS': ['/WX', '/wd4355', '/wd4800']
},
+ 'library:shared': {
+ 'CPPDEFINES': ['BUILDING_V8_SHARED'],
+ 'LIBS': ['winmm', 'ws2_32']
+ },
'arch:ia32': {
'WARNINGFLAGS': ['/W3']
},
diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h
index 346050d5d3..2789bad216 100644
--- a/deps/v8/include/v8.h
+++ b/deps/v8/include/v8.h
@@ -979,8 +979,9 @@ class V8EXPORT String : public Primitive {
public:
explicit Utf8Value(Handle obj);
~Utf8Value();
- char* operator*() const { return str_; }
- int length() { return length_; }
+ char* operator*() { return str_; }
+ const char* operator*() const { return str_; }
+ int length() const { return length_; }
private:
char* str_;
int length_;
@@ -1001,8 +1002,9 @@ class V8EXPORT String : public Primitive {
public:
explicit AsciiValue(Handle obj);
~AsciiValue();
- char* operator*() const { return str_; }
- int length() { return length_; }
+ char* operator*() { return str_; }
+ const char* operator*() const { return str_; }
+ int length() const { return length_; }
private:
char* str_;
int length_;
@@ -1022,8 +1024,9 @@ class V8EXPORT String : public Primitive {
public:
explicit Value(Handle obj);
~Value();
- uint16_t* operator*() const { return str_; }
- int length() { return length_; }
+ uint16_t* operator*() { return str_; }
+ const uint16_t* operator*() const { return str_; }
+ int length() const { return length_; }
private:
uint16_t* str_;
int length_;
diff --git a/deps/v8/src/SConscript b/deps/v8/src/SConscript
index fee3fab431..a1cbf1ba29 100755
--- a/deps/v8/src/SConscript
+++ b/deps/v8/src/SConscript
@@ -56,9 +56,9 @@ SOURCES = {
],
'arch:arm': [
'arm/assembler-arm.cc', 'arm/builtins-arm.cc', 'arm/cfg-arm.cc',
- 'arm/codegen-arm.cc', 'arm/cpu-arm.cc', 'arm/disasm-arm.cc',
- 'arm/debug-arm.cc', 'arm/frames-arm.cc', 'arm/ic-arm.cc',
- 'arm/jump-target-arm.cc', 'arm/macro-assembler-arm.cc',
+ 'arm/codegen-arm.cc', 'arm/constants-arm.cc', 'arm/cpu-arm.cc',
+ 'arm/disasm-arm.cc', 'arm/debug-arm.cc', 'arm/frames-arm.cc',
+ 'arm/ic-arm.cc', 'arm/jump-target-arm.cc', 'arm/macro-assembler-arm.cc',
'arm/regexp-macro-assembler-arm.cc',
'arm/register-allocator-arm.cc', 'arm/stub-cache-arm.cc',
'arm/virtual-frame-arm.cc'
diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc
index 679e038d3a..1128d3e022 100644
--- a/deps/v8/src/api.cc
+++ b/deps/v8/src/api.cc
@@ -427,7 +427,7 @@ void Context::Enter() {
i::Handle env = Utils::OpenHandle(this);
thread_local.EnterContext(env);
- thread_local.SaveContext(i::GlobalHandles::Create(i::Top::context()));
+ thread_local.SaveContext(i::Top::context());
i::Top::set_context(*env);
}
@@ -441,9 +441,8 @@ void Context::Exit() {
}
// Content of 'last_context' could be NULL.
- i::Handle last_context = thread_local.RestoreContext();
- i::Top::set_context(static_cast(*last_context));
- i::GlobalHandles::Destroy(last_context.location());
+ i::Context* last_context = thread_local.RestoreContext();
+ i::Top::set_context(last_context);
}
@@ -3700,19 +3699,21 @@ char* HandleScopeImplementer::RestoreThreadHelper(char* storage) {
}
-void HandleScopeImplementer::Iterate(
- ObjectVisitor* v,
- List* blocks,
- v8::ImplementationUtilities::HandleScopeData* handle_data) {
+void HandleScopeImplementer::IterateThis(ObjectVisitor* v) {
// Iterate over all handles in the blocks except for the last.
- for (int i = blocks->length() - 2; i >= 0; --i) {
- Object** block = blocks->at(i);
+ for (int i = Blocks()->length() - 2; i >= 0; --i) {
+ Object** block = Blocks()->at(i);
v->VisitPointers(block, &block[kHandleBlockSize]);
}
// Iterate over live handles in the last block (if any).
- if (!blocks->is_empty()) {
- v->VisitPointers(blocks->last(), handle_data->next);
+ if (!Blocks()->is_empty()) {
+ v->VisitPointers(Blocks()->last(), handle_scope_data_.next);
+ }
+
+ if (!saved_contexts_.is_empty()) {
+ Object** start = reinterpret_cast