Reviewers: danno,

Message:
Hi - We finally have a working version with the new gc. The fundamental issue is
the mips use of pointers inlined in the code, in a pair of consecutive
instructions, lui & ori (like arm movt/movw).

In the old gc, all access to these inlined pointers came through
CodeIterateBody, and RelocInfo.

In the new gc the Slots and SlotsBuffer presented a problem as all pointers are
updated with indirect access (Object **).

Our solution adds a wrapper class within SlotsBuffer that should not impose any
performance impact on the other architectures.

Open to your suggestions and better ideas, of course.

The associated change in http://codereview.chromium.org/8112008 adds mips ports for all commits since the initial new-gc, and with that, this code passes all tests. Because of changes since the initial new-gc, this commit will not build
without all the other one.


Description:
MIPS: port Merge experimental/gc branch to the bleeding_edge.

Architecture-independent changes:
- ObjectSlot in SlotsBuffer is now a wrapper class that allows us to
properly dereference and set the MIPS-style "indirect" lui/ori pointers
saved in the code.
- extended some visitor types to be able to pass a special flag value as a
parameter that is used to mark indirect pointers.

Ported r9328 (bdc13b7)

BUG=
TEST=


Please review this at http://codereview.chromium.org/8106002/

Affected files:
  M src/incremental-marking.cc
  M src/mark-compact-inl.h
  M src/mark-compact.h
  M src/mark-compact.cc
  M src/mips/assembler-mips-inl.h
  M src/mips/assembler-mips.cc
  M src/mips/code-stubs-mips.h
  M src/mips/code-stubs-mips.cc
  M src/mips/codegen-mips.h
  M src/mips/deoptimizer-mips.cc
  M src/mips/frames-mips.h
  M src/mips/full-codegen-mips.cc
  M src/mips/ic-mips.cc
  M src/mips/macro-assembler-mips.h
  M src/mips/macro-assembler-mips.cc
  M src/mips/stub-cache-mips.cc


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to