diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h index de15a7398d..406895a4e6 100644 --- a/deps/v8/src/objects.h +++ b/deps/v8/src/objects.h @@ -585,6 +585,7 @@ enum CompareResult { class StringStream; class ObjectVisitor; +class Failure; struct ValueInfo : public Malloced { ValueInfo() : type(FIRST_TYPE), ptr(NULL), str(NULL), number(0) { } @@ -611,6 +612,10 @@ class MaybeObject BASE_EMBEDDED { *obj = reinterpret_cast(this); return true; } + inline Failure* ToFailureUnchecked() { + ASSERT(IsFailure()); + return reinterpret_cast(this); + } inline Object* ToObjectUnchecked() { ASSERT(!IsFailure()); return reinterpret_cast(this); diff --git a/deps/v8/src/top.cc b/deps/v8/src/top.cc index 78db26a509..d6fcf1009b 100644 --- a/deps/v8/src/top.cc +++ b/deps/v8/src/top.cc @@ -1,4 +1,4 @@ -// Copyright 2006-2008 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -740,6 +740,7 @@ Failure* Top::ReThrow(MaybeObject* exception, MessageLocation* location) { // Set the exception being re-thrown. set_pending_exception(exception); + if (exception->IsFailure()) return exception->ToFailureUnchecked(); return Failure::Exception(); } diff --git a/deps/v8/src/version.cc b/deps/v8/src/version.cc index 0673517eb0..ccfbd18c5f 100644 --- a/deps/v8/src/version.cc +++ b/deps/v8/src/version.cc @@ -35,7 +35,7 @@ #define MAJOR_VERSION 3 #define MINOR_VERSION 1 #define BUILD_NUMBER 8 -#define PATCH_LEVEL 14 +#define PATCH_LEVEL 16 #define CANDIDATE_VERSION false // Define SONAME to have the SCons build the put a specific SONAME into the diff --git a/deps/v8/src/x64/assembler-x64.cc b/deps/v8/src/x64/assembler-x64.cc index 41111a7780..35c05b3ac3 100644 --- a/deps/v8/src/x64/assembler-x64.cc +++ b/deps/v8/src/x64/assembler-x64.cc @@ -1379,7 +1379,7 @@ void Assembler::jmp(NearLabel* L) { EnsureSpace ensure_space(this); last_pc_ = pc_; if (L->is_bound()) { - const int short_size = sizeof(int8_t); + const int short_size = 2; int offs = L->pos() - pc_offset(); ASSERT(offs <= 0); ASSERT(is_int8(offs - short_size));