<?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>25467</bug_id>
          
          <creation_ts>2009-04-29 13:40:17 -0700</creation_ts>
          <short_desc>JavaScript debugger should use function.displayName as the function&apos;s name in the call stack</short_desc>
          <delta_ts>2009-05-15 14:59:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>timothy</cc>
    
    <cc>tolmasky</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119330</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-29 13:40:17 -0700</bug_when>
    <thetext>r42478 added a displayName property to functions, which, if it exists, is used in the JavaScript profiler as the function&apos;s name. This is especially useful for anonymous functions, which don&apos;t otherwise have an intelligible name to be displayed. We should use the displayName property when deciding what name to show for a function in the JavaScript debugger&apos;s call stack, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119331</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-29 13:40:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/6840007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119922</commentid>
    <comment_count>2</comment_count>
      <attachid>30010</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2009-05-04 22:20:44 -0700</bug_when>
    <thetext>Created attachment 30010
Adds check of displayName

Basically did the same thing we do in profilenodes and checked the displayName of a function as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119923</commentid>
    <comment_count>3</comment_count>
      <attachid>30010</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-05-04 22:34:07 -0700</bug_when>
    <thetext>Comment on attachment 30010
Adds check of displayName

&gt; Index: JavaScriptCore/ChangeLog
&gt; ===================================================================
&gt; --- JavaScriptCore/ChangeLog	(revision 43204)
&gt; +++ JavaScriptCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,15 @@
&gt; +2009-05-04  Francisco Tolmasky  &lt;francisco@280north.com&gt;
&gt; +
&gt; +        BUG 25467: JavaScript debugger should use function.displayName as the function&apos;s name in the call stack
&gt; +        &lt;https://bugs.webkit.org/show_bug.cgi?id=25467&gt;
&gt; +        
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * JavaScriptCore.exp: Added calculatedFunctionName
&gt; +        * debugger/DebuggerCallFrame.cpp: Added calculatedFunctionName to match existing one in ProfileNode.
&gt; +        (JSC::DebuggerCallFrame::calculatedFunctionName):
&gt; +        * debugger/DebuggerCallFrame.h: Added calculatedFunctionName to match existing one in ProfileNode.
&gt; +
&gt;  2009-05-03  Steve Falkenburg  &lt;sfalken@apple.com&gt;
&gt;  
&gt;          Windows build fix.
&gt; Index: JavaScriptCore/JavaScriptCore.exp
&gt; ===================================================================
&gt; --- JavaScriptCore/JavaScriptCore.exp	(revision 43202)
&gt; +++ JavaScriptCore/JavaScriptCore.exp	(working copy)
&gt; @@ -328,6 +328,7 @@ __ZNK3JSC16JSVariableObject16isVariableO
&gt;  __ZNK3JSC16JSVariableObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj
&gt;  __ZNK3JSC17DebuggerCallFrame10thisObjectEv
&gt;  __ZNK3JSC17DebuggerCallFrame12functionNameEv
&gt; +__ZNK3JSC17DebuggerCallFrame22calculatedFunctionNameEv
&gt;  __ZNK3JSC17DebuggerCallFrame4typeEv
&gt;  __ZNK3JSC17DebuggerCallFrame8evaluateERKNS_7UStringERNS_7JSValueE
&gt;  __ZNK3JSC4Heap10statisticsEv
&gt; Index: JavaScriptCore/debugger/DebuggerCallFrame.cpp
&gt; ===================================================================
&gt; --- JavaScriptCore/debugger/DebuggerCallFrame.cpp	(revision 43202)
&gt; +++ JavaScriptCore/debugger/DebuggerCallFrame.cpp	(working copy)
&gt; @@ -46,6 +46,17 @@ const UString* DebuggerCallFrame::functi
&gt;          return 0;
&gt;      return &amp;function-&gt;name(&amp;m_callFrame-&gt;globalData());
&gt;  }
&gt; +    
&gt; +const UString DebuggerCallFrame::calculatedFunctionName() const

The &quot;const&quot; on the return type isn&apos;t doing you any good, since callers will just be copying the string anyway.


&gt; +static const char* AnonymousFunction = &quot;(anonymous function)&quot;;

We use a lowercase first letter for variable names, even global variables and constants.

&gt; @@ -64,11 +66,11 @@ String JavaScriptCallFrame::functionName
&gt;  {
&gt;      ASSERT(m_isValid);
&gt;      if (!m_isValid)
&gt; -        return String();
&gt; -    const UString* functionName = m_debuggerCallFrame.functionName();
&gt; -    if (!functionName)
&gt; -        return String();
&gt; -    return *functionName;
&gt; +        return AnonymousFunction;
&gt; +    const UString functionName = m_debuggerCallFrame.calculatedFunctionName();
&gt; +    if (functionName.isEmpty())
&gt; +        return AnonymousFunction;
&gt; +    return functionName;
&gt;  }
&gt;  
&gt;  DebuggerCallFrame::Type JavaScriptCallFrame::type() const
&gt; Index: WebCore/inspector/front-end/CallStackSidebarPane.js
&gt; ===================================================================
&gt; --- WebCore/inspector/front-end/CallStackSidebarPane.js	(revision 43202)
&gt; +++ WebCore/inspector/front-end/CallStackSidebarPane.js	(working copy)
&gt; @@ -51,7 +51,7 @@ WebInspector.CallStackSidebarPane.protot
&gt;          do {
&gt;              switch (callFrame.type) {
&gt;              case &quot;function&quot;:
&gt; -                title = callFrame.functionName || WebInspector.UIString(&quot;(anonymous function)&quot;);
&gt; +                title = callFrame.functionName;

Why are you moving the &quot;(anonymous function)&quot; string out of JavaScript? This change has made that string unlocalizable, which seems like a step in the wrong direction. If we really do want it to be unlocalizable, we should remove it from localizedStrings.js, too.

Thanks for working on this! r- until we figure out the localized string issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119924</commentid>
    <comment_count>4</comment_count>
      <attachid>30011</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2009-05-04 22:44:49 -0700</bug_when>
    <thetext>Created attachment 30011
Removed const, put anonymous string back in js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119925</commentid>
    <comment_count>5</comment_count>
      <attachid>30011</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-05-04 23:03:22 -0700</bug_when>
    <thetext>Comment on attachment 30011
Removed const, put anonymous string back in js

&gt; +UString DebuggerCallFrame::calculatedFunctionName() const
&gt; +{
&gt; +    if (!m_callFrame-&gt;codeBlock())
&gt; +        return 0;
&gt; +    
&gt; +    JSFunction* function = static_cast&lt;JSFunction*&gt;(m_callFrame-&gt;callee());
&gt; +    if (!function)
&gt; +        return 0;
&gt; +    return function-&gt;calculatedDisplayName(&amp;m_callFrame-&gt;globalData());
&gt; +}

The best way to make a null string is &quot;UString()&quot;, rather than &quot;0&quot;.

&gt; +    UString functionName = m_debuggerCallFrame.calculatedFunctionName();
&gt; +    if (functionName.isEmpty())
&gt;          return String();
&gt; -    return *functionName;
&gt; +    return functionName;
&gt;  }

Just plain &quot;return m_debuggerCallFrame.calculatedFunctionName();&quot; should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119926</commentid>
    <comment_count>6</comment_count>
      <attachid>30011</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-05-04 23:04:49 -0700</bug_when>
    <thetext>Comment on attachment 30011
Removed const, put anonymous string back in js

This patch as-is will break the Windows build. We&apos;ll need to modify JavaScriptCore[_debug].def to fix it.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121454</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-15 00:40:32 -0700</bug_when>
    <thetext>Assigning to aroben, since I can&apos;t land this w/o breaking the windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121497</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-15 06:21:43 -0700</bug_when>
    <thetext>Adam, can you land this today?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121544</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-05-15 11:13:41 -0700</bug_when>
    <thetext>Landed as r43774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121587</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-05-15 14:59:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/43774

No changes to inspector/front-end/CallStackSidebarPane.js were included in the last patch:

+        * inspector/front-end/CallStackSidebarPane.js: Remove &quot;|| anonymous function&quot; since it is handled internally just like in profiles
+        (WebInspector.CallStackSidebarPane.prototype.update):

I guess this part of the ChangeLog entry should have been removed.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30010</attachid>
            <date>2009-05-04 22:20:44 -0700</date>
            <delta_ts>2009-05-04 22:44:49 -0700</delta_ts>
            <desc>Adds check of displayName</desc>
            <filename>debugger.patch</filename>
            <type>text/plain</type>
            <size>5797</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzMjA0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMDQgIEZyYW5jaXNj
byBUb2xtYXNreSAgPGZyYW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgQlVHIDI1NDY3
OiBKYXZhU2NyaXB0IGRlYnVnZ2VyIHNob3VsZCB1c2UgZnVuY3Rpb24uZGlzcGxheU5hbWUgYXMg
dGhlIGZ1bmN0aW9uJ3MgbmFtZSBpbiB0aGUgY2FsbCBzdGFjaworICAgICAgICA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDY3PgorICAgICAgICAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6IEFkZGVkIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHA6IEFkZGVkIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUgdG8gbWF0Y2gg
ZXhpc3Rpbmcgb25lIGluIFByb2ZpbGVOb2RlLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6Y2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuaDogQWRkZWQgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSB0byBtYXRjaCBleGlz
dGluZyBvbmUgaW4gUHJvZmlsZU5vZGUuCisKIDIwMDktMDUtMDMgIFN0ZXZlIEZhbGtlbmJ1cmcg
IDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeC4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDQzMjAyKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjgsNiArMzI4LDcg
QEAgX19aTkszSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTZpc1ZhcmlhYmxlTwogX19aTkszSlNDMTZK
U1ZhcmlhYmxlT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0pTQzE3RGVidWdnZXJDYWxsRnJhbWUxMHRoaXNPYmpl
Y3RFdgogX19aTkszSlNDMTdEZWJ1Z2dlckNhbGxGcmFtZTEyZnVuY3Rpb25OYW1lRXYKK19fWk5L
M0pTQzE3RGVidWdnZXJDYWxsRnJhbWUyMmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWVFdgogX19aTksz
SlNDMTdEZWJ1Z2dlckNhbGxGcmFtZTR0eXBlRXYKIF9fWk5LM0pTQzE3RGVidWdnZXJDYWxsRnJh
bWU4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VSTlNfN0pTVmFsdWVFCiBfX1pOSzNKU0M0SGVhcDEw
c3RhdGlzdGljc0V2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCShyZXZpc2lvbiA0MzIwMikKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTcgQEAg
Y29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gJmZ1bmN0aW9uLT5uYW1lKCZtX2NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
KTsKIH0KKyAgICAKK2NvbnN0IFVTdHJpbmcgRGVidWdnZXJDYWxsRnJhbWU6OmNhbGN1bGF0ZWRG
dW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHN0
YXRpY19jYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxGcmFtZS0+Y2FsbGVlKCkpOworICAgIGlmICgh
ZnVuY3Rpb24pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3Vs
YXRlZERpc3BsYXlOYW1lKCZtX2NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKK30KIAogRGVidWdn
ZXJDYWxsRnJhbWU6OlR5cGUgRGVidWdnZXJDYWxsRnJhbWU6OnR5cGUoKSBjb25zdAogewpJbmRl
eDogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lv
biA0MzIwMikKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsgfQogICAgICAgICBjb25zdCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNo
YWluKCk7IH0KICAgICAgICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7Cisg
ICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAg
ICAgICBUeXBlIHR5cGUoKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBj
b25zdDsKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYg
ZXhjZXB0aW9uKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MzIwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMDQgIEZyYW5jaXNjbyBU
b2xtYXNreSAgPGZyYW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgQlVHIDI1NDY3OiBK
YXZhU2NyaXB0IGRlYnVnZ2VyIHNob3VsZCB1c2UgZnVuY3Rpb24uZGlzcGxheU5hbWUgYXMgdGhl
IGZ1bmN0aW9uJ3MgbmFtZSBpbiB0aGUgY2FsbCBzdGFjaworICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDY3PgorICAgICAgICAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpm
dW5jdGlvbk5hbWUpOiBVc2UgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSB3aGljaCB0YWtlcyBpbnRv
IGFjY291bnQgZGlzcGxheU5hbWUKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxT
dGFja1NpZGViYXJQYW5lLmpzOiBSZW1vdmUgInx8IGFub255bW91cyBmdW5jdGlvbiIgc2luY2Ug
aXQgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGp1c3QgbGlrZSBpbiBwcm9maWxlcworICAgICAgICAo
V2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorCiAy
MDA5LTA1LTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gJ1RoZSBCZWxseScgV2VpbmlnCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gNDMyMDIpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
YXRpYyBjb25zdCBjaGFyKiBBbm9ueW1vdXNGdW5jdGlvbiA9ICIoYW5vbnltb3VzIGZ1bmN0aW9u
KSI7CisgICAgCiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpKYXZhU2NyaXB0Q2FsbEZyYW1lKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgUGFzc1JlZlB0cjxKYXZhU2Ny
aXB0Q2FsbEZyYW1lPiBjYWxsZXIsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKICAgICA6
IG1fZGVidWdnZXJDYWxsRnJhbWUoZGVidWdnZXJDYWxsRnJhbWUpCiAgICAgLCBtX2NhbGxlcihj
YWxsZXIpCkBAIC02NCwxMSArNjYsMTEgQEAgU3RyaW5nIEphdmFTY3JpcHRDYWxsRnJhbWU6OmZ1
bmN0aW9uTmFtZQogewogICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9pc1ZhbGlk
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25O
YW1lID0gbV9kZWJ1Z2dlckNhbGxGcmFtZS5mdW5jdGlvbk5hbWUoKTsKLSAgICBpZiAoIWZ1bmN0
aW9uTmFtZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiAqZnVuY3Rpb25O
YW1lOworICAgICAgICByZXR1cm4gQW5vbnltb3VzRnVuY3Rpb247CisgICAgY29uc3QgVVN0cmlu
ZyBmdW5jdGlvbk5hbWUgPSBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmNhbGN1bGF0ZWRGdW5jdGlvbk5h
bWUoKTsKKyAgICBpZiAoZnVuY3Rpb25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEFu
b255bW91c0Z1bmN0aW9uOworICAgIHJldHVybiBmdW5jdGlvbk5hbWU7CiB9CiAKIERlYnVnZ2Vy
Q2FsbEZyYW1lOjpUeXBlIEphdmFTY3JpcHRDYWxsRnJhbWU6OnR5cGUoKSBjb25zdApJbmRleDog
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFu
ZS5qcwkocmV2aXNpb24gNDMyMDIpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2Fs
bFN0YWNrU2lkZWJhclBhbmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgV2Vi
SW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdAogICAgICAgICBkbyB7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGNhbGxGcmFtZS50eXBlKSB7CiAgICAgICAgICAgICBjYXNlICJmdW5j
dGlvbiI6Ci0gICAgICAgICAgICAgICAgdGl0bGUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAg
ICAgICAgICB0aXRsZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlICJwcm9ncmFtIjoKICAgICAgICAgICAgICAgICB0aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7Cg==
</data>
<flag name="review"
          id="15056"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30011</attachid>
            <date>2009-05-04 22:44:49 -0700</date>
            <delta_ts>2009-05-04 23:04:49 -0700</delta_ts>
            <desc>Removed const, put anonymous string back in js</desc>
            <filename>debugger.patch</filename>
            <type>text/plain</type>
            <size>4969</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzMjA0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMDQgIEZyYW5jaXNj
byBUb2xtYXNreSAgPGZyYW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgQlVHIDI1NDY3
OiBKYXZhU2NyaXB0IGRlYnVnZ2VyIHNob3VsZCB1c2UgZnVuY3Rpb24uZGlzcGxheU5hbWUgYXMg
dGhlIGZ1bmN0aW9uJ3MgbmFtZSBpbiB0aGUgY2FsbCBzdGFjaworICAgICAgICA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDY3PgorICAgICAgICAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6IEFkZGVkIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHA6IEFkZGVkIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUgdG8gbWF0Y2gg
ZXhpc3Rpbmcgb25lIGluIFByb2ZpbGVOb2RlLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6Y2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuaDogQWRkZWQgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSB0byBtYXRjaCBleGlz
dGluZyBvbmUgaW4gUHJvZmlsZU5vZGUuCisKIDIwMDktMDUtMDMgIFN0ZXZlIEZhbGtlbmJ1cmcg
IDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeC4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDQzMjAyKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjgsNiArMzI4LDcg
QEAgX19aTkszSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTZpc1ZhcmlhYmxlTwogX19aTkszSlNDMTZK
U1ZhcmlhYmxlT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0pTQzE3RGVidWdnZXJDYWxsRnJhbWUxMHRoaXNPYmpl
Y3RFdgogX19aTkszSlNDMTdEZWJ1Z2dlckNhbGxGcmFtZTEyZnVuY3Rpb25OYW1lRXYKK19fWk5L
M0pTQzE3RGVidWdnZXJDYWxsRnJhbWUyMmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWVFdgogX19aTksz
SlNDMTdEZWJ1Z2dlckNhbGxGcmFtZTR0eXBlRXYKIF9fWk5LM0pTQzE3RGVidWdnZXJDYWxsRnJh
bWU4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VSTlNfN0pTVmFsdWVFCiBfX1pOSzNKU0M0SGVhcDEw
c3RhdGlzdGljc0V2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCShyZXZpc2lvbiA0MzIwMikKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTcgQEAg
Y29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gJmZ1bmN0aW9uLT5uYW1lKCZtX2NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
KTsKIH0KKyAgICAKK1VTdHJpbmcgRGVidWdnZXJDYWxsRnJhbWU6OmNhbGN1bGF0ZWRGdW5jdGlv
bk5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHN0YXRpY19j
YXN0PEpTRnVuY3Rpb24qPihtX2NhbGxGcmFtZS0+Y2FsbGVlKCkpOworICAgIGlmICghZnVuY3Rp
b24pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRlZERp
c3BsYXlOYW1lKCZtX2NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKK30KIAogRGVidWdnZXJDYWxs
RnJhbWU6OlR5cGUgRGVidWdnZXJDYWxsRnJhbWU6OnR5cGUoKSBjb25zdAogewpJbmRleDogSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiA0MzIw
MikKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJh
bWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsgfQogICAgICAgICBjb25zdCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7
IH0KICAgICAgICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAg
IFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBUeXBlIHR5
cGUoKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKICAgICAg
ICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBj
b25zdDsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiA0MzIwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMDQgIEZyYW5jaXNjbyBUb2xtYXNreSAgPGZy
YW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgQlVHIDI1NDY3OiBKYXZhU2NyaXB0IGRl
YnVnZ2VyIHNob3VsZCB1c2UgZnVuY3Rpb24uZGlzcGxheU5hbWUgYXMgdGhlIGZ1bmN0aW9uJ3Mg
bmFtZSBpbiB0aGUgY2FsbCBzdGFjaworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI1NDY3PgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUp
OiBVc2UgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSB3aGljaCB0YWtlcyBpbnRvIGFjY291bnQgZGlz
cGxheU5hbWUKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQ
YW5lLmpzOiBSZW1vdmUgInx8IGFub255bW91cyBmdW5jdGlvbiIgc2luY2UgaXQgaXMgaGFuZGxl
ZCBpbnRlcm5hbGx5IGp1c3QgbGlrZSBpbiBwcm9maWxlcworICAgICAgICAoV2ViSW5zcGVjdG9y
LkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorCiAyMDA5LTA1LTA0ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
YW0gJ1RoZSBCZWxseScgV2VpbmlnCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gNDMyMDIpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCisgICAgCiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjpKYXZhU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiBkZWJ1Z2dlckNhbGxGcmFtZSwgUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBjYWxs
ZXIsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKICAgICA6IG1fZGVidWdnZXJDYWxsRnJh
bWUoZGVidWdnZXJDYWxsRnJhbWUpCiAgICAgLCBtX2NhbGxlcihjYWxsZXIpCkBAIC02NSwxMCAr
NjUsMTAgQEAgU3RyaW5nIEphdmFTY3JpcHRDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZQogICAgIEFT
U0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lID0gbV9kZWJ1Z2dlckNhbGxG
cmFtZS5mdW5jdGlvbk5hbWUoKTsKLSAgICBpZiAoIWZ1bmN0aW9uTmFtZSkKKyAgICBVU3RyaW5n
IGZ1bmN0aW9uTmFtZSA9IG1fZGVidWdnZXJDYWxsRnJhbWUuY2FsY3VsYXRlZEZ1bmN0aW9uTmFt
ZSgpOworICAgIGlmIChmdW5jdGlvbk5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuICpmdW5jdGlvbk5hbWU7CisgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTsKIH0KIAogRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgSmF2YVNjcmlwdENhbGxGcmFtZTo6dHlw
ZSgpIGNvbnN0Cg==
</data>
<flag name="review"
          id="15057"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>