| Index: src/api.cc
 | 
| diff --git a/src/api.cc b/src/api.cc
 | 
| index 9b1d01cd8f4ead1bab6e46f03c3ed362157f8c13..579af7aebd442e4c346d1bc65dcc56d75b1b8073 100644
 | 
| --- a/src/api.cc
 | 
| +++ b/src/api.cc
 | 
| @@ -961,6 +961,22 @@ void FunctionTemplate::Inherit(v8::Handle<FunctionTemplate> value) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +// TODO(dcarney): Remove this abstraction when old callbacks are removed.
 | 
| +class CallHandlerHelper {
 | 
| + public:
 | 
| +  static inline void Set(Local<FunctionTemplate> function_template,
 | 
| +                         InvocationCallback callback,
 | 
| +                         v8::Handle<Value> data) {
 | 
| +    function_template->SetCallHandlerInternal(callback, data);
 | 
| +  }
 | 
| +  static inline void Set(Local<FunctionTemplate> function_template,
 | 
| +                         FunctionCallback callback,
 | 
| +                         v8::Handle<Value> data) {
 | 
| +    function_template->SetCallHandler(callback, data);
 | 
| +  }
 | 
| +};
 | 
| +
 | 
| +
 | 
|  template<typename Callback>
 | 
|  static Local<FunctionTemplate> FunctionTemplateNew(
 | 
|      Callback callback,
 | 
| @@ -981,7 +997,7 @@ static Local<FunctionTemplate> FunctionTemplateNew(
 | 
|    obj->set_serial_number(i::Smi::FromInt(next_serial_number));
 | 
|    if (callback != 0) {
 | 
|      if (data.IsEmpty()) data = v8::Undefined();
 | 
| -    Utils::ToLocal(obj)->SetCallHandler(callback, data);
 | 
| +    CallHandlerHelper::Set(Utils::ToLocal(obj), callback, data);
 | 
|    }
 | 
|    obj->set_length(length);
 | 
|    obj->set_undetectable(false);
 | 
| @@ -1225,6 +1241,11 @@ void FunctionTemplate::SetCallHandler(InvocationCallback callback,
 | 
|    FunctionTemplateSetCallHandler(this, callback, data);
 | 
|  }
 | 
|  
 | 
| +void FunctionTemplate::SetCallHandlerInternal(InvocationCallback callback,
 | 
| +                                              v8::Handle<Value> data) {
 | 
| +  FunctionTemplateSetCallHandler(this, callback, data);
 | 
| +}
 | 
| +
 | 
|  void FunctionTemplate::SetCallHandler(FunctionCallback callback,
 | 
|                                        v8::Handle<Value> data) {
 | 
|    FunctionTemplateSetCallHandler(this, callback, data);
 | 
| 
 |