Mercurial > hg > truffle
diff src/cpu/x86/vm/assembler_x86_32.hpp @ 342:37f87013dfd8
6711316: Open source the Garbage-First garbage collector
Summary: First mercurial integration of the code for the Garbage-First garbage collector.
Reviewed-by: apetrusenko, iveresov, jmasa, sgoldman, tonyp, ysr
author | ysr |
---|---|
date | Thu, 05 Jun 2008 15:57:56 -0700 |
parents | 3d62cb85208d |
children | 6aae2f9d0294 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/assembler_x86_32.hpp Wed Jun 04 13:51:09 2008 -0700 +++ b/src/cpu/x86/vm/assembler_x86_32.hpp Thu Jun 05 15:57:56 2008 -0700 @@ -216,9 +216,11 @@ #endif // ASSERT // accessors - bool uses(Register reg) const { - return _base == reg || _index == reg; - } + bool uses(Register reg) const { return _base == reg || _index == reg; } + Register base() const { return _base; } + Register index() const { return _index; } + ScaleFactor scale() const { return _scale; } + int disp() const { return _disp; } // Convert the raw encoding form into the form expected by the constructor for // Address. An index of 4 (rsp) corresponds to having no index, so convert @@ -990,7 +992,8 @@ // on arguments should also go in here. class MacroAssembler: public Assembler { - friend class LIR_Assembler; + friend class LIR_Assembler; + friend class Runtime1; // as_Address() protected: Address as_Address(AddressLiteral adr); @@ -1151,6 +1154,10 @@ void store_check(Register obj); // store check for obj - register is destroyed afterwards void store_check(Register obj, Address dst); // same as above, dst is exact store location (reg. is destroyed) + void g1_write_barrier_pre(Register obj, Register thread, Register tmp, Register tmp2, bool tosca_live ); + void g1_write_barrier_post(Register store_addr, Register new_val, Register thread, Register tmp, Register tmp2); + + // split store_check(Register obj) to enhance instruction interleaving void store_check_part_1(Register obj); void store_check_part_2(Register obj);