Skip to content

Upstreaming

QiuJi edited this page Mar 16, 2021 · 15 revisions

Upstreaming is complete. Below is left for reference

Our work on porting V8 to RISC-V is intended to be upstreamed to the core project. This page outlines the progress in making that happen.

We need to follow the guidelines laid out in Contributing to V8.

  • We have been communicating with team members from Google about this porting work. They are supportive of our work and eager to get it upstream.
  • All contributors to our repository have signed the Google Individual Contributor License Agreement
  • The presubmit script, git cl presubmit, runs successfully for our branch
    • It seems this tool was not running completely before
    • I have run it correctly now and resolved most issues in #301, which is pending review now merged
    • Issues #299 and #300 must also be resolved; UPDATE: resolved
  • The full set of tests have been run on all other required architectures
  • Rebase to the latest tip of branch (in progress, ported as of Oct 14, working through remaining issues)
  • Add all contributors to AUTHORS (see #302)
  • Upload to V8's code review tool

Related issues

Outstanding issues

Resolved issues

  • #287: Check failed: expect == mt.Call() (2 vs. 0)
    • Fixed
  • #288: Fatal error in ../../src/objects/tagged-impl.h, line 92
    • Fails on MIPS also; skipped for now
  • #289: RuntimeError: unreachable
    • Fixed
  • #290: Seg fault
    • Fails on MIPS also; skipped for now
  • #302: AUTHORS file
    • Fixed
  • #299: cfenv is unapproved
    • Fixed
  • #300: Spike license
    • Fixed

Information

The significant change since the last rebase that caused the many bugs that showed up from this rebase effort were caused by changes to the standard frame, specifically, adding the argument count to the frame, and reversing the order of the arguments / receiver.

Our changes have now been pushed upstream for review - https://chromium-review.googlesource.com/c/v8/v8/+/2571344

Locally, we will now have two branches:

  • riscv64 - our main branch
  • upstream - same as riscv64 but with some files removed that should not go upstream (e.g. .github/*)
    • Before pushing, we should always remove those files (see 5f65c851)
    • Preferred command sequence:
      git checkout riscv64
      git pull
      git checkout upstream
      git rebase riscv64
      git push -f -u origin upstream
  • To perform the presubmit checks, use:
    git cl presubmit
  • To push upstream, use:
    git branch -u upstream/master
    git cl upload
  • To verify that the upstream branch is associated with the correct issue, use:
    gi cl issue
    • Similarly, to associate it with the correct issue, use:
      git cl issue 1234

Upstream Issues