Coder Social home page Coder Social logo

replayio / chromium-v8 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from v8/v8

2.0 2.0 2.0 852.2 MB

The official mirror of the V8 Git repository

Home Page: https://chromium.googlesource.com/v8/v8.git

License: Other

Python 1.25% Makefile 0.01% JavaScript 26.78% HTML 0.14% CSS 0.02% C 0.16% C++ 71.09% Shell 0.06% Scheme 0.01% Batchfile 0.01% R 0.01% TypeScript 0.32% Assembly 0.01% Vim Script 0.01% Starlark 0.15%

chromium-v8's People

Contributors

ajklein avatar backes avatar bmeurer avatar camillobruni avatar danelphick avatar frankyftang avatar gahaas avatar georgneis avatar gsathya avatar hannespayer avatar hashseed avatar isheludko avatar jakobkummerow avatar jaro-sevcik avatar jeisinger avatar leszekswirski avatar manoskouk avatar marjakh avatar mi-ac avatar miladfarca avatar mlippautz avatar ngzhian avatar ripsawridge avatar rmcilroy avatar santiaboy avatar schuay avatar sigurdschneider avatar tebbi avatar ulan avatar verwaest avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

chromium-v8's Issues

Only emit record/replay bytecodes for the relevant scripts

We currently emit record/replay bytecodes for all scripts in the main thread's isolate, including scripts which are ignored during instrumentation. We need to only emit these bytecodes for scripts which participate in instrumentation, to clean up the semantics of the bytecodes and support optimizing them in the JIT (#4).

Replace source filter with a did-paint filter

Currently we have a way to limit the recordings we're actually interested in remembering based on a filter of the URLs used for sources in the process. This has been awkward for our current use cases, and for now it would be better to allow filtering interesting recordings based on whether the process did any painting.

Inconsistent calls to RecordReplayOnExceptionUnwind

When unwinding an exception the record/replay driver is notified, and these notifications need to happen at consistent places when recording vs. replaying. Currently we notify the driver on all calls to Runtime_UnwindAndFindExceptionHandler, but we've been seeing problems where the number of calls to this method vary when unwinding a given exception. This is probably due to different JIT behavior. The driver only needs to be notified when the exception is first thrown, so we should be able to deal with this by using the progress counter to detect when the handler is being used to unwind additional frames, and not call the driver in such cases.

Optimize record/replay bytecodes

The record/replay bytecodes (RecordReplayIncExecutionProgressCounter and RecordReplayInstrumentation[Generator]) are always compiled into calls into the runtime. On the simple benchmark below this leads to a 20x overhead when recording (30ms) vs. not recording (700ms). On gecko, where we optimize these bytecodes, the overhead is much less (65ms vs 75ms). We need to optimize how these bytecodes are compiled to avoid degrading JS performance excessively.

function foo() {
  const arr = [];
  for (let i = 0; i < 2000000; i++) {
    arr.push(i);
    arr.push(i + 1);
    arr.push(i + 2);
    arr.push(i + 3);
    arr.pop();
    arr.pop();
    arr.pop();
  }
}

Track generator ID using RecordReplayObjectId

We need to associate IDs with each generator object in order to support async stepping. Currently we do this by storing an integer in JSGeneratorObject which is accessed when starting/resuming generators, but the modification this makes to js-generator.tq seems to be causing frequent scavenger crashes. We have a separate, slower weak map from objects to IDs which we can use instead and avoid modifying this tq file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.