| Index: Source/bindings/v8/V8BindingMacros.h
 | 
| diff --git a/Source/bindings/v8/V8BindingMacros.h b/Source/bindings/v8/V8BindingMacros.h
 | 
| index 1dc394acfe3ba66c63af186c05df988d07bff798..1abb3233b80b58d42a3e03bee83d8533635d9449 100644
 | 
| --- a/Source/bindings/v8/V8BindingMacros.h
 | 
| +++ b/Source/bindings/v8/V8BindingMacros.h
 | 
| @@ -71,28 +71,26 @@ namespace WebCore {
 | 
|      }
 | 
|  
 | 
|  #define TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(var, value, exceptionState) \
 | 
| -    var = (value);                                                       \
 | 
| -    if (UNLIKELY(block.HasCaught()))                                     \
 | 
| -        exceptionState.rethrowV8Exception(block.Exception());            \
 | 
| -    if (UNLIKELY(exceptionState.throwIfNeeded()))                        \
 | 
| -        return;
 | 
| +    var = (value);                                                        \
 | 
| +    if (UNLIKELY(block.HasCaught() || exceptionState.throwIfNeeded()))    \
 | 
| +        return;                                                           \
 | 
|  
 | 
| -#define TONATIVE_VOID_EXCEPTIONSTATE(type, var, value, exceptionState)    \
 | 
| -    type var;                                                             \
 | 
| -    {                                                                     \
 | 
| -        v8::TryCatch block;                                               \
 | 
| +#define TONATIVE_VOID_EXCEPTIONSTATE(type, var, value, exceptionState)     \
 | 
| +    type var;                                                              \
 | 
| +    {                                                                      \
 | 
| +        v8::TryCatch block;                                                \
 | 
| +        V8RethrowTryCatchScope rethrow(block);                             \
 | 
|          TONATIVE_VOID_EXCEPTIONSTATE_INTERNAL(var, value, exceptionState); \
 | 
|      }
 | 
|  
 | 
|  #define TONATIVE_DEFAULT_EXCEPTIONSTATE(type, var, value, exceptionState, retVal) \
 | 
| -    type var;                                                                 \
 | 
| -    {                                                                         \
 | 
| -        v8::TryCatch block;                                                   \
 | 
| -        var = (value);                                                        \
 | 
| -        if (UNLIKELY(block.HasCaught()))                                      \
 | 
| -            exceptionState.rethrowV8Exception(block.Exception());             \
 | 
| -        if (UNLIKELY(exceptionState.throwIfNeeded()))                         \
 | 
| -            return retVal;                                                    \
 | 
| +    type var;                                                                     \
 | 
| +    {                                                                             \
 | 
| +        v8::TryCatch block;                                                       \
 | 
| +        V8RethrowTryCatchScope rethrow(block);                                    \
 | 
| +        var = (value);                                                            \
 | 
| +        if (UNLIKELY(block.HasCaught() || exceptionState.throwIfNeeded()))        \
 | 
| +            return retVal;                                                        \
 | 
|      }
 | 
|  
 | 
|  // type is an instance of class template V8StringResource<>,
 | 
| 
 |