Changeset 204358 in webkit
- Timestamp:
- Aug 10, 2016 3:32:48 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 18 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r204321 r204358 1 2016-08-09 Skachkov Oleksandr <gskachkov@gmail.com> 2 3 [ES2016] Implement Object.values 4 https://bugs.webkit.org/show_bug.cgi?id=160410 5 6 Reviewed by Saam Barati, Yusuke Suzuki. 7 8 * stress/object-values.js: Added. 9 (compare): 10 (string_appeared_here.forEach): 11 (const.getInvokedFunctions.): 12 (const.getInvokedFunctions): 13 (Array.prototype.push): 14 1 15 2016-08-09 Saam Barati <sbarati@apple.com> 2 16 -
trunk/LayoutTests/ChangeLog
r204353 r204358 1 2016-08-09 Skachkov Oleksandr <gskachkov@gmail.com> 2 3 [ES2016] Implement Object.values 4 https://bugs.webkit.org/show_bug.cgi?id=160410 5 6 Reviewed by Saam Barati, Yusuke Suzuki. 7 8 * js/Object-getOwnPropertyNames-expected.txt: 9 * js/script-tests/Object-getOwnPropertyNames.js: 10 1 11 2016-08-10 Saam Barati <sbarati@apple.com> 2 12 -
trunk/LayoutTests/js/Object-getOwnPropertyNames-expected.txt
r202125 r204358 42 42 PASS getSortedOwnPropertyNames(encodeURI) is ['length', 'name'] 43 43 PASS getSortedOwnPropertyNames(encodeURIComponent) is ['length', 'name'] 44 PASS getSortedOwnPropertyNames(Object) is ['assign', 'create', 'defineProperties', 'defineProperty', 'freeze', 'getOwnPropertyDescriptor', 'getOwnPropertyDescriptors', 'getOwnPropertyNames', 'getOwnPropertySymbols', 'getPrototypeOf', 'is', 'isExtensible', 'isFrozen', 'isSealed', 'keys', 'length', 'name', 'preventExtensions', 'prototype', 'seal', 'setPrototypeOf' ]44 PASS getSortedOwnPropertyNames(Object) is ['assign', 'create', 'defineProperties', 'defineProperty', 'freeze', 'getOwnPropertyDescriptor', 'getOwnPropertyDescriptors', 'getOwnPropertyNames', 'getOwnPropertySymbols', 'getPrototypeOf', 'is', 'isExtensible', 'isFrozen', 'isSealed', 'keys', 'length', 'name', 'preventExtensions', 'prototype', 'seal', 'setPrototypeOf', 'values'] 45 45 PASS getSortedOwnPropertyNames(Object.prototype) is ['__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', '__proto__', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'] 46 46 PASS getSortedOwnPropertyNames(Function) is ['length', 'name', 'prototype'] -
trunk/LayoutTests/js/script-tests/Object-getOwnPropertyNames.js
r202125 r204358 51 51 "encodeURIComponent": "['length', 'name']", 52 52 // Built-in ECMA objects 53 "Object": "['assign', 'create', 'defineProperties', 'defineProperty', 'freeze', 'getOwnPropertyDescriptor', 'getOwnPropertyDescriptors', 'getOwnPropertyNames', 'getOwnPropertySymbols', 'getPrototypeOf', 'is', 'isExtensible', 'isFrozen', 'isSealed', 'keys', 'length', 'name', 'preventExtensions', 'prototype', 'seal', 'setPrototypeOf' ]",53 "Object": "['assign', 'create', 'defineProperties', 'defineProperty', 'freeze', 'getOwnPropertyDescriptor', 'getOwnPropertyDescriptors', 'getOwnPropertyNames', 'getOwnPropertySymbols', 'getPrototypeOf', 'is', 'isExtensible', 'isFrozen', 'isSealed', 'keys', 'length', 'name', 'preventExtensions', 'prototype', 'seal', 'setPrototypeOf', 'values']", 54 54 "Object.prototype": "['__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', '__proto__', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf']", 55 55 "Function": "['length', 'name', 'prototype']", -
trunk/Source/JavaScriptCore/ChangeLog
r204355 r204358 1 2016-08-09 Skachkov Oleksandr <gskachkov@gmail.com> 2 3 [ES2016] Implement Object.values 4 https://bugs.webkit.org/show_bug.cgi?id=160410 5 6 Reviewed by Saam Barati, Yusuke Suzuki. 7 8 This patch adds values function to Object that return list of 9 own values of the object. Patch did according to the point of 10 spec http://tc39.github.io/ecma262/#sec-object.values 11 12 Also patch adds generic builtin intrinsic constants: 13 @IterationKindKey/@IterationKindValue/@IterationKindKeyValue 14 that is used in EnumerableOwnProperties to set Kind of operation 15 and replace own IterationKind enums in following iterators: 16 ArrayIterator, MapIterator, and SetIterator 17 18 * JavaScriptCore.xcodeproj/project.pbxproj: 19 * builtins/ObjectConstructor.js: 20 (globalPrivate.enumerableOwnProperties): 21 (values): 22 * bytecode/BytecodeIntrinsicRegistry.cpp: 23 (JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry): 24 * bytecode/BytecodeIntrinsicRegistry.h: 25 * inspector/JSInjectedScriptHost.cpp: 26 (Inspector::JSInjectedScriptHost::getInternalProperties): 27 * runtime/ArrayIteratorPrototype.h: 28 * runtime/IterationKind.h: Copied from Source/JavaScriptCore/builtins/ObjectConstructor.js. 29 * runtime/JSMapIterator.h: 30 (JSC::JSMapIterator::create): 31 (JSC::JSMapIterator::next): 32 (JSC::JSMapIterator::kind): 33 (JSC::JSMapIterator::JSMapIterator): 34 * runtime/JSSetIterator.h: 35 (JSC::JSSetIterator::create): 36 (JSC::JSSetIterator::next): 37 (JSC::JSSetIterator::kind): 38 (JSC::JSSetIterator::JSSetIterator): 39 * runtime/MapPrototype.cpp: 40 (JSC::mapProtoFuncValues): 41 (JSC::mapProtoFuncEntries): 42 (JSC::mapProtoFuncKeys): 43 (JSC::privateFuncMapIterator): 44 * runtime/ObjectConstructor.cpp: 45 * runtime/SetPrototype.cpp: 46 (JSC::setProtoFuncValues): 47 (JSC::setProtoFuncEntries): 48 (JSC::privateFuncSetIterator): 49 1 50 2016-08-10 Benjamin Poulain <bpoulain@apple.com> 2 51 -
trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r204330 r204358 1412 1412 86FA9E91142BBB2E001773B7 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; }; 1413 1413 86FA9E92142BBB2E001773B7 /* JSBoundFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 86FA9E90142BBB2E001773B7 /* JSBoundFunction.h */; }; 1414 8B9F6D561D5912FA001C739F /* IterationKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B9F6D551D5912FA001C739F /* IterationKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1414 1415 90213E3D123A40C200D422F3 /* MemoryStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */; }; 1415 1416 90213E3E123A40C200D422F3 /* MemoryStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = 90213E3C123A40C200D422F3 /* MemoryStatistics.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 3647 3648 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBoundFunction.cpp; sourceTree = "<group>"; }; 3648 3649 86FA9E90142BBB2E001773B7 /* JSBoundFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBoundFunction.h; sourceTree = "<group>"; }; 3650 8B9F6D551D5912FA001C739F /* IterationKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IterationKind.h; sourceTree = "<group>"; }; 3649 3651 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatistics.cpp; sourceTree = "<group>"; }; 3650 3652 90213E3C123A40C200D422F3 /* MemoryStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryStatistics.h; sourceTree = "<group>"; }; … … 5767 5769 708EBE231CE8F35000453146 /* IntlObjectInlines.h */, 5768 5770 86BF642A148DB2B5004DE36A /* Intrinsic.h */, 5771 8B9F6D551D5912FA001C739F /* IterationKind.h */, 5769 5772 FE4D55B71AE716CA0052E459 /* IterationStatus.h */, 5770 5773 70113D491A8DB093003848C4 /* IteratorOperations.cpp */, … … 7346 7349 0F2FC77316E12F740038D976 /* DFGDCEPhase.h in Headers */, 7347 7350 0F8F2B9A172F0501007DBDA5 /* DFGDesiredIdentifiers.h in Headers */, 7351 8B9F6D561D5912FA001C739F /* IterationKind.h in Headers */, 7348 7352 0FFC92141B94E83E0071DD66 /* DFGDesiredInferredType.h in Headers */, 7349 7353 C2C0F7CE17BBFC5B00464FE4 /* DFGDesiredTransitions.h in Headers */, -
trunk/Source/JavaScriptCore/builtins/ObjectConstructor.js
r198192 r204358 1 1 /* 2 * Copyright (C) 2016 Oleksandr Skachkov <gskachkov@gmail.com>. 2 3 * Copyright (C) 2015 Jordan Harband. All rights reserved. 3 4 * … … 24 25 */ 25 26 27 @globalPrivate 28 function enumerableOwnProperties(object, kind) 29 { 30 "use strict"; 31 32 const obj = @Object(object); 33 const ownKeys = @Reflect.@ownKeys(obj); 34 const properties = []; 35 for (let i = 0, keysLength = ownKeys.length; i < keysLength; ++i) { 36 let nextKey = ownKeys[i]; 37 if (typeof nextKey === 'string') { 38 let descriptor = @Reflect.@getOwnPropertyDescriptor(obj, nextKey); 39 if (descriptor !== @undefined && descriptor.enumerable) { 40 if (kind === @iterationKindValue) 41 properties.@push(obj[nextKey]); 42 // FIXME: Implement 'key+value' and 'key' cases 43 } 44 } 45 } 46 47 return properties; 48 } 49 50 function values(object) 51 { 52 "use strict"; 53 54 if (object == null) 55 throw new @TypeError("Object.values requires that input parameter not be null or undefined"); 56 57 return @enumerableOwnProperties(object, @iterationKindValue); 58 } 59 26 60 function assign(target/*[*/, /*...*/sources/*] */) 27 61 { -
trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp
r204330 r204358 51 51 m_undefined.set(m_vm, jsUndefined()); 52 52 m_Infinity.set(m_vm, jsDoubleNumber(std::numeric_limits<double>::infinity())); 53 m_ arrayIterationKindKey.set(m_vm, jsNumber(ArrayIterateKey));54 m_ arrayIterationKindValue.set(m_vm, jsNumber(ArrayIterateValue));55 m_ arrayIterationKindKeyValue.set(m_vm, jsNumber(ArrayIterateKeyValue));53 m_iterationKindKey.set(m_vm, jsNumber(IterateKey)); 54 m_iterationKindValue.set(m_vm, jsNumber(IterateValue)); 55 m_iterationKindKeyValue.set(m_vm, jsNumber(IterateKeyValue)); 56 56 m_MAX_STRING_LENGTH.set(m_vm, jsNumber(JSString::MaxLength)); 57 57 m_MAX_SAFE_INTEGER.set(m_vm, jsDoubleNumber(maxSafeInteger())); -
trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h
r202680 r204358 54 54 macro(undefined) \ 55 55 macro(Infinity) \ 56 macro( arrayIterationKindKey) \57 macro( arrayIterationKindValue) \58 macro( arrayIterationKindKeyValue) \56 macro(iterationKindKey) \ 57 macro(iterationKindValue) \ 58 macro(iterationKindKeyValue) \ 59 59 macro(MAX_STRING_LENGTH) \ 60 60 macro(MAX_SAFE_INTEGER) \ -
trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp
r202890 r204358 321 321 String kind; 322 322 switch (mapIterator->kind()) { 323 case MapIterateKey:323 case IterateKey: 324 324 kind = ASCIILiteral("key"); 325 325 break; 326 case MapIterateValue:326 case IterateValue: 327 327 kind = ASCIILiteral("value"); 328 328 break; 329 case MapIterateKeyValue:329 case IterateKeyValue: 330 330 kind = ASCIILiteral("key+value"); 331 331 break; … … 343 343 String kind; 344 344 switch (setIterator->kind()) { 345 case SetIterateKey:345 case IterateKey: 346 346 kind = ASCIILiteral("key"); 347 347 break; 348 case SetIterateValue:348 case IterateValue: 349 349 kind = ASCIILiteral("value"); 350 350 break; 351 case SetIterateKeyValue:351 case IterateKeyValue: 352 352 kind = ASCIILiteral("key+value"); 353 353 break; -
trunk/Source/JavaScriptCore/runtime/ArrayIteratorPrototype.h
r202280 r204358 27 27 #define ArrayIteratorPrototype_h 28 28 29 #include "IterationKind.h" 29 30 #include "JSObject.h" 30 31 31 32 namespace JSC { 32 33 enum ArrayIterationKind : uint32_t {34 ArrayIterateKey,35 ArrayIterateValue,36 ArrayIterateKeyValue37 };38 33 39 34 class ArrayIteratorPrototype : public JSNonFinalObject { -
trunk/Source/JavaScriptCore/runtime/IterationKind.h
r204357 r204358 1 1 /* 2 * Copyright (C) 2015 Jordan Harband. All rights reserved.2 * Copyright (C) 2016 Oleksandr Skachkov (gskachkov@gmail.com) 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 function assign(target/*[*/, /*...*/sources/*] */) 27 { 28 "use strict"; 26 #pragma once 29 27 30 if (target == null) 31 throw new @TypeError("can't convert " + target + " to object"); 28 namespace JSC { 29 30 enum IterationKind : uint32_t { 31 IterateKey, 32 IterateValue, 33 IterateKeyValue, 34 }; 32 35 33 let objTarget = @Object(target); 34 for (let s = 1, argumentsLength = arguments.length; s < argumentsLength; ++s) { 35 let nextSource = arguments[s]; 36 if (nextSource != null) { 37 let from = @Object(nextSource); 38 let keys = @Reflect.@ownKeys(from); 39 for (let i = 0, keysLength = keys.length; i < keysLength; ++i) { 40 let nextKey = keys[i]; 41 let descriptor = @Reflect.@getOwnPropertyDescriptor(from, nextKey); 42 if (descriptor !== @undefined && descriptor.enumerable) 43 objTarget[nextKey] = from[nextKey]; 44 } 45 } 46 } 47 return objTarget; 48 } 36 37 } // namespace JSC -
trunk/Source/JavaScriptCore/runtime/JSMapIterator.h
r196108 r204358 27 27 #define JSMapIterator_h 28 28 29 #include "IterationKind.h" 29 30 #include "JSMap.h" 30 31 #include "JSObject.h" … … 32 33 33 34 namespace JSC { 34 enum MapIterationKind : uint32_t {35 MapIterateKey,36 MapIterateValue,37 MapIterateKeyValue,38 };39 35 40 36 class JSMapIterator : public JSNonFinalObject { … … 49 45 } 50 46 51 static JSMapIterator* create(VM& vm, Structure* structure, JSMap* iteratedObject, MapIterationKind kind)47 static JSMapIterator* create(VM& vm, Structure* structure, JSMap* iteratedObject, IterationKind kind) 52 48 { 53 49 JSMapIterator* instance = new (NotNull, allocateCell<JSMapIterator>(vm.heap)) JSMapIterator(vm, structure, iteratedObject, kind); … … 62 58 return false; 63 59 64 if (m_kind == MapIterateValue)60 if (m_kind == IterateValue) 65 61 value = pair.value; 66 else if (m_kind == MapIterateKey)62 else if (m_kind == IterateKey) 67 63 value = pair.key; 68 64 else … … 87 83 } 88 84 89 MapIterationKind kind() const { return m_kind; }85 IterationKind kind() const { return m_kind; } 90 86 JSValue iteratedValue() const { return m_map.get(); } 91 87 JSMapIterator* clone(ExecState*); … … 97 93 98 94 private: 99 JSMapIterator(VM& vm, Structure* structure, JSMap* iteratedObject, MapIterationKind kind)95 JSMapIterator(VM& vm, Structure* structure, JSMap* iteratedObject, IterationKind kind) 100 96 : Base(vm, structure) 101 97 , m_iterator(iteratedObject->m_mapData.createIteratorData(this)) … … 110 106 WriteBarrier<JSMap> m_map; 111 107 JSMap::MapData::IteratorData m_iterator; 112 MapIterationKind m_kind;108 IterationKind m_kind; 113 109 }; 114 110 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSMapIterator); -
trunk/Source/JavaScriptCore/runtime/JSSetIterator.h
r196108 r204358 27 27 #define JSSetIterator_h 28 28 29 #include "IterationKind.h" 29 30 #include "JSObject.h" 30 31 #include "JSSet.h" … … 33 34 34 35 namespace JSC { 35 enum SetIterationKind : uint32_t {36 SetIterateKey,37 SetIterateValue,38 SetIterateKeyValue,39 };40 36 41 37 class JSSetIterator : public JSNonFinalObject { … … 50 46 } 51 47 52 static JSSetIterator* create(VM& vm, Structure* structure, JSSet* iteratedObject, SetIterationKind kind)48 static JSSetIterator* create(VM& vm, Structure* structure, JSSet* iteratedObject, IterationKind kind) 53 49 { 54 50 JSSetIterator* instance = new (NotNull, allocateCell<JSSetIterator>(vm.heap)) JSSetIterator(vm, structure, iteratedObject, kind); … … 62 58 if (!m_iterator.next(pair)) 63 59 return false; 64 if (m_kind == SetIterateValue || m_kind == SetIterateKey)60 if (m_kind == IterateValue || m_kind == IterateKey) 65 61 value = pair.key; 66 62 else … … 74 70 } 75 71 76 SetIterationKind kind() const { return m_kind; }72 IterationKind kind() const { return m_kind; } 77 73 JSValue iteratedValue() const { return m_set.get(); } 78 74 JSSetIterator* clone(ExecState*); … … 84 80 85 81 private: 86 JSSetIterator(VM& vm, Structure* structure, JSSet* iteratedObject, SetIterationKind kind)82 JSSetIterator(VM& vm, Structure* structure, JSSet* iteratedObject, IterationKind kind) 87 83 : Base(vm, structure) 88 84 , m_iterator(iteratedObject->m_setData.createIteratorData(this)) … … 97 93 WriteBarrier<JSSet> m_set; 98 94 JSSet::SetData::IteratorData m_iterator; 99 SetIterationKind m_kind;95 IterationKind m_kind; 100 96 }; 101 97 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSSetIterator); -
trunk/Source/JavaScriptCore/runtime/MapPrototype.cpp
r202844 r204358 159 159 if (!thisObj) 160 160 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Map value iterator for a non-Map object."))); 161 return JSValue::encode(JSMapIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->mapIteratorStructure(), thisObj, MapIterateValue));161 return JSValue::encode(JSMapIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->mapIteratorStructure(), thisObj, IterateValue)); 162 162 } 163 163 … … 167 167 if (!thisObj) 168 168 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Map entry iterator for a non-Map object."))); 169 return JSValue::encode(JSMapIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->mapIteratorStructure(), thisObj, MapIterateKeyValue));169 return JSValue::encode(JSMapIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->mapIteratorStructure(), thisObj, IterateKeyValue)); 170 170 } 171 171 … … 175 175 if (!thisObj) 176 176 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Map key iterator for a non-Map object."))); 177 return JSValue::encode(JSMapIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->mapIteratorStructure(), thisObj, MapIterateKey));177 return JSValue::encode(JSMapIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->mapIteratorStructure(), thisObj, IterateKey)); 178 178 } 179 179 … … 187 187 ASSERT(jsDynamicCast<JSMap*>(exec->uncheckedArgument(0))); 188 188 JSMap* map = jsCast<JSMap*>(exec->uncheckedArgument(0)); 189 return JSValue::encode(JSMapIterator::create(exec->vm(), exec->callee()->globalObject()->mapIteratorStructure(), map, MapIterateKeyValue));189 return JSValue::encode(JSMapIterator::create(exec->vm(), exec->callee()->globalObject()->mapIteratorStructure(), map, IterateKeyValue)); 190 190 } 191 191 -
trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
r203747 r204358 85 85 is objectConstructorIs DontEnum|Function 2 86 86 assign JSBuiltin DontEnum|Function 2 87 values JSBuiltin DontEnum|Function 1 87 88 @end 88 89 */ -
trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp
r202844 r204358 145 145 if (!thisObj) 146 146 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Set value iterator for a non-Set object."))); 147 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, SetIterateValue));147 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, IterateValue)); 148 148 } 149 149 … … 153 153 if (!thisObj) 154 154 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Set entry iterator for a non-Set object."))); 155 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, SetIterateKeyValue));155 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, IterateKeyValue)); 156 156 } 157 157 … … 165 165 ASSERT(jsDynamicCast<JSSet*>(exec->uncheckedArgument(0))); 166 166 JSSet* set = jsCast<JSSet*>(exec->uncheckedArgument(0)); 167 return JSValue::encode(JSSetIterator::create(exec->vm(), exec->callee()->globalObject()->setIteratorStructure(), set, SetIterateKey));167 return JSValue::encode(JSSetIterator::create(exec->vm(), exec->callee()->globalObject()->setIteratorStructure(), set, IterateKey)); 168 168 } 169 169 -
trunk/Source/WebCore/ChangeLog
r204357 r204358 1 2016-08-09 Skachkov Oleksandr <gskachkov@gmail.com> 2 3 [ES2016] Implement Object.values 4 https://bugs.webkit.org/show_bug.cgi?id=160410 5 6 Reviewed by Saam Barati, Yusuke Suzuki. 7 8 No new tests because all tests are implemented in JavaScriptCore 9 and there is no behavior change. 10 11 * ForwardingHeaders/runtime/IterationKind.h: Added. 12 * bindings/js/SerializedScriptValue.cpp: 13 (WebCore::CloneSerializer::serialize): 14 1 15 2016-08-10 Anders Carlsson <andersca@apple.com> 2 16 -
trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp
r202890 r204358 61 61 #include <runtime/Exception.h> 62 62 #include <runtime/ExceptionHelpers.h> 63 #include <runtime/IterationKind.h> 63 64 #include <runtime/JSArrayBuffer.h> 64 65 #include <runtime/JSArrayBufferView.h> … … 1355 1356 if (!startMap(inMap)) 1356 1357 break; 1357 JSMapIterator* iterator = JSMapIterator::create(m_exec->vm(), m_exec->lexicalGlobalObject()->mapIteratorStructure(), inMap, MapIterateKeyValue);1358 JSMapIterator* iterator = JSMapIterator::create(m_exec->vm(), m_exec->lexicalGlobalObject()->mapIteratorStructure(), inMap, IterateKeyValue); 1358 1359 m_gcBuffer.append(inMap); 1359 1360 m_gcBuffer.append(iterator); … … 1399 1400 if (!startSet(inSet)) 1400 1401 break; 1401 JSSetIterator* iterator = JSSetIterator::create(m_exec->vm(), m_exec->lexicalGlobalObject()->setIteratorStructure(), inSet, SetIterateKey);1402 JSSetIterator* iterator = JSSetIterator::create(m_exec->vm(), m_exec->lexicalGlobalObject()->setIteratorStructure(), inSet, IterateKey); 1402 1403 m_gcBuffer.append(inSet); 1403 1404 m_gcBuffer.append(iterator);
Note: See TracChangeset
for help on using the changeset viewer.