1. 15 Aug, 2012 1 commit
  2. 10 Aug, 2012 2 commits
  3. 27 Jun, 2012 2 commits
  4. 14 Jun, 2012 1 commit
  5. 04 May, 2012 1 commit
  6. 20 Apr, 2012 1 commit
  7. 19 Apr, 2012 1 commit
  8. 16 Apr, 2012 1 commit
  9. 11 Apr, 2012 1 commit
  10. 23 Mar, 2012 1 commit
  11. 22 Mar, 2012 1 commit
  12. 20 Mar, 2012 1 commit
  13. 13 Mar, 2012 1 commit
  14. 12 Mar, 2012 1 commit
  15. 05 Mar, 2012 1 commit
  16. 01 Mar, 2012 2 commits
  17. 28 Feb, 2012 1 commit
  18. 27 Feb, 2012 1 commit
  19. 23 Feb, 2012 2 commits
  20. 22 Feb, 2012 2 commits
    • vegorov@chromium.org's avatar
      Support OSR in for-in loops. · 5bb6a839
      vegorov@chromium.org authored
      Modify PreProcessOsrEntry to work with OSR entries that have non-empty expression stack.
      
      Modify graph builder to take for-in state from environment instead of directly referencing emitted instructions.
      
      Extend %OptimizeFunctionOnNextCall with an argument to force OSR to make writing OSR tests easier: %OptimizeFunctionOnNextCall(f, "osr").
      
      R=fschneider@chromium.org
      TEST=test/mjsunit/compiler/optimized-for-in.js
      
      Review URL: https://chromiumcodereview.appspot.com/9431030
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10796 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      5bb6a839
    • vegorov@chromium.org's avatar
      Support fast case for-in in Crankshaft. · 6703ddda
      vegorov@chromium.org authored
      Only JSObject enumerables with enum cache (fast case properties, no interceptors, no enumerable properties on the prototype) are supported.
      
      HLoadKeyedGeneric with keys produced by for-in enumeration are recognized and rewritten into direct property load by index. For this enum-cache was extended to store property indices in a separate array (see handles.cc).
      
      New hydrogen instructions:
      
      - HForInPrepareMap: checks for-in fast case preconditions and returns map that contains enum-cache;
      - HForInCacheArray: extracts enum-cache array from the map;
      - HCheckMapValue: map check with HValue map instead of immediate;
      - HLoadFieldByIndex: load fast property by it's index, positive indexes denote in-object properties, negative - out of object properties;
      
      Changed hydrogen instructions:
      
      - HLoadKeyedFastElement: added hole check suppression for loads from internal FixedArrays that are knows to have no holes inside.
      
      R=fschneider@chromium.org
      BUG=
      TEST=
      
      Review URL: https://chromiumcodereview.appspot.com/9425045
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      6703ddda
  21. 16 Feb, 2012 3 commits
  22. 14 Feb, 2012 1 commit
  23. 08 Feb, 2012 1 commit
  24. 24 Jan, 2012 1 commit
  25. 07 Dec, 2011 1 commit
  26. 16 Nov, 2011 1 commit
    • fschneider@chromium.org's avatar
      Fix lazy deoptimization at HInvokeFunction and enable target-recording call-function stub. · 84805694
      fschneider@chromium.org authored
      Changes the way we do lazy deoptimization:
      
      1. For side-effect instructions, we insert the lazy-deopt call at
      the following LLazyBailout instruction.
      
           CALL
           GAP
           LAZY-BAILOUT ==> lazy-deopt-call
      
      2. For other instructions (StackCheck) we insert it right after the
      instruction since the deopt targets an earlier deoptimization environment.
      
         STACK-CHECK
         GAP ==> lazy-deopt-call
      
      The pc of the lazy-deopt call that will be patched in is recorded in the
      deoptimization input data. Each Lithium instruction can have 0..n safepoints.
      All safepoints get the deoptimization index of the associated LAZY-BAILOUT
      instruction. On lazy deoptimization we use the return-pc to find the safepoint.
      The safepoint tells us the deoptimization index, which in turn finds us the
      PC where to insert the lazy-deopt-call.
      
      Additional changes:
       * RegExpLiteral marked it as having side-effects so that it 
         gets an explicitlazy-bailout instruction (instead of
         treating it specially like stack-checks)
       * Enable target recording CallFunctionStub to achieve
         more inlining on optimized code.
      
      BUG=v8:1789
      TEST=jslint and uglify run without crashing, mjsunit/compiler/regress-lazy-deopt.js
      Review URL: http://codereview.chromium.org/8492004
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10006 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      84805694
  27. 14 Nov, 2011 1 commit
  28. 08 Nov, 2011 1 commit
    • keuchel@chromium.org's avatar
      Reapply r9870 "Remove some initialization checks based on source positions.". · 72dba271
      keuchel@chromium.org authored
      This reverts r9896 "Revert r9870 due to browser-test failures." See below for
      the diff from the previous version for the ia32 platform. The code for other
      platforms has been changed accordingly.
      
      TEST=mjsunit/compiler/lazy-const-lookup.js
      
      diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
      index 2cbf518..1990f2f 100644
      --- a/src/ia32/full-codegen-ia32.cc
      +++ b/src/ia32/full-codegen-ia32.cc
      @@ -1258,13 +1258,17 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
               // binding is initialized:
               //   function() { f(); let x = 1; function f() { x = 2; } }
               //
      -        // Check that we always have valid source position.
      -        ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
      -        ASSERT(proxy->position() != RelocInfo::kNoPosition);
      -        bool skip_init_check =
      -            var->mode() != CONST &&
      -            var->scope()->DeclarationScope() == scope()->DeclarationScope() &&
      -            var->initializer_position() < proxy->position();
      +        bool skip_init_check;
      +        if (var->scope()->DeclarationScope() != scope()->DeclarationScope()) {
      +          skip_init_check = false;
      +        } else {
      +          // Check that we always have valid source position.
      +          ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
      +          ASSERT(proxy->position() != RelocInfo::kNoPosition);
      +          skip_init_check = var->mode() != CONST &&
      +              var->initializer_position() < proxy->position();
      +        }
      +
               if (!skip_init_check) {
                 // Let and const need a read barrier.
                 Label done;
      
      Review URL: http://codereview.chromium.org/8479034
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      72dba271
  29. 26 Oct, 2011 1 commit
  30. 24 Oct, 2011 2 commits
  31. 17 Oct, 2011 1 commit
  32. 20 Sep, 2011 1 commit