Changeset 159031 in webkit
- Timestamp:
- Nov 10, 2013 2:28:10 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 11 edited
- 3 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r159030 r159031 1 2013-11-10 Oliver Hunt <oliver@apple.com> 2 3 Implement Set iterators 4 https://bugs.webkit.org/show_bug.cgi?id=124129 5 6 Reviewed by Antti Koivisto. 7 8 Move Set tests to more sensible location and add iterator tests 9 10 * js/basic-set-expected.txt: Renamed from LayoutTests/js/dom/basic-set-expected.txt. 11 * js/basic-set.html: Renamed from LayoutTests/js/dom/basic-set.html. 12 * js/script-tests/basic-set.js: Renamed from LayoutTests/js/dom/script-tests/basic-set.js. 13 (set new): 14 (otherString.string_appeared_here.set add): 15 (try.set forEach): 16 (set forEach): 17 (set gc): 18 1 19 2013-11-10 Antti Koivisto <antti@apple.com> 2 20 -
trunk/LayoutTests/js/basic-set-expected.txt
r159030 r159031 122 122 PASS set.has("6") is true 123 123 PASS set.has(4) is true 124 set.@@iterator() 125 PASS key is 0 126 PASS key is '0' 127 PASS key is 1 128 PASS key is '1' 129 PASS key is 2 130 PASS key is '2' 131 PASS key is 3 132 PASS key is '3' 133 PASS key is 4 134 PASS key is '4' 135 PASS i is 10 136 set.entries() 137 PASS key is 0 138 PASS value is 0 139 PASS key is '0' 140 PASS value is '0' 141 PASS key is 1 142 PASS value is 1 143 PASS key is '1' 144 PASS value is '1' 145 PASS key is 2 146 PASS value is 2 147 PASS key is '2' 148 PASS value is '2' 149 PASS key is 3 150 PASS value is 3 151 PASS key is '3' 152 PASS value is '3' 153 PASS key is 4 154 PASS value is 4 155 PASS key is '4' 156 PASS value is '4' 157 PASS i is 10 158 set.keys() 159 PASS key is 0 160 PASS key is '0' 161 PASS key is 1 162 PASS key is '1' 163 PASS key is 2 164 PASS key is '2' 165 PASS key is 3 166 PASS key is '3' 167 PASS key is 4 168 PASS key is '4' 169 PASS i is 10 170 set.values() 171 PASS value is 0 172 PASS value is '0' 173 PASS value is 1 174 PASS value is '1' 175 PASS value is 2 176 PASS value is '2' 177 PASS value is 3 178 PASS value is '3' 179 PASS value is 4 180 PASS value is '4' 181 PASS i is 10 182 Set mutation with live iterator and GC 183 PASS key is 1 184 PASS key is 3 185 PASS key is 4 186 PASS key is 5 187 PASS key is 7 188 PASS i is 5 189 PASS set.size is 4 124 190 PASS successfullyParsed is true 125 191 -
trunk/LayoutTests/js/script-tests/basic-set.js
r159030 r159031 120 120 shouldBeTrue("set.has("+JSON.stringify(expectedKey)+")"); 121 121 } 122 123 124 125 set = new Set; 126 127 var count = 5; 128 var keys = []; 129 for (var i = 0; i < count; i++) { 130 set.add(i) 131 set.add("" + i) 132 keys.push("" + i) 133 keys.push("'" + i + "'") 134 } 135 136 var i = 0; 137 138 debug("set.@@iterator()") 139 for (var key of set) { 140 shouldBe("key", "" + keys[i]) 141 i++; 142 } 143 shouldBe("i", "" + count * 2) 144 145 debug("set.entries()") 146 var i = 0; 147 for (var [key, value] of set.entries()) { 148 shouldBe("key", "" + keys[i]) 149 shouldBe("value", "" + keys[i]) 150 i++; 151 } 152 shouldBe("i", "" + count * 2) 153 154 debug("set.keys()") 155 var i = 0; 156 for (var key of set.keys()) { 157 shouldBe("key", "" + keys[i]) 158 i++; 159 } 160 shouldBe("i", "" + count * 2) 161 162 var i = 0; 163 debug("set.values()") 164 for (var value of set.values()) { 165 shouldBe("value", "" + keys[i]) 166 i++; 167 } 168 shouldBe("i", "" + count * 2) 169 170 debug("Set mutation with live iterator and GC") 171 set = new Set; 172 set.add(0) 173 set.add(1) 174 set.add(2) 175 set.add(3) 176 set.add(4) 177 set.add(5) 178 set.add(6) 179 set.add(7) 180 set.add(9) 181 set.add(14) 182 183 var keys = [1,3,4,5,7] 184 var keyIterator = set.keys(); 185 gc(); 186 set.delete(0) 187 gc() 188 var i = 0; 189 for (var key of keyIterator) { 190 shouldBe("key", "" + keys[i]) 191 if (key == 7) 192 set.delete(9) 193 set.delete(1) 194 set.delete(key * 2) 195 gc() 196 i++ 197 } 198 shouldBe("i", "5") 199 shouldBe("set.size", "4"); -
trunk/Source/JavaScriptCore/CMakeLists.txt
r159008 r159031 355 355 runtime/JSSegmentedVariableObject.cpp 356 356 runtime/JSSet.cpp 357 runtime/JSSetIterator.cpp 357 358 runtime/JSStaticScopeObject.cpp 358 359 runtime/JSString.cpp … … 401 402 runtime/SamplingCounter.cpp 402 403 runtime/SetConstructor.cpp 404 runtime/SetIteratorConstructor.cpp 405 runtime/SetIteratorPrototype.cpp 403 406 runtime/SetPrototype.cpp 404 407 runtime/SimpleTypedArrayController.cpp -
trunk/Source/JavaScriptCore/ChangeLog
r159008 r159031 1 2013-11-10 Oliver Hunt <oliver@apple.com> 2 3 Implement Set iterators 4 https://bugs.webkit.org/show_bug.cgi?id=124129 5 6 Reviewed by Antti Koivisto. 7 8 Add Set iterator classes and implementations 9 10 * JavaScriptCore.xcodeproj/project.pbxproj: 11 * runtime/CommonIdentifiers.h: 12 * runtime/JSGlobalObject.cpp: 13 * runtime/JSGlobalObject.h: 14 * runtime/JSSetIterator.cpp: Added. 15 (JSC::JSSetIterator::finishCreation): 16 (JSC::JSSetIterator::visitChildren): 17 (JSC::JSSetIterator::createPair): 18 * runtime/JSSetIterator.h: Added. 19 (JSC::JSSetIterator::createStructure): 20 (JSC::JSSetIterator::create): 21 (JSC::JSSetIterator::next): 22 (JSC::JSSetIterator::JSSetIterator): 23 * runtime/SetIteratorConstructor.cpp: Added. 24 (JSC::SetIteratorConstructor::finishCreation): 25 * runtime/SetIteratorConstructor.h: Added. 26 (JSC::SetIteratorConstructor::create): 27 (JSC::SetIteratorConstructor::createStructure): 28 (JSC::SetIteratorConstructor::SetIteratorConstructor): 29 * runtime/SetIteratorPrototype.cpp: Added. 30 (JSC::SetIteratorPrototype::finishCreation): 31 (JSC::SetIteratorPrototypeFuncIterator): 32 (JSC::SetIteratorPrototypeFuncNext): 33 * runtime/SetIteratorPrototype.h: Added. 34 (JSC::SetIteratorPrototype::create): 35 (JSC::SetIteratorPrototype::createStructure): 36 (JSC::SetIteratorPrototype::SetIteratorPrototype): 37 * runtime/SetPrototype.cpp: 38 (JSC::SetPrototype::finishCreation): 39 (JSC::setProtoFuncValues): 40 (JSC::setProtoFuncEntries): 41 (JSC::setProtoFuncKeys): 42 1 43 2013-11-09 Oliver Hunt <oliver@apple.com> 2 44 -
trunk/Source/JavaScriptCore/GNUmakefile.list.am
r159008 r159031 955 955 Source/JavaScriptCore/runtime/JSSet.cpp \ 956 956 Source/JavaScriptCore/runtime/JSSet.h \ 957 Source/JavaScriptCore/runtime/JSSetIterator.cpp \ 958 Source/JavaScriptCore/runtime/JSSetIterator.h \ 957 959 Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp \ 958 960 Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h \ … … 1069 1071 Source/JavaScriptCore/runtime/SetConstructor.cpp \ 1070 1072 Source/JavaScriptCore/runtime/SetConstructor.h\ 1073 Source/JavaScriptCore/runtime/SetIteratorConstructor.cpp \ 1074 Source/JavaScriptCore/runtime/SetIteratorConstructor.h\ 1075 Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp \ 1076 Source/JavaScriptCore/runtime/SetIteratorPrototype.h \ 1071 1077 Source/JavaScriptCore/runtime/SetPrototype.cpp \ 1072 1078 Source/JavaScriptCore/runtime/SetPrototype.h \ -
trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj
r159008 r159031 593 593 <ClCompile Include="..\runtime\JSSegmentedVariableObject.cpp" /> 594 594 <ClCompile Include="..\runtime\JSSet.cpp" /> 595 <ClCompile Include="..\runtime\JSSetIterator.cpp" /> 595 596 <ClCompile Include="..\runtime\JSString.cpp" /> 596 597 <ClCompile Include="..\runtime\JSStringJoiner.cpp" /> … … 637 638 <ClCompile Include="..\runtime\SamplingCounter.cpp" /> 638 639 <ClCompile Include="..\runtime\SetConstructor.cpp" /> 640 <ClCompile Include="..\runtime\SetIteratorConstructor.cpp" /> 641 <ClCompile Include="..\runtime\SetIteratorPrototype.cpp" /> 639 642 <ClCompile Include="..\runtime\SetPrototype.cpp" /> 640 643 <ClCompile Include="..\runtime\SimpleTypedArrayController.cpp" /> … … 1179 1182 <ClInclude Include="..\runtime\JSSegmentedVariableObject.h" /> 1180 1183 <ClInclude Include="..\runtime\JSSet.h" /> 1184 <ClInclude Include="..\runtime\JSSetIterator.h" /> 1181 1185 <ClInclude Include="..\runtime\JSString.h" /> 1182 1186 <ClInclude Include="..\runtime\JSStringBuilder.h" /> … … 1241 1245 <ClInclude Include="..\runtime\SamplingCounter.h" /> 1242 1246 <ClInclude Include="..\runtime\SetConstructor.h" /> 1247 <ClInclude Include="..\runtime\SetIteratorConstructor.h" /> 1248 <ClInclude Include="..\runtime\SetIteratorPrototype.h" /> 1243 1249 <ClInclude Include="..\runtime\SetPrototype.h" /> 1244 1250 <ClInclude Include="..\runtime\SimpleTypedArrayController.h" /> -
trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters
r159008 r159031 595 595 <Filter>runtime</Filter> 596 596 </ClCompile> 597 <ClCompile Include="..\runtime\JSSetIterator.cpp"> 598 <Filter>runtime</Filter> 599 </ClCompile> 597 600 <ClCompile Include="..\runtime\JSSegmentedVariableObject.cpp"> 598 601 <Filter>runtime</Filter> … … 712 715 <Filter>runtime</Filter> 713 716 </ClCompile> 717 <ClCompile Include="..\runtime\SetIteratorPrototype.cpp"> 718 <Filter>runtime</Filter> 719 </ClCompile> 720 <ClCompile Include="..\runtime\SetIteratorConstructor.cpp"> 721 <Filter>runtime</Filter> 722 </ClCompile> 714 723 <ClCompile Include="..\runtime\SetConstructor.cpp"> 724 <Filter>runtime</Filter> 725 </ClCompile> 726 <ClCompile Include="..\runtime\SetIteratorConstructor.cpp"> 715 727 <Filter>runtime</Filter> 716 728 </ClCompile> … … 2608 2620 <Filter>runtime</Filter> 2609 2621 </ClInclude> 2622 <ClInclude Include="..\runtime\JSSetIterator.h"> 2623 <Filter>runtime</Filter> 2624 </ClInclude> 2610 2625 <ClInclude Include="..\llint\LLIntEntrypoint.h"> 2611 2626 <Filter>llint</Filter> … … 2620 2635 <Filter>runtime</Filter> 2621 2636 </ClInclude> 2637 <ClInclude Include="..\runtime\SetIteratorPrototype.h"> 2638 <Filter>runtime</Filter> 2639 </ClInclude> 2622 2640 <ClInclude Include="..\runtime\MapPrototype.h"> 2623 2641 <Filter>runtime</Filter> 2624 2642 </ClInclude> 2625 2643 <ClInclude Include="..\runtime\SetConstructor.h"> 2644 <Filter>runtime</Filter> 2645 </ClInclude> 2646 <ClInclude Include="..\runtime\SetIteratorConstructor.h"> 2626 2647 <Filter>runtime</Filter> 2627 2648 </ClInclude> -
trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r159008 r159031 977 977 A78A9780179738D5009DF744 /* FTLJITFinalizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A78A977D179738D5009DF744 /* FTLJITFinalizer.cpp */; }; 978 978 A78A9781179738D5009DF744 /* FTLJITFinalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = A78A977E179738D5009DF744 /* FTLJITFinalizer.h */; }; 979 A790DD6B182F499700588807 /* SetIteratorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD65182F499700588807 /* SetIteratorConstructor.cpp */; }; 980 A790DD6C182F499700588807 /* SetIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD66182F499700588807 /* SetIteratorConstructor.h */; }; 981 A790DD6D182F499700588807 /* SetIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD67182F499700588807 /* SetIteratorPrototype.cpp */; }; 982 A790DD6E182F499700588807 /* SetIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD68182F499700588807 /* SetIteratorPrototype.h */; }; 983 A790DD6F182F499700588807 /* JSSetIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD69182F499700588807 /* JSSetIterator.cpp */; }; 984 A790DD70182F499700588807 /* JSSetIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD6A182F499700588807 /* JSSetIterator.h */; }; 979 985 A7986D5717A0BB1E00A95DD0 /* DFGEdgeUsesStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = A7986D5617A0BB1E00A95DD0 /* DFGEdgeUsesStructure.h */; settings = {ATTRIBUTES = (Private, ); }; }; 980 986 A7A4AE0817973B26005612B1 /* MacroAssemblerX86Common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A4AE0717973B26005612B1 /* MacroAssemblerX86Common.cpp */; }; … … 2267 2273 A78A977D179738D5009DF744 /* FTLJITFinalizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLJITFinalizer.cpp; path = ftl/FTLJITFinalizer.cpp; sourceTree = "<group>"; }; 2268 2274 A78A977E179738D5009DF744 /* FTLJITFinalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLJITFinalizer.h; path = ftl/FTLJITFinalizer.h; sourceTree = "<group>"; }; 2275 A790DD65182F499700588807 /* SetIteratorConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetIteratorConstructor.cpp; sourceTree = "<group>"; }; 2276 A790DD66182F499700588807 /* SetIteratorConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetIteratorConstructor.h; sourceTree = "<group>"; }; 2277 A790DD67182F499700588807 /* SetIteratorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetIteratorPrototype.cpp; sourceTree = "<group>"; }; 2278 A790DD68182F499700588807 /* SetIteratorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetIteratorPrototype.h; sourceTree = "<group>"; }; 2279 A790DD69182F499700588807 /* JSSetIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSetIterator.cpp; sourceTree = "<group>"; }; 2280 A790DD6A182F499700588807 /* JSSetIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSetIterator.h; sourceTree = "<group>"; }; 2269 2281 A7986D5617A0BB1E00A95DD0 /* DFGEdgeUsesStructure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGEdgeUsesStructure.h; path = dfg/DFGEdgeUsesStructure.h; sourceTree = "<group>"; }; 2270 2282 A79E781E15EECBA80047C855 /* UnlinkedCodeBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UnlinkedCodeBlock.cpp; sourceTree = "<group>"; }; … … 3657 3669 A74DEF8F182D991400522C22 /* JSMapIterator.cpp */, 3658 3670 A74DEF90182D991400522C22 /* JSMapIterator.h */, 3671 A790DD65182F499700588807 /* SetIteratorConstructor.cpp */, 3672 A790DD66182F499700588807 /* SetIteratorConstructor.h */, 3673 A790DD67182F499700588807 /* SetIteratorPrototype.cpp */, 3674 A790DD68182F499700588807 /* SetIteratorPrototype.h */, 3675 A790DD69182F499700588807 /* JSSetIterator.cpp */, 3676 A790DD6A182F499700588807 /* JSSetIterator.h */, 3659 3677 ); 3660 3678 path = runtime; … … 4455 4473 86CC85A10EE79A4700288682 /* JITInlines.h in Headers */, 4456 4474 0F24E54D17EE274900ABB217 /* JITOperations.h in Headers */, 4475 A790DD70182F499700588807 /* JSSetIterator.h in Headers */, 4457 4476 0F24E54E17EE274900ABB217 /* JITOperationWrappers.h in Headers */, 4458 4477 0F766D3115AA8112008F363E /* JITStubRoutine.h in Headers */, … … 4627 4646 86C568E211A213EE0007F7F0 /* MIPSAssembler.h in Headers */, 4628 4647 86EBF3001560F06A008E9222 /* NameConstructor.h in Headers */, 4648 A790DD6E182F499700588807 /* SetIteratorPrototype.h in Headers */, 4629 4649 86EBF3021560F06A008E9222 /* NameInstance.h in Headers */, 4630 4650 86EBF3041560F06A008E9222 /* NamePrototype.h in Headers */, … … 4713 4733 86AE64AA135E5E1C00963012 /* SH4Assembler.h in Headers */, 4714 4734 0F2B670517B6B5AB00A7AE3F /* SimpleTypedArrayController.h in Headers */, 4735 A790DD6C182F499700588807 /* SetIteratorConstructor.h in Headers */, 4715 4736 14BA78F113AAB88F005B7C2C /* SlotVisitor.h in Headers */, 4716 4737 C2160FE715F7E95E00942DFC /* SlotVisitorInlines.h in Headers */, … … 5229 5250 A7BDAEC617F4EA1400F6140C /* ArrayIteratorConstructor.cpp in Sources */, 5230 5251 A7BDAEC817F4EA1400F6140C /* ArrayIteratorPrototype.cpp in Sources */, 5252 A790DD6F182F499700588807 /* JSSetIterator.cpp in Sources */, 5231 5253 0F63945415D07055006A597C /* ArrayProfile.cpp in Sources */, 5232 5254 147F39C0107EC37600427A48 /* ArrayPrototype.cpp in Sources */, … … 5609 5631 A7299DA117D12848005F5FF9 /* SetPrototype.cpp in Sources */, 5610 5632 0F2B670417B6B5AB00A7AE3F /* SimpleTypedArrayController.cpp in Sources */, 5633 A790DD6D182F499700588807 /* SetIteratorPrototype.cpp in Sources */, 5611 5634 C225494315F7DBAA0065E898 /* SlotVisitor.cpp in Sources */, 5612 5635 9330402C0E6A764000786E6A /* SmallStrings.cpp in Sources */, … … 5638 5661 0FF4274A158EBE91004CB9FF /* udis86.c in Sources */, 5639 5662 0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */, 5663 A790DD6B182F499700588807 /* SetIteratorConstructor.cpp in Sources */, 5640 5664 0FF42743158EBE91004CB9FF /* udis86_input.c in Sources */, 5641 5665 0FF4274D158EBFE6004CB9FF /* udis86_itab_holder.c in Sources */, -
trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h
r159008 r159031 52 52 macro(RegExp) \ 53 53 macro(Set)\ 54 macro(SetIterator)\ 54 55 macro(String) \ 55 56 macro(SyntaxError) \ -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r159008 r159031 77 77 #include "JSONObject.h" 78 78 #include "JSSet.h" 79 #include "JSSetIterator.h" 79 80 #include "JSTypedArrayConstructors.h" 80 81 #include "JSTypedArrayPrototypes.h" … … 106 107 #include "RegExpPrototype.h" 107 108 #include "SetConstructor.h" 109 #include "SetIteratorConstructor.h" 110 #include "SetIteratorPrototype.h" 108 111 #include "SetPrototype.h" 109 112 #include "StrictEvalActivation.h" -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h
r159008 r159031 87 87 DEFINE_STANDARD_BUILTIN(macro, ArgumentsIterator, argumentsIterator) \ 88 88 DEFINE_STANDARD_BUILTIN(macro, MapIterator, mapIterator) \ 89 DEFINE_STANDARD_BUILTIN(macro, SetIterator, setIterator) \ 89 90 90 91 -
trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp
r156620 r159031 34 34 #include "JSFunctionInlines.h" 35 35 #include "JSSet.h" 36 #include "JSSetIterator.h" 36 37 #include "MapData.h" 37 38 … … 45 46 static EncodedJSValue JSC_HOST_CALL setProtoFuncForEach(ExecState*); 46 47 static EncodedJSValue JSC_HOST_CALL setProtoFuncHas(ExecState*); 48 static EncodedJSValue JSC_HOST_CALL setProtoFuncKeys(ExecState*); 49 static EncodedJSValue JSC_HOST_CALL setProtoFuncValues(ExecState*); 50 static EncodedJSValue JSC_HOST_CALL setProtoFuncEntries(ExecState*); 51 47 52 48 53 static EncodedJSValue JSC_HOST_CALL setProtoFuncSize(ExecState*); … … 59 64 JSC_NATIVE_FUNCTION(vm.propertyNames->forEach, setProtoFuncForEach, DontEnum, 1); 60 65 JSC_NATIVE_FUNCTION(vm.propertyNames->has, setProtoFuncHas, DontEnum, 1); 66 JSC_NATIVE_FUNCTION(vm.propertyNames->keys, setProtoFuncKeys, DontEnum, 0); 67 JSC_NATIVE_FUNCTION(vm.propertyNames->values, setProtoFuncValues, DontEnum, 0); 68 JSC_NATIVE_FUNCTION(vm.propertyNames->entries, setProtoFuncEntries, DontEnum, 0); 69 JSC_NATIVE_FUNCTION(vm.propertyNames->iteratorPrivateName, setProtoFuncKeys, DontEnum, 0); 61 70 62 71 GetterSetter* accessor = GetterSetter::create(vm); … … 151 160 return JSValue::encode(jsNumber(data->size(callFrame))); 152 161 } 162 163 EncodedJSValue JSC_HOST_CALL setProtoFuncValues(CallFrame* callFrame) 164 { 165 JSSet* thisObj = jsDynamicCast<JSSet*>(callFrame->thisValue()); 166 if (!thisObj) 167 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Map value iterator for a non-Map object."))); 168 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, SetIterateValue)); 169 } 170 171 EncodedJSValue JSC_HOST_CALL setProtoFuncEntries(CallFrame* callFrame) 172 { 173 JSSet* thisObj = jsDynamicCast<JSSet*>(callFrame->thisValue()); 174 if (!thisObj) 175 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Map key iterator for a non-Map object."))); 176 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, SetIterateKeyValue)); 177 } 178 179 EncodedJSValue JSC_HOST_CALL setProtoFuncKeys(CallFrame* callFrame) 180 { 181 JSSet* thisObj = jsDynamicCast<JSSet*>(callFrame->thisValue()); 182 if (!thisObj) 183 return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot create a Map entry iterator for a non-Map object."))); 184 return JSValue::encode(JSSetIterator::create(callFrame->vm(), callFrame->callee()->globalObject()->setIteratorStructure(), thisObj, SetIterateKey)); 185 } 153 186 154 187 }
Note: See TracChangeset
for help on using the changeset viewer.