1. 16 Dec, 2009 1 commit
  2. 14 Dec, 2009 1 commit
  3. 11 Dec, 2009 1 commit
  4. 10 Dec, 2009 2 commits
  5. 07 Dec, 2009 1 commit
  6. 04 Dec, 2009 1 commit
  7. 25 Nov, 2009 1 commit
  8. 13 Nov, 2009 1 commit
  9. 10 Nov, 2009 1 commit
  10. 09 Nov, 2009 1 commit
  11. 05 Nov, 2009 1 commit
  12. 04 Nov, 2009 2 commits
  13. 03 Nov, 2009 1 commit
  14. 02 Nov, 2009 6 commits
  15. 30 Oct, 2009 4 commits
  16. 29 Oct, 2009 2 commits
  17. 27 Oct, 2009 4 commits
  18. 26 Oct, 2009 1 commit
  19. 23 Oct, 2009 1 commit
    • kmillikin@chromium.org's avatar
      Simple toplevel code generator support for short-circuited boolean OR · e82a07c0
      kmillikin@chromium.org authored
      in a non-test (ie, value or effect) context.  (It is implicitly not in
      a test context because the code generator does not support expressions
      in a test context yet.)
      
      Compilation is essentially the same as in the optimized code
      generator.  The expression (e0 || e1) is compiled as if it were
      (let (temp = e0) temp ? temp : e1).
      
      On ia32 and x64 a single shared ToBoolean stub is used to convert a
      value to a flag.  The inlined checks assumed by the stub are reordered
      to compare to undefined (the common case in toplevel code?) first.  On
      ARM a call to the runtime is used.  In the interest of code size no
      checks are yet inlined on ARM.
      
      Review URL: http://codereview.chromium.org/334006
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      e82a07c0
  20. 22 Oct, 2009 2 commits
  21. 21 Oct, 2009 2 commits
  22. 19 Oct, 2009 1 commit
    • kmillikin@chromium.org's avatar
      Recognize in the fast-mode code generator when a subexpression is a · 846688f8
      kmillikin@chromium.org authored
      constant known at compile time.  Do not ever use the stack to
      materialize (non-function-argument) constants.  Currently, constants
      are only the non-materialized, non-function literals in the AST.
      
      It is a known issue that there is no test coverage for the cases of
      assigning a non-literal to a variable and returning a literal.  Those
      code paths are unreachable and tests will be added when they become
      reachable.
      
      For the code '.result = true', we had previously on ia32:
      
      27  push 0xf5c28161             ;; object: 0xf5c28161 <true>
      32  pop [ebp+0xf4]
      
      Now:
      
      27  mov eax,0xf5c26161          ;; object: 0xf5c26161 <true>
      32  mov [ebp+0xf4],eax
      
      ======== We had previously on x64:
      
      25  movq r10,0x7fb8c2f78199    ;; object: 0x7fb8c2f78199 <true>
      35  push r10
      37  pop [rbp-0x18]
      
      Now:
      
      25  movq r10,0x7fb131386199    ;; object: 0x7fb131386199 <true>
      35  movq [rbp-0x18],r10
      
      The generated code for ARM did not include the extra memory traffic.
      It was already eliminated by the ARM assembler's push/pop elimination.
      
      Review URL: http://codereview.chromium.org/300003
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3088 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      846688f8
  23. 16 Oct, 2009 1 commit
  24. 15 Oct, 2009 1 commit
    • kmillikin@chromium.org's avatar
      Added first support for tracking locations of expressions in the · 339e49c0
      kmillikin@chromium.org authored
      fast-mode code generator.
      
      AST expression nodes are annotated with a location when doing the
      initial syntactic check of the AST.  In the current implementation,
      expression locations are 'temporary' (ie, allocated to the stack) or
      'nowhere' (ie, the expression's value is not needed though it must be
      evaluated for side effects).
      
      For the assignment '.result = true' on IA32, we had before (with the
      true value already on top of the stack):
      
      32  mov eax,[esp]
      35  mov [ebp+0xf4],eax
      38  pop eax
      
      Now:
      
      32  pop [ebp+0xf4]
      
      
      ======== On x64, before:
      
      37  movq rax,[rsp]
      41  movq [rbp-0x18],rax
      45  pop rax
      
      Now:
      
      37  pop [rbp-0x18]
      
      
      ======== On ARM, before (with the true value in register ip):
      
      36  str ip, [sp, #-4]!
      40  ldr ip, [sp, #+0]
      44  str ip, [fp, #-12]
      48  add sp, sp, #4
      
      Now:
      
      36  str ip, [fp, #-12]
      
      
      Review URL: http://codereview.chromium.org/267118
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      339e49c0