+2014-02-28 Andreas Kling <akling@apple.com>
+
+ JSObject::findPropertyHashEntry() should take VM instead of ExecState.
+ <https://webkit.org/b/129529>
+
+ Callers already have VM in a local, and findPropertyHashEntry() only
+ uses the VM, no need to go all the way through ExecState.
+
+ Reviewed by Geoffrey Garen.
+
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::put):
+ (JSC::JSObject::deleteProperty):
+ (JSC::JSObject::findPropertyHashEntry):
+ * runtime/JSObject.h:
+
2014-02-28 Joseph Pecoraro <pecoraro@apple.com>
Deadlock remotely inspecting iOS Simulator
}
const ClassInfo* info = obj->classInfo();
if (info->hasStaticSetterOrReadonlyProperties(vm)) {
- if (const HashEntry* entry = obj->findPropertyHashEntry(exec, propertyName)) {
+ if (const HashEntry* entry = obj->findPropertyHashEntry(vm, propertyName)) {
putEntry(exec, entry, obj, propertyName, value, slot);
return;
}
}
// Look in the static hashtable of properties
- const HashEntry* entry = thisObject->findPropertyHashEntry(exec, propertyName);
+ const HashEntry* entry = thisObject->findPropertyHashEntry(vm, propertyName);
if (entry) {
if (entry->attributes() & DontDelete && !vm.isInDefineOwnProperty())
return false; // this builtin property can't be deleted
return exec->vm().throwException(exec, createTypeError(exec, ASCIILiteral("No default value")));
}
-const HashEntry* JSObject::findPropertyHashEntry(ExecState* exec, PropertyName propertyName) const
+const HashEntry* JSObject::findPropertyHashEntry(VM& vm, PropertyName propertyName) const
{
for (const ClassInfo* info = classInfo(); info; info = info->parentClass) {
- if (const HashTable* propHashTable = info->propHashTable(exec)) {
- if (const HashEntry* entry = propHashTable->entry(exec, propertyName))
+ if (const HashTable* propHashTable = info->propHashTable(vm)) {
+ if (const HashEntry* entry = propHashTable->entry(vm, propertyName))
return entry;
}
}
bool inlineGetOwnPropertySlot(ExecState*, PropertyName, PropertySlot&);
JS_EXPORT_PRIVATE void fillGetterPropertySlot(PropertySlot&, JSValue, unsigned, PropertyOffset);
- const HashEntry* findPropertyHashEntry(ExecState*, PropertyName) const;
+ const HashEntry* findPropertyHashEntry(VM&, PropertyName) const;
void putIndexedDescriptor(ExecState*, SparseArrayEntry*, const PropertyDescriptor&, PropertyDescriptor& old);