| Index: Source/bindings/dart/DartHandleProxy.cpp
|
| diff --git a/Source/bindings/dart/DartHandleProxy.cpp b/Source/bindings/dart/DartHandleProxy.cpp
|
| index c255c5bac61e8b1d235e93774ab7185608346e55..7fc936408074d19d0e3968e97e52ca85bf619e23 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.
|
| + 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();
|
|
|
|
|