Print this page
rev 2161 : [mq]: initial-intrinsification-changes
rev 2162 : [mq]: code-review-comments-vladimir

Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/assembler_x86.hpp
          +++ new/src/cpu/x86/vm/assembler_x86.hpp
↓ open down ↓ 1432 lines elided ↑ open up ↑
1433 1433  
1434 1434  
1435 1435  // MacroAssembler extends Assembler by frequently used macros.
1436 1436  //
1437 1437  // Instructions for which a 'better' code sequence exists depending
1438 1438  // on arguments should also go in here.
1439 1439  
1440 1440  class MacroAssembler: public Assembler {
1441 1441    friend class LIR_Assembler;
1442 1442    friend class Runtime1;      // as_Address()
     1443 +
1443 1444   protected:
1444 1445  
1445 1446    Address as_Address(AddressLiteral adr);
1446 1447    Address as_Address(ArrayAddress adr);
1447 1448  
1448 1449    // Support for VM calls
1449 1450    //
1450 1451    // This is the base routine called by the different versions of call_VM_leaf. The interpreter
1451 1452    // may customize this version by overriding it for its purposes (e.g., to save/restore
1452 1453    // additional registers when doing a VM call).
↓ open down ↓ 201 lines elided ↑ open up ↑
1654 1655  
1655 1656    void reset_last_Java_frame(Register thread, bool clear_fp, bool clear_pc);
1656 1657  
1657 1658    // thread in the default location (r15_thread on 64bit)
1658 1659    void reset_last_Java_frame(bool clear_fp, bool clear_pc);
1659 1660  
1660 1661    // Stores
1661 1662    void store_check(Register obj);                // store check for obj - register is destroyed afterwards
1662 1663    void store_check(Register obj, Address dst);   // same as above, dst is exact store location (reg. is destroyed)
1663 1664  
     1665 +#ifndef SERIALGC
     1666 +  
1664 1667    void g1_write_barrier_pre(Register obj,
1665      -#ifndef _LP64
     1668 +                            Register pre_val,
1666 1669                              Register thread,
1667      -#endif
1668 1670                              Register tmp,
1669      -                            Register tmp2,
1670      -                            bool     tosca_live);
     1671 +                            bool tosca_live,
     1672 +                            bool expand_call);
     1673 +
1671 1674    void g1_write_barrier_post(Register store_addr,
1672 1675                               Register new_val,
1673      -#ifndef _LP64
1674 1676                               Register thread,
1675      -#endif
1676 1677                               Register tmp,
1677 1678                               Register tmp2);
1678 1679  
     1680 +#endif // SERIALGC
1679 1681  
1680 1682    // split store_check(Register obj) to enhance instruction interleaving
1681 1683    void store_check_part_1(Register obj);
1682 1684    void store_check_part_2(Register obj);
1683 1685  
1684 1686    // C 'boolean' to Java boolean: x == 0 ? 0 : 1
1685 1687    void c2bool(Register x);
1686 1688  
1687 1689    // C++ bool manipulation
1688 1690  
↓ open down ↓ 650 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX