Changeset 51760 in webkit
- Timestamp:
- Dec 7, 2009 5:50:57 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r51739 r51760 1 2009-12-07 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Object.create fails if properties on the descriptor are getters 6 https://bugs.webkit.org/show_bug.cgi?id=32219 7 8 Correctly initialise the PropertySlots with the descriptor object. 9 10 * runtime/ObjectConstructor.cpp: 11 (JSC::toPropertyDescriptor): 12 1 13 2009-12-06 Maciej Stachowiak <mjs@apple.com> 2 14 -
trunk/JavaScriptCore/runtime/ObjectConstructor.cpp
r49734 r51760 149 149 JSObject* description = asObject(in); 150 150 151 PropertySlot enumerableSlot ;151 PropertySlot enumerableSlot(description); 152 152 if (description->getPropertySlot(exec, exec->propertyNames().enumerable, enumerableSlot)) { 153 153 desc.setEnumerable(enumerableSlot.getValue(exec, exec->propertyNames().enumerable).toBoolean(exec)); … … 156 156 } 157 157 158 PropertySlot configurableSlot ;158 PropertySlot configurableSlot(description); 159 159 if (description->getPropertySlot(exec, exec->propertyNames().configurable, configurableSlot)) { 160 160 desc.setConfigurable(configurableSlot.getValue(exec, exec->propertyNames().configurable).toBoolean(exec)); … … 164 164 165 165 JSValue value; 166 PropertySlot valueSlot ;166 PropertySlot valueSlot(description); 167 167 if (description->getPropertySlot(exec, exec->propertyNames().value, valueSlot)) { 168 168 desc.setValue(valueSlot.getValue(exec, exec->propertyNames().value)); … … 171 171 } 172 172 173 PropertySlot writableSlot ;173 PropertySlot writableSlot(description); 174 174 if (description->getPropertySlot(exec, exec->propertyNames().writable, writableSlot)) { 175 175 desc.setWritable(writableSlot.getValue(exec, exec->propertyNames().writable).toBoolean(exec)); … … 178 178 } 179 179 180 PropertySlot getSlot ;180 PropertySlot getSlot(description); 181 181 if (description->getPropertySlot(exec, exec->propertyNames().get, getSlot)) { 182 182 JSValue get = getSlot.getValue(exec, exec->propertyNames().get); … … 194 194 } 195 195 196 PropertySlot setSlot ;196 PropertySlot setSlot(description); 197 197 if (description->getPropertySlot(exec, exec->propertyNames().set, setSlot)) { 198 198 JSValue set = setSlot.getValue(exec, exec->propertyNames().set); -
trunk/LayoutTests/ChangeLog
r51757 r51760 1 2009-12-07 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Object.create fails if properties on the descriptor are getters 6 https://bugs.webkit.org/show_bug.cgi?id=32219 7 8 Add tests for descriptors using getters instead of raw values 9 10 * fast/js/Object-create-expected.txt: 11 * fast/js/script-tests/Object-create.js: 12 (valueGet): 13 (get var): 14 (get var.DescriptorWithGetGetter.foo.Object.create.): 15 (get var.DescriptorWithSetGetter.foo.Object.create.): 16 1 17 2009-12-06 Oliver Hunt <oliver@apple.com> 2 18 -
trunk/LayoutTests/fast/js/Object-create-expected.txt
r48568 r51760 14 14 PASS Object.getPrototypeOf(Object.create(Array.prototype)) is Array.prototype 15 15 PASS Object.getPrototypeOf(Object.create(null)) is null 16 PASS Object.create(null, DescriptorWithValueGetter).foo is true 17 PASS Object.create(null, DescriptorWithEnumerableGetter).foo is true 18 PASS Object.create(null, DescriptorWithConfigurableGetter).foo is true 19 PASS Object.create(null, DescriptorWithWritableGetter).foo is true 20 PASS Object.create(null, DescriptorWithGetGetter).foo is true 21 PASS Object.create(null, DescriptorWithSetGetter).foo is true 16 22 PASS successfullyParsed is true 17 23 -
trunk/LayoutTests/fast/js/script-tests/Object-create.js
r48651 r51760 11 11 shouldBe("Object.getPrototypeOf(Object.create(Array.prototype))", "Array.prototype"); 12 12 shouldBe("Object.getPrototypeOf(Object.create(null))", "null"); 13 function valueGet() { return true; } 14 var DescriptorWithValueGetter = { foo: Object.create(null, { value: { get: valueGet }})}; 15 var DescriptorWithEnumerableGetter = { foo: Object.create(null, { value: {value: true}, enumerable: { get: valueGet }})}; 16 var DescriptorWithConfigurableGetter = { foo: Object.create(null, { value: {value: true}, configurable: { get: valueGet }})}; 17 var DescriptorWithWritableGetter = { foo: Object.create(null, { value: {value: true}, writable: { get: valueGet }})}; 18 var DescriptorWithGetGetter = { foo: Object.create(null, { get: { get: function() { return valueGet } }})}; 19 var DescriptorWithSetGetter = { foo: Object.create(null, { get: { value: valueGet}, set: { get: function(){ return valueGet; } }})}; 20 shouldBeTrue("Object.create(null, DescriptorWithValueGetter).foo"); 21 shouldBeTrue("Object.create(null, DescriptorWithEnumerableGetter).foo"); 22 shouldBeTrue("Object.create(null, DescriptorWithConfigurableGetter).foo"); 23 shouldBeTrue("Object.create(null, DescriptorWithWritableGetter).foo"); 24 shouldBeTrue("Object.create(null, DescriptorWithGetGetter).foo"); 25 shouldBeTrue("Object.create(null, DescriptorWithSetGetter).foo"); 13 26 successfullyParsed = true;
Note: See TracChangeset
for help on using the changeset viewer.