1. 12 Apr, 2013 1 commit
  2. 05 Apr, 2013 1 commit
    • mstarzinger@chromium.org's avatar
      Refactor parser mode configuration for correctness · d7167867
      mstarzinger@chromium.org authored
      This patch refactors the parser and preparser interface to be more
      readable and type-safe.  It has no behavior changes.
      
      Previously, parsers and preparsers were configured via bitfield called
      parser_flags in the Parser constructor, and flags in
      PreParser::PreParseProgram, ParserApi::Parse, and ParserApi::PreParse.
      This was error-prone in practice: six call sites passed incorrectly
      typed values to this interface (a boolean FLAG value, a boolean false
      and a boolean true value).  None of these errors were caught by the
      compiler because it's just an "int".
      
      The parser flags interface was also awkward because it encoded a
      language mode, but the language mode was only used to turn on harmony
      scoping or not -- it wasn't used to actually set the parser's language
      mode.
      
      Fundamentally these errors came in because of the desire for a
      procedural parser interface, in ParserApi.  Because we need to be able
      to configure the parser in various ways, the flags argument got added;
      but no one understood how to use the flags properly.  Also they were
      only used by constructors: callers packed bits, and the constructors
      unpacked them into booleans on the parser or preparser.
      
      The solution is to allow parser construction, configuration, and
      invocation to be separated.  This patch does that.
      
      It passes the existing tests.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/13450007
      Patch from Andy Wingo <wingo@igalia.com>.
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14151 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      d7167867
  3. 12 Mar, 2012 1 commit
  4. 01 Nov, 2011 1 commit
  5. 17 Oct, 2011 1 commit
  6. 08 Sep, 2011 1 commit
  7. 07 Sep, 2011 1 commit
  8. 16 Aug, 2011 1 commit
  9. 06 Jul, 2011 2 commits
  10. 01 Jul, 2011 2 commits
  11. 22 Jun, 2011 1 commit
  12. 21 Jun, 2011 1 commit
  13. 06 May, 2011 1 commit
  14. 12 Apr, 2011 1 commit
  15. 30 Mar, 2011 1 commit
  16. 29 Mar, 2011 1 commit
  17. 18 Mar, 2011 3 commits
  18. 14 Jan, 2011 1 commit
  19. 04 Jan, 2011 1 commit
  20. 08 Dec, 2010 1 commit
  21. 07 Dec, 2010 1 commit
  22. 29 Nov, 2010 1 commit