1. 22 Mar, 2012 1 commit
  2. 12 Mar, 2012 1 commit
  3. 09 Mar, 2012 2 commits
  4. 01 Mar, 2012 1 commit
  5. 28 Feb, 2012 2 commits
  6. 22 Feb, 2012 1 commit
    • 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
  7. 16 Feb, 2012 1 commit
  8. 14 Feb, 2012 1 commit
  9. 31 Jan, 2012 1 commit
  10. 30 Jan, 2012 1 commit
  11. 11 Jan, 2012 1 commit
  12. 20 Dec, 2011 1 commit
  13. 06 Dec, 2011 1 commit
  14. 24 Nov, 2011 2 commits
    • keuchel@chromium.org's avatar
      Introduce extended mode. · 1e9a7267
      keuchel@chromium.org authored
      This CL introduces a third mode next to the non-strict
      (henceforth called 'classic mode') and 'strict mode'
      which is called 'extended mode' as in the current
      ES.next specification drafts. The extended mode is based on
      the 'strict mode' and adds new functionality to it. This
      means that most of the semantics of these two modes
      coincide.
      
      The 'extended mode' is entered instead of the 'strict mode'
      during parsing when using the 'strict mode' directive
      "use strict" and when the the harmony-scoping flag is
      active. This should be changed once it is fully specified how the 'extended mode' is entered.
      
      This change introduces a new 3 valued enum LanguageMode
      (see globals.h) corresponding to the modes which is mostly
      used by the frontend code. This includes the following
      components:
      * (Pre)Parser
      * Compiler
      * SharedFunctionInfo, Scope and ScopeInfo
      * runtime functions: StoreContextSlot,
        ResolvePossiblyDirectEval, InitializeVarGlobal,
        DeclareGlobals
      
      The old enum StrictModeFlag is still used in the backend
      when the distinction between the 'strict mode' and the 'extended mode' does not matter. This includes:
      * SetProperty runtime function, Delete builtin
      * StoreIC and KeyedStoreIC
      * StubCache
      
      Review URL: http://codereview.chromium.org/8417035
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      1e9a7267
    • mstarzinger@chromium.org's avatar
      Implement crankshaft support for nested object literals. · 7e7d4dfd
      mstarzinger@chromium.org authored
      This generates optimized code for deep-copying of nested object literal
      boilerplates which are statically known. Most of the boilerplates have
      already been generated at crankshaft time, so this optimization should
      kick in for virtually every object literal. Only nested object literal
      graphs up to a certain depth and containing up to a certain total number
      of properties are considered for this optimization. This will prevent
      explosion of code size due to large object literals (e.g. eval on JSON).
      Improves splay performance because object literals are created often.
      
      R=fschneider@chromium.org
      
      Review URL: http://codereview.chromium.org/8640001
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      7e7d4dfd
  15. 17 Nov, 2011 1 commit
  16. 08 Nov, 2011 3 commits
  17. 31 Oct, 2011 1 commit
  18. 24 Oct, 2011 1 commit
  19. 19 Oct, 2011 2 commits
  20. 14 Oct, 2011 1 commit
  21. 21 Sep, 2011 1 commit
  22. 20 Sep, 2011 1 commit
  23. 19 Sep, 2011 2 commits
    • vegorov@chromium.org's avatar
    • svenpanne@chromium.org's avatar
      Unify the handling of comparinsons against null and undefined. · cf63503c
      svenpanne@chromium.org authored
      Although this patch is not small, most parts of it are rather mechanical:
      
       * First of all, the concept of a 'nil-like' value is introduced, which can be
         null or undefined. They are treated symmetrically regarding comparisons, so
         it makes sense to handle them in a uniform manner. It is a mystery why
         JavaScript defines two of those beasts, when even *one* is a design wart...
      
       * Extended and renamed a few things which now handle undefined in addition to
         null.
      
       * Made the parts of the full code generator and the hydrogen generation which
         deal with comparisons a bit more similar regarding their handling of special
         cases.
      
       * Refactored the syntactical detection of special cases for comparisons,
         hopefully making them a bit more readable and less copy-n-paste-oriented.
         Things like this should really be a one-liner in any sane programming
         language... :-P
      
       * Cut down the length of the argument lists of a few functions to something
         less insane, making them more easily understandable locally. This involves
         minor code duplication, but this was a good tradeoff and can be remedied
         later if necessary.
      
       * Replaced some boolean arguments with more readable enums.
      
       * Fixed a TODO: Values which are definitely a Smi or unboxed can never be equal
         to null or undefined.
      Review URL: http://codereview.chromium.org/7918012
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      cf63503c
  24. 09 Sep, 2011 1 commit
  25. 16 Aug, 2011 1 commit
  26. 11 Aug, 2011 1 commit
  27. 19 Jul, 2011 1 commit
  28. 30 Jun, 2011 1 commit
  29. 27 Jun, 2011 1 commit
  30. 21 Jun, 2011 1 commit
  31. 20 Jun, 2011 1 commit
  32. 10 Jun, 2011 1 commit
  33. 09 Jun, 2011 1 commit