• vogelheim@chromium.org's avatar
    Change ScriptCompiler::CompileOptions to allow for two 'cache' modes · a42612b4
    vogelheim@chromium.org authored
    (parser or code) and to be explicit about cache consumption or production
    (rather than making presence of cached_data imply one or the other.)
    
    Also add a --cache flag to d8, to allow testing the functionality.
    
    -----------------------------
    API change
    
    Reason: Currently, V8 supports a 'parser cache' for repeatedly executing the same script. We'd like to add a 2nd mode that would cache code, and would like to let the embedder decide which mode they chose (if any).
    
    Note: Previously, the 'use cached data' property was implied by the presence of the cached data itself. (That is, kNoCompileOptions and source->cached_data != NULL.) That is no longer sufficient, since the presence of data is no longer sufficient to determine /which kind/ of data is present.
    
    Changes from old behaviour:
    
    - If you previously didn't use caching, nothing changes.
    Example:
      v8::CompileUnbound(isolate, source, kNoCompileOptions);
    
    - If you previously used caching, it worked like this:
    
      - 1st run:
      v8::CompileUnbound(isolate, source, kProduceToCache);
      Then, source->cached_data would contain the
      data-to-be cached. This remains the same, except you
      need to tell V8 which type of data you want.
      v8::CompileUnbound(isolate, source, kProduceParserCache);
    
      - 2nd run:
      v8::CompileUnbound(isolate, source, kNoCompileOptions);
      with source->cached_data set to the data you received in
      the first run. This will now ignore the cached data, and
      you need to explicitly tell V8 to use it:
      v8::CompileUnbound(isolate, source, kConsumeParserCache);
    -----------------------------
    
    BUG=
    R=marja@chromium.org, yangguo@chromium.org
    
    Review URL: https://codereview.chromium.org/389573006
    
    git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22431 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    a42612b4
d8.cc 54.2 KB