| Index: Source/bindings/scripts/unstable/v8_attributes.py
 | 
| diff --git a/Source/bindings/scripts/unstable/v8_attributes.py b/Source/bindings/scripts/unstable/v8_attributes.py
 | 
| index 56b14963983a8b4deef7524fcc81d2b27460dde3..9967cbd82fe6a730cc7770841299042ec5e4c66d 100644
 | 
| --- a/Source/bindings/scripts/unstable/v8_attributes.py
 | 
| +++ b/Source/bindings/scripts/unstable/v8_attributes.py
 | 
| @@ -140,22 +140,28 @@ def generate_getter(interface, attribute, contents):
 | 
|      cpp_value = getter_expression(interface, attribute, contents)
 | 
|      # Normally we can inline the function call into the return statement to
 | 
|      # avoid the overhead of using a Ref<> temporary, but for some cases
 | 
| -    # (nullable types, EventHandler, [CachedAttribute], or if there are
 | 
| -    # exceptions), we need to use a local variable.
 | 
| +    # (nullable types, [RaisesException], [CachedAttribute], and EventHandler)
 | 
| +    # we need to use a local variable.
 | 
|      # FIXME: check if compilers are smart enough to inline this, and if so,
 | 
|      # always use a local variable (for readability and CG simplicity).
 | 
| -    if (attribute.is_nullable or
 | 
| -        idl_type == 'EventHandler' or
 | 
| -        'CachedAttribute' in extended_attributes or
 | 
| -        contents['is_getter_raises_exception']):
 | 
| +    if idl_type == 'EventHandler':
 | 
| +        contents['cpp_value_original'] = cpp_value
 | 
| +        cpp_rvalue = cpp_value = 'jsValue'
 | 
| +    elif (attribute.is_nullable or
 | 
| +          contents['is_getter_raises_exception'] or
 | 
| +          'CachedAttribute' in extended_attributes):
 | 
|          contents['cpp_value_original'] = cpp_value
 | 
| -        cpp_value = 'jsValue'
 | 
| +        cpp_rvalue = cpp_value = 'jsValue'
 | 
| +        if v8_types.is_interface_type(idl_type):
 | 
| +            cpp_rvalue += '.release()'
 | 
| +    else:
 | 
| +        cpp_rvalue = cpp_value
 | 
|  
 | 
|      if contents['is_keep_alive_for_gc']:
 | 
|          v8_set_return_value_statement = 'v8SetReturnValue(info, wrapper)'
 | 
|          includes.add('bindings/v8/V8HiddenPropertyName.h')
 | 
|      else:
 | 
| -        v8_set_return_value_statement = v8_types.v8_set_return_value(idl_type, cpp_value, extended_attributes=extended_attributes, script_wrappable='imp')
 | 
| +        v8_set_return_value_statement = v8_types.v8_set_return_value(idl_type, cpp_rvalue, extended_attributes=extended_attributes, script_wrappable='imp')
 | 
|  
 | 
|      contents.update({
 | 
|          'cpp_value': cpp_value,
 | 
| 
 |