<?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>132683</bug_id>
          
          <creation_ts>2014-05-08 08:33:56 -0700</creation_ts>
          <short_desc>[Win] Crash when enabling DFG JIT.</short_desc>
          <delta_ts>2014-05-09 09:30:14 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>peavo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007624</commentid>
    <comment_count>0</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-05-08 08:33:56 -0700</bug_when>
    <thetext>I&apos;m getting some crashes when running with DFG enabled.

See bug 121001 for further details, the cause and type of fix are the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007629</commentid>
    <comment_count>1</comment_count>
      <attachid>231070</attachid>
    <who name="">peavo</who>
    <bug_when>2014-05-08 08:39:32 -0700</bug_when>
    <thetext>Created attachment 231070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007679</commentid>
    <comment_count>2</comment_count>
      <attachid>231070</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-08 11:02:01 -0700</bug_when>
    <thetext>Comment on attachment 231070
Patch

How does regT0, which is an enumerated constant, alias to void*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007715</commentid>
    <comment_count>3</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-05-08 12:17:50 -0700</bug_when>
    <thetext>I&apos;ve tested the following code with MSVC which demonstrates the problem:

class A
{
public:
    A(int i) {}
};

void testfunc(void* p)
{
}

void testfunc(A a)
{
}

testfunc(0); // Invokes testfunc(void* p)
testfunc(1); // Invokes testfunc(A a)

When calling testfunc with 0, testfunc(void* p) is called.
When calling testfunc with 1, testfunc(A a) is called.

I&apos;m not sure what the standard says here, it might be a compiler bug.
I assume GCC will call testfunc(A a) in both cases here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007763</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-08 14:03:02 -0700</bug_when>
    <thetext>Answering my own question, a RegisterID on x86 is an enumerated constant:

namespace X86Registers {
    typedef enum {
        eax,
        ecx,
        edx,
        ebx,
        esp,
        ebp,
        esi,
        edi,

#if CPU(X86_64)
        r8,
        r9,
        r10,
        r11,
        r12,
        r13,
        r14,
        r15,
#endif
    } RegisterID;

Can you test an enum? Do enumerated constants actually alias to void*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007774</commentid>
    <comment_count>5</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-05-08 14:36:16 -0700</bug_when>
    <thetext>Tried to replicate the actual code more accurately, and tested with an enum.

I got the same results, with argument regT0, testfunc(void* p) is called, and with argument regT1, testfunc(A a) is called.


namespace X86Registers {
    typedef enum {
        eax,
        ecx,
        edx,
        ebx,
        esp,
        ebp,
        esi,
        edi,
    } RegisterID;
}

typedef X86Registers::RegisterID GPRReg;

typedef X86Registers::RegisterID RegisterID;

static const GPRReg regT0 = X86Registers::eax;
static const GPRReg regT1 = X86Registers::edx;

class A
{
public:
    A(RegisterID i) {}
};

void testfunc(void* p)
{
}

void testfunc(A a)
{
}

testfunc(regT0); // Invokes testfunc(void* p)
testfunc(regT1); // Invokes testfunc(A a)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007798</commentid>
    <comment_count>6</comment_count>
      <attachid>231070</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-08 16:07:36 -0700</bug_when>
    <thetext>Comment on attachment 231070
Patch

r=me

It&apos;s kind of a shame that an enum aliases to void* -- that&apos;s pretty easy to get wrong.

Perhaps you can fix this in a follow-up patch by changing the void* inputs to ImmPtr inputs, or similar.

I think you should pursue a follow-up patch that changes void* input to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007986</commentid>
    <comment_count>7</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-05-09 07:51:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 231070 [details])
&gt; r=me
&gt; 

Thanks!

&gt; It&apos;s kind of a shame that an enum aliases to void* -- that&apos;s pretty easy to get wrong.
&gt; 
&gt; Perhaps you can fix this in a follow-up patch by changing the void* inputs to ImmPtr inputs, or similar.
&gt; 
&gt; I think you should pursue a follow-up patch that changes void* input to

Sounds good, I will look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008001</commentid>
    <comment_count>8</comment_count>
      <attachid>231070</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-09 09:30:11 -0700</bug_when>
    <thetext>Comment on attachment 231070
Patch

Clearing flags on attachment: 231070

Committed r168535: &lt;http://trac.webkit.org/changeset/168535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008002</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-09 09:30:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231070</attachid>
            <date>2014-05-08 08:39:32 -0700</date>
            <delta_ts>2014-05-09 09:30:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132683-20140508173908.patch</filename>
            <type>text/plain</type>
            <size>3178</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NDcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA1LTA4ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW5dIENyYXNoIHdoZW4gZW5hYmxpbmcgREZHIEpJVC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjY4MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uIHdpbmRvd3MsIHVzaW5nIHJlZ2lz
dGVyIEdQUkluZm86OnJlZ1QwIGFzIHBhcmFtZXRlciB0byBlLmcuIEpJVDo6c3RvcmVEb3VibGUo
Li4uLCBHUFJJbmZvOjpyZWdUMCkpLAorICAgICAgICByZXN1bHRzIGluIGEgY2FsbCB0byBKSVQ6
OnN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpLAorICAg
ICAgICB3aGVyZSB0aGUgYWRkcmVzcyBwYXJhbWV0ZXIgZ2V0cyB0aGUgdmFsdWUgb2YgR1BSSW5m
bzo6cmVnVDAsIHdoaWNoIGlzIDAgKGVheCBvbiBXaW5kb3dzKS4KKyAgICAgICAgVGhpcyBjYXVz
ZXMgdGhlIHJlZ2lzdGVyIHRvIGJlIHdyaXR0ZW4gdG8gYWRkcmVzcyAwLCBoZW5jZSB0aGUgY3Jh
c2guCisKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOiBVc2UgYWRkcmVzcyBp
biByZWdUMCBhcyBwYXJhbWV0ZXIuCisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KTog
RGl0dG8uCisKIDIwMTQtMDUtMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjg0NTEuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAkocmV2aXNpb24gMTY4NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcs
NyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QKICAgICAgICAgY2Fz
ZSBJbkZQUjoKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsg
aW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQ
UkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRE
b3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsK
ICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQu
Y3BwCShyZXZpc2lvbiAxNjg0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZv
aWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdAogICAgICAgICBzd2l0Y2ggKHJl
Y292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgSW5GUFI6CiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShyZWNvdmVy
eS5mcHIoKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUo
cmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgpAQCAt
Mjk2LDcgKzI5Niw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdAog
ICAgICAgICBjYXNlIEluRlBSOgogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFj
azoKICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0Lmxv
YWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCks
IEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgbV9qaXQucHVyaWZ5TmFOKEZQUkluZm86
OmZwUmVnVDApOwogICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAs
IEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>