Skip to content
  1. Sep 03, 2010
  2. Apr 16, 2010
  3. Apr 15, 2010
  4. Apr 09, 2010
  5. Mar 06, 2010
  6. Mar 05, 2010
  7. Feb 23, 2010
  8. Jan 02, 2010
  9. Sep 01, 2009
  10. Aug 28, 2009
  11. Aug 24, 2009
  12. Aug 20, 2009
  13. Mar 02, 2009
  14. Jan 24, 2008
  15. Jan 07, 2008
    • Gordon Henriksen's avatar
      With this patch, the LowerGC transformation becomes the · 6047b6e1
      Gordon Henriksen authored
      ShadowStackCollector, which additionally has reduced overhead with
      no sacrifice in portability.
      
      Considering a function @fun with 8 loop-local roots,
      ShadowStackCollector introduces the following overhead
      (x86):
      
      ; shadowstack prologue
              movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
              movl    (%eax), %ecx
              movl    $___gc_fun, 20(%esp)
              movl    $0, 24(%esp)
              movl    $0, 28(%esp)
              movl    $0, 32(%esp)
              movl    $0, 36(%esp)
              movl    $0, 40(%esp)
              movl    $0, 44(%esp)
              movl    $0, 48(%esp)
              movl    $0, 52(%esp)
              movl    %ecx, 16(%esp)
              leal    16(%esp), %ecx
              movl    %ecx, (%eax)
      
      ; shadowstack loop overhead
              (none)
      
      ; shadowstack epilogue
              movl    48(%esp), %edx
              movl    %edx, (%ecx)
      
      ; shadowstack metadata
              .align  3
      ___gc_fun:                              # __gc_fun
              .long   8
              .space  4
      
      In comparison to LowerGC:
      
      ; lowergc prologue
              movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
              movl    (%eax), %ecx
              movl    %ecx, 48(%esp)
              movl    $8, 52(%esp)
              movl    $0, 60(%esp)
              movl    $0, 56(%esp)
              movl    $0, 68(%esp)
              movl    $0, 64(%esp)
              movl    $0, 76(%esp)
              movl    $0, 72(%esp)
              movl    $0, 84(%esp)
              movl    $0, 80(%esp)
              movl    $0, 92(%esp)
              movl    $0, 88(%esp)
              movl    $0, 100(%esp)
              movl    $0, 96(%esp)
              movl    $0, 108(%esp)
              movl    $0, 104(%esp)
              movl    $0, 116(%esp)
              movl    $0, 112(%esp)
      
      ; lowergc loop overhead
              leal    44(%esp), %eax
              movl    %eax, 56(%esp)
              leal    40(%esp), %eax
              movl    %eax, 64(%esp)
              leal    36(%esp), %eax
              movl    %eax, 72(%esp)
              leal    32(%esp), %eax
              movl    %eax, 80(%esp)
              leal    28(%esp), %eax
              movl    %eax, 88(%esp)
              leal    24(%esp), %eax
              movl    %eax, 96(%esp)
              leal    20(%esp), %eax
              movl    %eax, 104(%esp)
              leal    16(%esp), %eax
              movl    %eax, 112(%esp)
      
      ; lowergc epilogue
              movl    48(%esp), %edx
              movl    %edx, (%ecx)
      
      ; lowergc metadata
              (none)
      
      llvm-svn: 45670
      6047b6e1
  16. Dec 29, 2007
  17. Sep 27, 2007
  18. Sep 11, 2007
  19. Aug 22, 2007
  20. Feb 23, 2007
  21. Jan 07, 2007
  22. Nov 17, 2006
  23. Nov 03, 2006
  24. Nov 02, 2006
    • Reid Spencer's avatar
      For PR786: · de46e484
      Reid Spencer authored
      Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
      fall out by removing unused variables. Remaining warnings have to do with
      unused functions (I didn't want to delete code without review) and unused
      variables in generated code. Maintainers should clean up the remaining
      issues when they see them. All changes pass DejaGnu tests and Olden.
      
      llvm-svn: 31380
      de46e484
  25. Aug 08, 2006
  26. Jul 28, 2006
  27. Jun 01, 2006
Loading