JavaScriptCore:
[WebKit-https.git] / JavaScriptCore / bindings / runtime_object.cpp
index 3e92e167bcd97a5ebaaa65a07ae20fe0c1b6ed71..c2cb3e86b8a06f5bf85575fe21cc73a9e8798d27 100644 (file)
@@ -57,7 +57,7 @@ void RuntimeObjectImp::invalidate()
 JSValue *RuntimeObjectImp::fallbackObjectGetter(ExecState* exec, JSObject*, const Identifier& propertyName, const PropertySlot& slot)
 {
     RuntimeObjectImp *thisObj = static_cast<RuntimeObjectImp *>(slot.slotBase());
-    Bindings::Instance *instance = thisObj->instance.get();
+    RefPtr<Bindings::Instance> instance = thisObj->instance;
 
     if (!instance)
         return throwInvalidAccessError(exec);
@@ -65,7 +65,7 @@ JSValue *RuntimeObjectImp::fallbackObjectGetter(ExecState* exec, JSObject*, cons
     instance->begin();
 
     Class *aClass = instance->getClass();
-    JSValue *result = aClass->fallbackObject(exec, instance, propertyName);
+    JSValue* result = aClass->fallbackObject(exec, instance.get(), propertyName);
 
     instance->end();
             
@@ -75,7 +75,7 @@ JSValue *RuntimeObjectImp::fallbackObjectGetter(ExecState* exec, JSObject*, cons
 JSValue *RuntimeObjectImp::fieldGetter(ExecState* exec, JSObject*, const Identifier& propertyName, const PropertySlot& slot)
 {    
     RuntimeObjectImp *thisObj = static_cast<RuntimeObjectImp *>(slot.slotBase());
-    Bindings::Instance *instance = thisObj->instance.get();
+    RefPtr<Bindings::Instance> instance = thisObj->instance;
 
     if (!instance)
         return throwInvalidAccessError(exec);
@@ -83,7 +83,7 @@ JSValue *RuntimeObjectImp::fieldGetter(ExecState* exec, JSObject*, const Identif
     instance->begin();
 
     Class *aClass = instance->getClass();
-    Field *aField = aClass->fieldNamed(propertyName, instance);
+    Field* aField = aClass->fieldNamed(propertyName, instance.get());
     JSValue *result = instance->getValueOfField(exec, aField); 
     
     instance->end();
@@ -94,7 +94,7 @@ JSValue *RuntimeObjectImp::fieldGetter(ExecState* exec, JSObject*, const Identif
 JSValue *RuntimeObjectImp::methodGetter(ExecState* exec, JSObject*, const Identifier& propertyName, const PropertySlot& slot)
 {
     RuntimeObjectImp *thisObj = static_cast<RuntimeObjectImp *>(slot.slotBase());
-    Bindings::Instance *instance = thisObj->instance.get();
+    RefPtr<Bindings::Instance> instance = thisObj->instance;
 
     if (!instance)
         return throwInvalidAccessError(exec);
@@ -102,7 +102,7 @@ JSValue *RuntimeObjectImp::methodGetter(ExecState* exec, JSObject*, const Identi
     instance->begin();
 
     Class *aClass = instance->getClass();
-    MethodList methodList = aClass->methodsNamed(propertyName, instance);
+    MethodList methodList = aClass->methodsNamed(propertyName, instance.get());
     JSValue *result = new RuntimeMethod(exec, propertyName, methodList);
 
     instance->end();
@@ -161,6 +161,7 @@ void RuntimeObjectImp::put(ExecState* exec, const Identifier& propertyName, JSVa
         return;
     }
     
+    RefPtr<Bindings::Instance> protector(instance);
     instance->begin();
 
     // Set the value of the property.
@@ -202,6 +203,7 @@ JSValue *RuntimeObjectImp::defaultValue(ExecState* exec, JSType hint) const
     
     JSValue *result;
     
+    RefPtr<Bindings::Instance> protector(instance);
     instance->begin();
 
     result = instance->defaultValue(hint);
@@ -224,6 +226,7 @@ JSValue *RuntimeObjectImp::callAsFunction(ExecState* exec, JSObject*, const List
     if (!instance)
         return throwInvalidAccessError(exec);
 
+    RefPtr<Bindings::Instance> protector(instance);
     instance->begin();
 
     JSValue *aValue = instance->invokeDefaultMethod(exec, args);