• fschneider@chromium.org's avatar
    Fast compiler support for regexp literals. · ee9d2d6c
    fschneider@chromium.org authored
    For .result = /abc.*/g we generate the following IA-32 code:
    
       ...
       mov ebx,[edi+0x17]
       mov eax,[ebx+0xb]
       cmp eax, 0xf5d0e135         ;; object: 0xf5d0e135 <undefined>
       jnz done
       push ebx
       push 0x2
       push 0xf5d13805             ;; object: 0xf5d13805 <String[5]: abc.*>
       push 0xf5d13815             ;; object: 0xf5d13815 <String[1]: g>
       call RuntimeStub_MaterializeRegExpLiteral
     done:
       push eax
       pop [ebp+0xf4]
       ...
    
    This is very similar to the code previously generated except we do not 
    generate deferred code for the case where we call the runtime.
    
    On ARM we use the stm instruction to make pushing the arguments more compact.
    
    Review URL: http://codereview.chromium.org/300037
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    ee9d2d6c
fast-codegen-x64.cc 12.9 KB