X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/ba379fdc102753d6be2c4d937058fe40257329fe..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/runtime/PropertySlot.cpp?ds=sidebyside diff --git a/runtime/PropertySlot.cpp b/runtime/PropertySlot.cpp index 36fa5d8..c949f4b 100644 --- a/runtime/PropertySlot.cpp +++ b/runtime/PropertySlot.cpp @@ -21,25 +21,15 @@ #include "config.h" #include "PropertySlot.h" -#include "JSFunction.h" -#include "JSGlobalObject.h" -#include "JSObject.h" +#include "GetterSetter.h" +#include "JSCJSValueInlines.h" namespace JSC { -JSValue PropertySlot::functionGetter(ExecState* exec, const Identifier&, const PropertySlot& slot) +JSValue PropertySlot::functionGetter(ExecState* exec) const { - // Prevent getter functions from observing execution if an exception is pending. - if (exec->hadException()) - return exec->exception(); - - CallData callData; - CallType callType = slot.m_data.getterFunc->getCallData(callData); - if (callType == CallTypeHost) - return callData.native.function(exec, slot.m_data.getterFunc, slot.slotBase(), exec->emptyList()); - ASSERT(callType == CallTypeJS); - // FIXME: Can this be done more efficiently using the callData? - return static_cast(slot.m_data.getterFunc)->call(exec, slot.slotBase(), exec->emptyList()); + ASSERT(m_thisValue); + return callGetter(exec, m_thisValue, m_data.getter.getterSetter); } } // namespace JSC