Mercurial > hg > graal-compiler
comparison src/cpu/sparc/vm/sharedRuntime_sparc.cpp @ 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 | 018d5b58dd4f |
children | 6aae2f9d0294 |
comparison
equal
deleted
inserted
replaced
189:0b27f3512f9e | 342:37f87013dfd8 |
---|---|
697 #endif // _LP64 | 697 #endif // _LP64 |
698 | 698 |
699 // Stores long into offset pointed to by base | 699 // Stores long into offset pointed to by base |
700 void AdapterGenerator::store_c2i_long(Register r, Register base, | 700 void AdapterGenerator::store_c2i_long(Register r, Register base, |
701 const int st_off, bool is_stack) { | 701 const int st_off, bool is_stack) { |
702 #ifdef COMPILER2 | |
703 #ifdef _LP64 | 702 #ifdef _LP64 |
704 // In V9, longs are given 2 64-bit slots in the interpreter, but the | 703 // In V9, longs are given 2 64-bit slots in the interpreter, but the |
705 // data is passed in only 1 slot. | 704 // data is passed in only 1 slot. |
706 __ stx(r, base, next_arg_slot(st_off)); | 705 __ stx(r, base, next_arg_slot(st_off)); |
707 #else | 706 #else |
707 #ifdef COMPILER2 | |
708 // Misaligned store of 64-bit data | 708 // Misaligned store of 64-bit data |
709 __ stw(r, base, arg_slot(st_off)); // lo bits | 709 __ stw(r, base, arg_slot(st_off)); // lo bits |
710 __ srlx(r, 32, r); | 710 __ srlx(r, 32, r); |
711 __ stw(r, base, next_arg_slot(st_off)); // hi bits | 711 __ stw(r, base, next_arg_slot(st_off)); // hi bits |
712 #endif // _LP64 | |
713 #else | 712 #else |
714 if (is_stack) { | 713 if (is_stack) { |
715 // Misaligned store of 64-bit data | 714 // Misaligned store of 64-bit data |
716 __ stw(r, base, arg_slot(st_off)); // lo bits | 715 __ stw(r, base, arg_slot(st_off)); // lo bits |
717 __ srlx(r, 32, r); | 716 __ srlx(r, 32, r); |
719 } else { | 718 } else { |
720 __ stw(r->successor(), base, arg_slot(st_off) ); // lo bits | 719 __ stw(r->successor(), base, arg_slot(st_off) ); // lo bits |
721 __ stw(r , base, next_arg_slot(st_off)); // hi bits | 720 __ stw(r , base, next_arg_slot(st_off)); // hi bits |
722 } | 721 } |
723 #endif // COMPILER2 | 722 #endif // COMPILER2 |
723 #endif // _LP64 | |
724 tag_c2i_arg(frame::TagCategory2, base, st_off, r); | 724 tag_c2i_arg(frame::TagCategory2, base, st_off, r); |
725 } | 725 } |
726 | 726 |
727 void AdapterGenerator::store_c2i_object(Register r, Register base, | 727 void AdapterGenerator::store_c2i_object(Register r, Register base, |
728 const int st_off) { | 728 const int st_off) { |