assembler_sparc.cpp (986:62001a362ce9) | assembler_sparc.cpp (1006:dcf03e02b020) |
---|---|
1/* 2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * --- 2617 unchanged lines hidden (view full) --- 2626 2627 2628void MacroAssembler::regcon_inc_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) { 2629 assert(dest.register_or_noreg() != G0, "lost side effect"); 2630 if ((src.is_constant() && src.as_constant() == 0) || 2631 (src.is_register() && src.as_register() == G0)) { 2632 // do nothing 2633 } else if (dest.is_register()) { | 1/* 2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * --- 2617 unchanged lines hidden (view full) --- 2626 2627 2628void MacroAssembler::regcon_inc_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) { 2629 assert(dest.register_or_noreg() != G0, "lost side effect"); 2630 if ((src.is_constant() && src.as_constant() == 0) || 2631 (src.is_register() && src.as_register() == G0)) { 2632 // do nothing 2633 } else if (dest.is_register()) { |
2634 add(dest.as_register(), ensure_rs2(src, temp), dest.as_register()); | 2634 add(dest.as_register(), ensure_simm13_or_reg(src, temp), dest.as_register()); |
2635 } else if (src.is_constant()) { 2636 intptr_t res = dest.as_constant() + src.as_constant(); 2637 dest = RegisterOrConstant(res); // side effect seen by caller 2638 } else { 2639 assert(temp != noreg, "cannot handle constant += register"); | 2635 } else if (src.is_constant()) { 2636 intptr_t res = dest.as_constant() + src.as_constant(); 2637 dest = RegisterOrConstant(res); // side effect seen by caller 2638 } else { 2639 assert(temp != noreg, "cannot handle constant += register"); |
2640 add(src.as_register(), ensure_rs2(dest, temp), temp); | 2640 add(src.as_register(), ensure_simm13_or_reg(dest, temp), temp); |
2641 dest = RegisterOrConstant(temp); // side effect seen by caller 2642 } 2643} 2644 2645void MacroAssembler::regcon_sll_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) { 2646 assert(dest.register_or_noreg() != G0, "lost side effect"); 2647 if (!is_simm13(src.constant_or_zero())) 2648 src = (src.as_constant() & 0xFF); --- 56 unchanged lines hidden (view full) --- 2705 and3(scan_temp, -round_to_unit, scan_temp); 2706 } 2707 add(recv_klass, scan_temp, scan_temp); 2708 2709 // Adjust recv_klass by scaled itable_index, so we can free itable_index. 2710 RegisterOrConstant itable_offset = itable_index; 2711 regcon_sll_ptr(itable_offset, exact_log2(itableMethodEntry::size() * wordSize)); 2712 regcon_inc_ptr(itable_offset, itableMethodEntry::method_offset_in_bytes()); | 2641 dest = RegisterOrConstant(temp); // side effect seen by caller 2642 } 2643} 2644 2645void MacroAssembler::regcon_sll_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) { 2646 assert(dest.register_or_noreg() != G0, "lost side effect"); 2647 if (!is_simm13(src.constant_or_zero())) 2648 src = (src.as_constant() & 0xFF); --- 56 unchanged lines hidden (view full) --- 2705 and3(scan_temp, -round_to_unit, scan_temp); 2706 } 2707 add(recv_klass, scan_temp, scan_temp); 2708 2709 // Adjust recv_klass by scaled itable_index, so we can free itable_index. 2710 RegisterOrConstant itable_offset = itable_index; 2711 regcon_sll_ptr(itable_offset, exact_log2(itableMethodEntry::size() * wordSize)); 2712 regcon_inc_ptr(itable_offset, itableMethodEntry::method_offset_in_bytes()); |
2713 add(recv_klass, ensure_rs2(itable_offset, sethi_temp), recv_klass); | 2713 add(recv_klass, ensure_simm13_or_reg(itable_offset, sethi_temp), recv_klass); |
2714 2715 // for (scan = klass->itable(); scan->interface() != NULL; scan += scan_step) { 2716 // if (scan->interface() == intf) { 2717 // result = (klass + scan->offset() + itable_index); 2718 // } 2719 // } 2720 Label search, found_method; 2721 --- 2004 unchanged lines hidden --- | 2714 2715 // for (scan = klass->itable(); scan->interface() != NULL; scan += scan_step) { 2716 // if (scan->interface() == intf) { 2717 // result = (klass + scan->offset() + itable_index); 2718 // } 2719 // } 2720 Label search, found_method; 2721 --- 2004 unchanged lines hidden --- |