1. 27 Oct, 2009 1 commit
  2. 26 Oct, 2009 2 commits
  3. 21 Oct, 2009 1 commit
  4. 15 Oct, 2009 1 commit
  5. 14 Oct, 2009 1 commit
    • kmillikin@chromium.org's avatar
      Initial infrastructure for fast compilation of top-level code. The · f74e7235
      kmillikin@chromium.org authored
      fast code generator is optimized for compilation time and code size.
      
      Currently it is only implemented on IA32.  It is potentially triggered
      for any code in the global scope (including code eval'd in the global
      scope).  It performs a syntactic check and chooses to compile in fast
      mode if the AST contains only supported constructs and matches some
      other constraints.
      
      Initially supported constructs are
      
      * ExpressionStatement,
      * ReturnStatement,
      * VariableProxy (variable references) to parameters and
          stack-allocated locals,
      * Assignment with lhs a parameter or stack-allocated local, and
      * Literal
      
      This allows compilation of literals at the top level and not much
      else.
      
      All intermediate values are allocated to temporaries and the stack is
      used for all temporaries.  The extra memory traffic is a known issue.
      
      The code generated for 'true' is:
      
       0  push ebp
       1  mov ebp,esp
       3  push esi
       4  push edi
       5  push 0xf5cca135             ;; object: 0xf5cca135 <undefined>
      10  cmp esp,[0x8277efc]
      16  jnc 27  (0xf5cbbb1b)
      22  call 0xf5cac960             ;; code: STUB, StackCheck, minor: 0
      27  push 0xf5cca161             ;; object: 0xf5cca161 <true>
      32  mov eax,[esp]
      35  mov [ebp+0xf4],eax
      38  pop eax
      39  mov eax,[ebp+0xf4]
      42  mov esp,ebp                 ;; js return
      44  pop ebp
      45  ret 0x4
      48  mov eax,0xf5cca135          ;; object: 0xf5cca135 <undefined>
      53  mov esp,ebp                 ;; js return
      55  pop ebp
      56  ret 0x4
      
      Review URL: http://codereview.chromium.org/273050
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      f74e7235
  6. 13 Oct, 2009 1 commit
  7. 12 Oct, 2009 2 commits
  8. 28 Sep, 2009 1 commit
  9. 08 Sep, 2009 1 commit
  10. 19 Aug, 2009 1 commit
    • sgjesse@chromium.org's avatar
      Analyze functions for assignment to this properties. · 4e03645d
      sgjesse@chromium.org authored
      During parsing functions are analyzed for statements of the form this.x = ...;. These assignments are categorized in two types: simple and non simple. The simple ones are where the right hand side is known to be either a constant or an argument to the function. If a function only contains statements of this type the property names are collected and for the simple assignments the index of the argument or the constant value assigned are stored as well.
      
      When the initial map for a function is created and the function consists of only this type of assignemnts the initial map is created with a descriptor array describing these properties which will be known to always exist in an object created from the function.
      
      The information on this property assignments is not collected during pre-parsing so if compiling using pre-parse data these optimization hints are not available.
      
      Next step will be to use the information collected for the simple assignments to generate constructor code which will create and initialize the object from this information without calling the code for the function.
      Review URL: http://codereview.chromium.org/172088
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      4e03645d
  11. 14 Aug, 2009 1 commit
  12. 30 Jul, 2009 1 commit
  13. 29 Jun, 2009 2 commits
  14. 24 Jun, 2009 1 commit
  15. 16 Jun, 2009 1 commit
  16. 15 Jun, 2009 3 commits
  17. 08 Jun, 2009 1 commit
  18. 05 Jun, 2009 1 commit
    • kmillikin@chromium.org's avatar
      Simplify the processing of deferred code in the code generator. Our · bd82b972
      kmillikin@chromium.org authored
      deferred code snippets are highly stylized.  They always make a call
      to a stub or the runtime and then return.  This change takes advantage
      of that.
      
      Creating a deferred code object now captures a snapshot of the
      registers in the virtual frame.  The registers are automatically saved
      on entry to the deferred code and restored on exit.
      
      The clients of deferred code must ensure that there is no change to
      the registers in the virtual frame (eg, by allocating which can cause
      spilling) or to the stack pointer.  That is currently the case.
      
      As a separate change, I will add either code to verify this constraint
      or else code to forbid any frame effect.
      
      The deferred code itself does not use the virtual frame or register
      allocator (or even the code generator).  It is raw macro assembler
      code.
      Review URL: http://codereview.chromium.org/118226
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      bd82b972
  19. 27 May, 2009 2 commits
  20. 25 May, 2009 3 commits
  21. 18 May, 2009 2 commits
  22. 15 May, 2009 1 commit
  23. 14 May, 2009 2 commits
  24. 07 May, 2009 1 commit
  25. 20 Apr, 2009 1 commit
  26. 14 Apr, 2009 2 commits
  27. 02 Apr, 2009 1 commit
  28. 31 Mar, 2009 1 commit
  29. 20 Mar, 2009 1 commit