<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>123527</bug_id>
          
          <creation_ts>2013-10-30 13:46:19 -0700</creation_ts>
          <short_desc>Provide a way to iterate over WeakMap</short_desc>
          <delta_ts>2017-01-18 23:39:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945165</commentid>
    <comment_count>0</comment_count>
      <attachid>215559</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-30 13:46:19 -0700</bug_when>
    <thetext>Created attachment 215559
Desired Use Case in the Inspector

For the Inspector, we want to start using WeakMap for our event listener and dispatch base Object prototype. However, WeakMap can&apos;t be enumerated at all, unlike Map. I understand this is a design decision baked into ES6. But it really limits the uses to WeakMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945997</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-01 13:33:57 -0700</bug_when>
    <thetext>I believe the spec folks objected based on the fact that iteration would make GC behavior observable. I&apos;m not sure I agree with that objection. Given that a WebKit-only client would use WeakMap iteration, it might be worth implementing even if other browsers don&apos;t implement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948462</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-07 16:12:57 -0800</bug_when>
    <thetext>Lets do it then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948463</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-07 16:16:03 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I believe the spec folks objected based on the fact that iteration would make GC behavior observable. I&apos;m not sure I agree with that objection. Given that a WebKit-only client would use WeakMap iteration, it might be worth implementing even if other browsers don&apos;t implement it.

Yes, my plan was to make this a privileged API


(In reply to comment #2)
&gt; Lets do it then!

Would you be okay with a magical &quot;get an array of entries&quot; style API? (This simplifies the semantics dramatically)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948467</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-07 16:18:50 -0800</bug_when>
    <thetext>Any API would do. We would need the key and value pairs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>215559</attachid>
            <date>2013-10-30 13:46:19 -0700</date>
            <delta_ts>2013-10-30 13:46:19 -0700</delta_ts>
            <desc>Desired Use Case in the Inspector</desc>
            <filename>Object.js</filename>
            <type>application/x-javascript</type>
            <size>6498</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAogKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqLwoKV2ViSW5zcGVjdG9yLk9iamVjdCA9IGZ1bmN0aW9u
KCkKewp9CgpXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zID0gZnVu
Y3Rpb24oc3ViY2xhc3NDb25zdHJ1Y3RvcikKewogICAgLy8gQ29waWVzIHRoZSByZWxldmFudCBm
dW5jdGlvbnMgdGhlIHN1YmNsYXNzIGNvbnN0cnVjdG9yLgogICAgZm9yICh2YXIgcHJvcGVydHkg
aW4gV2ViSW5zcGVjdG9yLk9iamVjdCkgewogICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rv
ci5PYmplY3RbcHJvcGVydHldOwogICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJmdW5jdGlv
biIpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGlmICh2YWx1ZSA9PT0gYXJndW1lbnRz
LmNhbGxlZSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgc3ViY2xhc3NDb25zdHJ1Y3Rv
cltwcm9wZXJ0eV0gPSB2YWx1ZTsKICAgIH0KfQoKV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRFdmVu
dExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKewog
ICAgdGhpc09iamVjdCA9IHRoaXNPYmplY3QgfHwgbnVsbDsKCiAgICBjb25zb2xlLmFzc2VydChl
dmVudFR5cGUsICJVbmtub3duIGV2ZW50VHlwZSByZWdpc3RlcmluZyBsaXN0ZW5lciAiICsgbGlz
dGVuZXIpOwogICAgaWYgKCFldmVudFR5cGUpCiAgICAgICAgcmV0dXJuOwoKICAgIGNvbnNvbGUu
YXNzZXJ0KGxpc3RlbmVyLCAiTm8gbGlzdGVuZXIgd2hlbiByZWdpc3RlcmluZyBmb3IgZXZlbnRU
eXBlICIgKyBldmVudFR5cGUpOwogICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICByZXR1cm47Cgog
ICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpCiAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0gbmV3IE1h
cDsKCiAgICB2YXIgbGlzdGVuZXJUaGlzT2JqZWN0TWFwID0gdGhpcy5fbGlzdGVuZXJzLmdldChl
dmVudFR5cGUpOwogICAgaWYgKCFsaXN0ZW5lclRoaXNPYmplY3RNYXApIHsKICAgICAgICBsaXN0
ZW5lclRoaXNPYmplY3RNYXAgPSBuZXcgV2Vha01hcDsKICAgICAgICB0aGlzLl9saXN0ZW5lcnMu
c2V0KGV2ZW50VHlwZSwgbGlzdGVuZXJUaGlzT2JqZWN0TWFwKTsKICAgIH0KCiAgICB2YXIgbGlz
dGVuZXJTZXQgPSBsaXN0ZW5lclRoaXNPYmplY3RNYXAuZ2V0KHRoaXNPYmplY3QpOwogICAgaWYg
KCFsaXN0ZW5lclNldCkgewogICAgICAgIGxpc3RlbmVyU2V0ID0gbmV3IFNldDsKICAgICAgICBs
aXN0ZW5lclRoaXNPYmplY3RNYXAuc2V0KHRoaXNPYmplY3QsIGxpc3RlbmVyU2V0KTsKICAgIH0K
CiAgICBsaXN0ZW5lclNldC5hZGQobGlzdGVuZXIpOwp9OwoKV2ViSW5zcGVjdG9yLk9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09i
amVjdCkKewogICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlIHx8IG51bGw7CiAgICBsaXN0ZW5lciA9
IGxpc3RlbmVyIHx8IG51bGw7CiAgICB0aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOwoK
ICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKQogICAgICAgIHJldHVybjsKCiAgICBpZiAoIWV2ZW50
VHlwZSkgewogICAgICAgIHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKHVudXNlZCwg
ZXZlbnRUeXBlKSB7CiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAg
ICB9CgogICAgdmFyIGxpc3RlbmVyVGhpc09iamVjdE1hcCA9IHRoaXMuX2xpc3RlbmVycy5nZXQo
ZXZlbnRUeXBlKTsKICAgIGlmICghbGlzdGVuZXJUaGlzT2JqZWN0TWFwIC8qIHx8ICFsaXN0ZW5l
clRoaXNPYmplY3RNYXAuc2l6ZSAqLykKICAgICAgICByZXR1cm47CgogICAgaWYgKGxpc3RlbmVy
KSB7CiAgICAgICAgdmFyIGxpc3RlbmVyU2V0ID0gbGlzdGVuZXJUaGlzT2JqZWN0TWFwLmdldCh0
aGlzT2JqZWN0KTsKICAgICAgICBpZiAoIWxpc3RlbmVyU2V0IHx8ICFsaXN0ZW5lclNldC5zaXpl
KQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGxpc3RlbmVyU2V0LmRlbGV0ZShsaXN0ZW5l
cik7CiAgICB9IGVsc2UKICAgICAgICBsaXN0ZW5lclRoaXNPYmplY3RNYXAuZGVsZXRlKHRoaXNP
YmplY3QpOwoKICAgIGlmICghbGlzdGVuZXJTZXQuc2l6ZSkKICAgICAgICBsaXN0ZW5lclRoaXNP
YmplY3RNYXAuZGVsZXRlKHRoaXNPYmplY3QpOwoKLy8gICAgaWYgKCFsaXN0ZW5lclRoaXNPYmpl
Y3RNYXAuc2l6ZSkKLy8gICAgICAgIHRoaXMuX2xpc3RlbmVycy5kZWxldGUoZXZlbnRUeXBlKTsK
CiAgICBpZiAoIXRoaXMuX2xpc3RlbmVycy5zaXplKQogICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0
ZW5lcnM7Cn07CgpXZWJJbnNwZWN0b3IuT2JqZWN0LnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0
aW9uKCkKewogICAgZGVsZXRlIHRoaXMuX2xpc3RlbmVyczsKfTsKCldlYkluc3BlY3Rvci5PYmpl
Y3QuaGFzRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudFR5cGUpCnsKICAgIGlmICghdGhp
cy5fbGlzdGVuZXJzKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIHZhciBsaXN0ZW5lclRoaXNP
YmplY3RNYXAgPSB0aGlzLl9saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7CiAgICByZXR1cm4gISFs
aXN0ZW5lclRoaXNPYmplY3RNYXAgLyogJiYgbGlzdGVuZXJUaGlzT2JqZWN0TWFwLnNpemUgKi87
Cn07CgpXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuT2JqZWN0LAoKICAgIGFkZEV2ZW50TGlzdGVuZXI6IFdlYkluc3BlY3Rvci5P
YmplY3QuYWRkRXZlbnRMaXN0ZW5lciwKICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IFdlYkluc3Bl
Y3Rvci5PYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgIHJlbW92ZUFsbExpc3RlbmVyczog
V2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVBbGxMaXN0ZW5lcnMsCiAgICBoYXNFdmVudExpc3Rl
bmVyczogV2ViSW5zcGVjdG9yLk9iamVjdC5oYXNFdmVudExpc3RlbmVycywKCiAgICBkaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRhKQogICAgewog
ICAgICAgIHZhciBldmVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnQodGhpcywgZXZlbnRUeXBl
LCBldmVudERhdGEpOwoKICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaChvYmplY3QpCiAgICAgICAg
ewogICAgICAgICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0Ll9saXN0ZW5lcnMgfHwgZXZlbnQu
X3N0b3BwZWRQcm9wYWdhdGlvbikKICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAg
IHZhciBsaXN0ZW5lclRoaXNPYmplY3RNYXAgPSBvYmplY3QuX2xpc3RlbmVycy5nZXQoZXZlbnRU
eXBlKTsKICAgICAgICAgICAgaWYgKCFsaXN0ZW5lclRoaXNPYmplY3RNYXAgLyogfHwgIWxpc3Rl
bmVyVGhpc09iamVjdE1hcC5zaXplICovKQogICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAg
ICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0ZW5lcnMgYW5kIGNhbGwgdGhlbS4gU3RvcCBp
ZiBzdG9wUHJvcGFnYXRpb24gaXMgY2FsbGVkLgogICAgICAgICAgICBsaXN0ZW5lclRoaXNPYmpl
Y3RNYXAuZm9yRWFjaChmdW5jdGlvbihsaXN0ZW5lclNldCwgdGhpc09iamVjdCkgewogICAgICAg
ICAgICAgICAgaWYgKGV2ZW50Ll9zdG9wcGVkUHJvcGFnYXRpb24gfHwgIWxpc3RlbmVyU2V0LnNp
emUpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAgICAgICAgIGxpc3RlbmVy
U2V0LmZvckVhY2goZnVuY3Rpb24obGlzdGVuZXIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAo
ZXZlbnQuX3N0b3BwZWRQcm9wYWdhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwoKICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5jYWxsKHRoaXNPYmplY3QsIGV2ZW50KTsK
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8v
IERpc3BhdGNoIHRvIGxpc3RlbmVycyBvZiB0aGlzIHNwZWNpZmljIG9iamVjdC4KICAgICAgICBk
aXNwYXRjaCh0aGlzKTsKCiAgICAgICAgLy8gQWxsb3cgcHJvcGFnYXRpb24gYWdhaW4gc28gbGlz
dGVuZXJzIG9uIHRoZSBjb25zdHJ1Y3RvciBhbHdheXMgaGF2ZSBhIGNyYWNrIGF0IHRoZSBldmVu
dC4KICAgICAgICBldmVudC5fc3RvcHBlZFByb3BhZ2F0aW9uID0gZmFsc2U7CgogICAgICAgIC8v
IERpc3BhdGNoIHRvIGxpc3RlbmVycyBvbiBhbGwgY29uc3RydWN0b3JzIHVwIHRoZSBwcm90b3R5
cGUgY2hhaW4sIGluY2x1ZGluZyB0aGUgaW1tZWRpYXRlIGNvbnN0cnVjdG9yLgogICAgICAgIHZh
ciBjb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0b3I7CiAgICAgICAgd2hpbGUgKGNvbnN0cnVj
dG9yKSB7CiAgICAgICAgICAgIGRpc3BhdGNoKGNvbnN0cnVjdG9yKTsKCiAgICAgICAgICAgIGlm
ICghY29uc3RydWN0b3IucHJvdG90eXBlLl9fcHJvdG9fXykKICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19wcm90
b19fLmNvbnN0cnVjdG9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGV2ZW50LmRlZmF1bHRQ
cmV2ZW50ZWQ7CiAgICB9Cn0KCldlYkluc3BlY3Rvci5FdmVudCA9IGZ1bmN0aW9uKHRhcmdldCwg
dHlwZSwgZGF0YSkKewogICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7CiAgICB0aGlzLnR5cGUgPSB0
eXBlOwogICAgdGhpcy5kYXRhID0gZGF0YTsKICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IGZh
bHNlOwogICAgdGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0gZmFsc2U7Cn0KCldlYkluc3BlY3Rv
ci5FdmVudC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkV2ZW50
LAoKICAgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKQogICAgewogICAgICAgIHRoaXMuX3N0
b3BwZWRQcm9wYWdhdGlvbiA9IHRydWU7CiAgICB9LAoKICAgIHByZXZlbnREZWZhdWx0OiBmdW5j
dGlvbigpCiAgICB7CiAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsKICAgIH0K
fQoKV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>