Skip to content

Upstream development tasks

Matthew Brandyberry edited this page Nov 14, 2013 · 47 revisions

Current tasks required to move code base from 3.14.5 -> 3.20.17

This work is being staged in the upstream branch.

It effectively rebases our code from commit c72f1d8 (Oct 2012) to commit a98e674 (Aug 2013) of the official v8 repository's master branch.


High level status

Still in initial pass. Merge of upstream code changes into common code and PPC header files is complete. PPC source files (*.cc) still require initial pass.


Recommended Procedure

Since the PPC source files have diverged considerably from their ARM ancestry and have adopted some constructs from the MIPS source, the recommended procedure for integrating upstream changes is mostly a manual process. The upstream changes consist of a mix of changes -- not all of which will be applicable to PPC.

A good first step is to view the upstream diff for both ARM and MIPS. This will provide an overview of the changes and provide some insight into which changes are required to support an API defined in the common code versus something that might be architecture specific. (Note that I have observed that MIPS is slightly behind in adopting changes in some areas and thus ARM should be your primary guide here. MIPS should be used to provide some additional context and updates for those constructs borrowed from that port.)

# c72f1d8 is common ancestor of v8 and v8ppc before the upstream merge
# a98e674 is common ancestor of v8 and v8ppc after the upstream merge
git diff c72f1d8 a98e674 src/arm/regexp-macro-assembler-arm.cc
git diff c72f1d8 a98e674 src/mips/regexp-macro-assembler-mips.cc

Next, you'll want the modifications we made for PPC to use as a reference:

# 67c83e7 is the commit in v8ppc master from which upstream was branched
git diff 67c83e7:src/arm/regexp-macro-assembler-arm.cc 67c83e7:src/ppc/regexp-macro-assembler-ppc.cc

Finally, apply the applicable upstream changes to the PPC files. Depending on the complexity of the changes involved (and especially if they require a significant amount of new code generation) a good strategy may be to implement the changes in stages -- making use of fake opcodes to defer some implementation details until they can be unit tested.


Tasks

Tasks in the initial pass are divided into file-sized chunks:

Filename Owner Status / Notes
src/*.cc, src/*.h Matt Complete
build/* Matt Complete
tools/* Matt Complete
test/* Matt Complete
src/ppc/assembler-ppc.h Matt Complete
src/ppc/assembler-ppc-inl.h Matt Complete
src/ppc/codegen-ppc.h Matt Complete
src/ppc/code-stubs-ppc.h Matt Complete
src/ppc/constants-ppc.h Matt Complete
src/ppc/frames-ppc.h Matt Complete
src/ppc/lithium-codegen-ppc.h Matt Complete
src/ppc/lithium-gap-resolver-ppc.h Matt Complete
src/ppc/lithium-ppc.h Matt Complete
src/ppc/macro-assembler-ppc.h Matt Complete
src/ppc/regexp-macro-assembler-ppc.h Matt Complete
src/ppc/simulator-ppc.h Matt Complete
src/ppc/assembler-ppc.cc Matt Complete
src/ppc/builtins-ppc.cc Matt Complete
src/ppc/codegen-ppc.cc Matt Complete
src/ppc/constants-ppc.cc Matt Complete
src/ppc/cpu-ppc.cc Matt Complete
src/ppc/debug-ppc.cc Matt Complete
src/ppc/disasm-ppc.cc Matt Complete
src/ppc/frames-ppc.cc Matt Complete
src/ppc/ic-ppc.cc Roo Complete
src/ppc/lithium-gap-resolver-ppc.cc Matt Complete
src/ppc/regexp-macro-assembler-ppc.cc Matt Complete
src/ppc/simulator-ppc.cc Matt Complete
src/ppc/macro-assembler-ppc.cc Matt Complete
src/ppc/stub-cache-ppc.cc Roo Complete (TBD: consider arm modifications to CompileMathFloorCall)
src/ppc/full-codegen-ppc.cc Matt Complete (TBD: consider arm optimization of EmitRandomHeapNumber)
src/ppc/code-stubs-ppc.cc Roo In progress
src/ppc/deoptimizer-ppc.cc Matt In progress
src/ppc/lithium-codegen-ppc.cc
src/ppc/lithium-ppc.cc
Clone this wiki locally