Changeset 197295 in webkit for trunk/Source/JavaScriptCore/runtime
- Timestamp:
- Feb 28, 2016, 10:40:35 AM (9 years ago)
- Location:
- trunk/Source/JavaScriptCore/runtime
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
r196722 r197295 233 233 234 234 JSObject* description = constructEmptyObject(exec); 235 if (exec->hadException()) 236 return jsUndefined(); 235 237 if (!descriptor.isAccessorDescriptor()) { 236 238 description->putDirect(exec->vm(), exec->propertyNames().value, descriptor.value() ? descriptor.value() : jsUndefined(), 0); -
trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp
r196001 r197295 73 73 } 74 74 75 GetterSetter* PropertyDescriptor::slowGetterSetter(ExecState* exec) 76 { 77 VM& vm = exec->vm(); 78 JSGlobalObject* globalObject = exec->lexicalGlobalObject(); 79 GetterSetter* getterSetter = GetterSetter::create(vm, globalObject); 80 if (exec->hadException()) 81 return nullptr; 82 if (m_getter && !m_getter.isUndefined()) 83 getterSetter->setGetter(vm, globalObject, jsCast<JSObject*>(m_getter)); 84 if (m_setter && !m_setter.isUndefined()) 85 getterSetter->setSetter(vm, globalObject, jsCast<JSObject*>(m_setter)); 86 87 return getterSetter; 88 } 89 75 90 JSValue PropertyDescriptor::getter() const 76 91 { -
trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.h
r185768 r197295 60 60 unsigned attributes() const { return m_attributes; } 61 61 JSValue value() const { return m_value; } 62 GetterSetter* slowGetterSetter(ExecState*); // Be aware that this will lazily allocate a GetterSetter object. It's much better to use getter() and setter() individually if possible. 62 63 JS_EXPORT_PRIVATE JSValue getter() const; 63 64 JS_EXPORT_PRIVATE JSValue setter() const; -
trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp
r197136 r197295 139 139 { 140 140 VM& vm = exec->vm(); 141 slot.setValue(this, None, jsUndefined()); // We do this to protect against any bad actors. Nobody should depend on this value.142 141 JSValue handlerValue = this->handler(); 143 142 if (handlerValue.isNull()) { … … 211 210 } 212 211 } 212 213 if (trapResultAsDescriptor.isAccessorDescriptor()) { 214 GetterSetter* getterSetter = trapResultAsDescriptor.slowGetterSetter(exec); 215 if (exec->hadException()) 216 return false; 217 slot.setGetterSlot(this, trapResultAsDescriptor.attributes(), getterSetter); 218 } else if (trapResultAsDescriptor.isDataDescriptor()) 219 slot.setValue(this, trapResultAsDescriptor.attributes(), trapResultAsDescriptor.value()); 220 else 221 slot.setValue(this, trapResultAsDescriptor.attributes(), jsUndefined()); // We use undefined because it's the default value in object properties. 213 222 214 223 return true;
Note:
See TracChangeset
for help on using the changeset viewer.