Chromium Code Reviews| Index: Source/bindings/dart/DartHandleProxy.cpp |
| diff --git a/Source/bindings/dart/DartHandleProxy.cpp b/Source/bindings/dart/DartHandleProxy.cpp |
| index 56046762306b87fe5d60b8375992fb68349d3b36..31e4e44be05097e10189cd502375674ba12465cc 100644 |
| --- a/Source/bindings/dart/DartHandleProxy.cpp |
| +++ b/Source/bindings/dart/DartHandleProxy.cpp |
| @@ -32,7 +32,6 @@ |
| #include "DartNode.h" |
| #include "bindings/dart/DartScriptValue.h" |
| -#include "bindings/dart/DartUtilities.h" |
| #include "bindings/dart/V8Converter.h" |
| #include "bindings/v8/PageScriptDebugServer.h" |
| #include "bindings/v8/ScriptController.h" |
| @@ -43,8 +42,6 @@ |
| #include "wtf/StdLibExtras.h" |
| -#include <dart_debugger_api.h> |
| - |
| namespace WebCore { |
| typedef HashMap<String, v8::Persistent<v8::FunctionTemplate>* > FunctionTemplateMap; |
| @@ -61,38 +58,24 @@ DartScriptValue* readPointerFromProxy(v8::Handle<v8::Value> proxy) |
| return static_cast<DartScriptValue*>(pointer); |
| } |
| -/** |
| - * Helper class to manage all scopes that must be entered to safely invoke Dart |
| - * code. |
| - */ |
| -class DartScopes { |
| -private: |
| - DartScriptValue* scriptValue; |
| - DartIsolateScope scope; |
| - DartApiScope apiScope; |
| - Dart_ExceptionPauseInfo previousPauseInfo; |
| - |
| -public: |
| - Dart_Handle handle; |
| - |
| - DartScopes(v8::Local<v8::Object> v8Handle) : |
| - scriptValue(readPointerFromProxy(v8Handle)), |
| - scope(scriptValue->isolate()) |
| - { |
| - ASSERT(scriptValue->isIsolateAlive()); |
| - handle = Dart_HandleFromPersistent(scriptValue->value()); |
| - previousPauseInfo = Dart_GetExceptionPauseInfo(); |
| - // FIXME: it is not clear this is the right long term solution but for |
| - // now we prevent pausing on exceptions when executing Dart code to |
| - // avoid crashing when handling an exception triggers an exception. |
| - Dart_SetExceptionPauseInfo(kNoPauseOnExceptions); |
| - } |
| +DartScopes::DartScopes(v8::Local<v8::Object> v8Handle) : |
| + scriptValue(readPointerFromProxy(v8Handle)), |
| + scope(scriptValue->isolate()) |
| +{ |
| + ASSERT(scriptValue->isIsolateAlive()); |
| + handle = Dart_HandleFromPersistent(scriptValue->value()); |
| + previousPauseInfo = Dart_GetExceptionPauseInfo(); |
| + // FIXME: it is not clear this is the right long term solution but for |
| + // now we prevent pausing on exceptions when executing Dart code to |
| + // avoid crashing when handling an exception triggers an exception. |
|
vsm
2013/09/12 00:17:23
Should there be a bug opened on this?
Jacob
2013/09/17 21:44:43
Yes but that code wasn't changed in this CL. I'll
|
| + Dart_SetExceptionPauseInfo(kNoPauseOnExceptions); |
| +} |
| + |
| +DartScopes::~DartScopes() |
| +{ |
| + Dart_SetExceptionPauseInfo(previousPauseInfo); |
| +} |
| - ~DartScopes() |
| - { |
| - Dart_SetExceptionPauseInfo(previousPauseInfo); |
| - } |
| -}; |
| static void weakCallback(v8::Isolate* isolate, v8::Persistent<v8::Object>* proxy, DartScriptValue* value) |
| { |
| @@ -100,7 +83,7 @@ static void weakCallback(v8::Isolate* isolate, v8::Persistent<v8::Object>* proxy |
| proxy->Dispose(isolate); |
| } |
| -static Dart_Handle unwrapValue(v8::Handle<v8::Value> value) |
| +Dart_Handle DartHandleProxy::unwrapValue(v8::Handle<v8::Value> value) |
| { |
| if (DartHandleProxy::isDartProxy(value)) |
| return Dart_HandleFromPersistent(readPointerFromProxy(value)->value()); |
| @@ -347,7 +330,7 @@ static void functionInvocationCallback(const v8::FunctionCallbackInfo<v8::Value> |
| Vector<Dart_Handle> dartFunctionArgs; |
| for (uint32_t i = 0; i < args.Length(); ++i) |
| - dartFunctionArgs.append(unwrapValue(args[i])); |
| + dartFunctionArgs.append(DartHandleProxy::unwrapValue(args[i])); |
| if (Dart_IsClosure(handle)) { |
| setReturnValue(args, Dart_InvokeClosure(handle, dartFunctionArgs.size(), dartFunctionArgs.data())); |
| @@ -392,7 +375,7 @@ static void typeProxyConstructorInvocationCallback(const v8::FunctionCallbackInf |
| Vector<Dart_Handle> dartFunctionArgs; |
| for (uint32_t i = 0; i < args.Length(); ++i) |
| - dartFunctionArgs.append(unwrapValue(args[i])); |
| + dartFunctionArgs.append(DartHandleProxy::unwrapValue(args[i])); |
| setReturnValue(args, Dart_New(handle, Dart_Null(), dartFunctionArgs.size(), dartFunctionArgs.data())); |
| } |
| @@ -514,7 +497,7 @@ static void libraryNamedPropertySetter(v8::Local<v8::String> property, v8::Local |
| Dart_Handle ret; |
| ASSERT(Dart_IsLibrary(handle)); |
| - Dart_Handle dartValue = unwrapValue(value); |
| + Dart_Handle dartValue = DartHandleProxy::unwrapValue(value); |
| setReturnValue(info, Dart_SetField(handle, V8Converter::stringToDart(property), dartValue)); |
| } |
| @@ -635,7 +618,7 @@ static void typeNamedPropertySetter(v8::Local<v8::String> property, v8::Local<v8 |
| Dart_Handle handle = scopes.handle; |
| ASSERT(Dart_IsType(handle)); |
| - Dart_Handle dartValue = unwrapValue(value); |
| + Dart_Handle dartValue = DartHandleProxy::unwrapValue(value); |
| setReturnValue(info, Dart_Invoke(handle, V8Converter::stringToDart(v8::String::Concat(v8::String::New("set:"), property)), 1, &dartValue)); |
| } |
| @@ -755,7 +738,7 @@ static void namedPropertySetter(v8::Local<v8::String> property, v8::Local<v8::Va |
| DartScopes scopes(info.Holder()); |
| Dart_Handle handle = scopes.handle; |
| - Dart_Handle dartValue = unwrapValue(value); |
| + Dart_Handle dartValue = DartHandleProxy::unwrapValue(value); |
| setReturnValue(info, Dart_Invoke(handle, V8Converter::stringToDart(v8::String::Concat(v8::String::New("set:"), property)), 1, &dartValue)); |
| } |
| @@ -851,7 +834,7 @@ static void indexedSetter(uint32_t index, v8::Local<v8::Value> value, const v8:: |
| Dart_Handle ret = 0; |
| if (Dart_IsList(handle)) |
| - ret = Dart_ListSetAt(handle, index, unwrapValue(value)); |
| + ret = Dart_ListSetAt(handle, index, DartHandleProxy::unwrapValue(value)); |
| else |
| ret = Dart_Null(); |