| Index: src/ia32/macro-assembler-ia32.h
|
| ===================================================================
|
| --- src/ia32/macro-assembler-ia32.h (revision 8221)
|
| +++ src/ia32/macro-assembler-ia32.h (working copy)
|
| @@ -93,17 +93,25 @@
|
| Label* condition_met,
|
| Label::Distance condition_met_distance = Label::kFar);
|
|
|
| - void InNewSpace(Register object,
|
| - Register scratch,
|
| - Condition cc,
|
| - Label* condition_met,
|
| - Label::Distance condition_met_distance = Label::kFar);
|
| + // Check if object is in new space. Jumps if the object is not in new space.
|
| + // The register scratch can be object itself, but it will be clobbered.
|
| + void JumpIfNotInNewSpace(Register object,
|
| + Register scratch,
|
| + Label* branch,
|
| + Label::Distance distance = Label::kFar) {
|
| + InNewSpace(object, scratch, zero, branch, distance);
|
| + }
|
|
|
| + // Check if object is in new space. Jumps if the object is in new space.
|
| + // The register scratch can be object itself, but it will be clobbered.
|
| + void JumpIfInNewSpace(Register object,
|
| + Register scratch,
|
| + Label* branch,
|
| + Label::Distance distance = Label::kFar) {
|
| + InNewSpace(object, scratch, not_zero, branch, distance);
|
| + }
|
| +
|
| // Check if an object has a given incremental marking color. Also uses ecx!
|
| - // The color bits are found by splitting the address at the bit offset
|
| - // indicated by the mask: bits that are zero in the mask are used for the
|
| - // address of the bitmap, and bits that are one in the mask are used for the
|
| - // index of the bit.
|
| void HasColor(Register object,
|
| Register scratch0,
|
| Register scratch1,
|
| @@ -785,6 +793,13 @@
|
| Register scratch,
|
| bool gc_allowed);
|
|
|
| + // Helper for implementing JumpIfNotInNewSpace and JumpIfInNewSpace.
|
| + void InNewSpace(Register object,
|
| + Register scratch,
|
| + Condition cc,
|
| + Label* condition_met,
|
| + Label::Distance condition_met_distance = Label::kFar);
|
| +
|
| // Helper for finding the mark bits for an address. Afterwards, the
|
| // bitmap register points at the word with the mark bits and the mask
|
| // the position of the first bit. Uses ecx as scratch and leaves addr_reg
|
|
|