src/cpu/sparc/vm/assembler_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
7045514 Cdiff src/cpu/sparc/vm/assembler_sparc.cpp
src/cpu/sparc/vm/assembler_sparc.cpp
Print this page
*** 40,49 ****
--- 40,55 ----
#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
#include "gc_implementation/g1/heapRegion.hpp"
#endif
+ #ifdef PRODUCT
+ #define BLOCK_COMMENT(str) /* nothing */
+ #else
+ #define BLOCK_COMMENT(str) block_comment(str)
+ #endif
+
// Convert the raw encoding form into the form expected by the
// constructor for Address.
Address Address::make_raw(int base, int index, int scale, int disp, bool disp_is_oop) {
assert(scale == 0, "not supported");
RelocationHolder rspec;
*** 1070,1079 ****
--- 1076,1091 ----
// check for pending exceptions. use Gtemp as scratch register.
if (check_exceptions) {
check_and_forward_exception(Gtemp);
}
+ #ifdef ASSERT
+ set(badHeapWordVal, G3);
+ set(badHeapWordVal, G4);
+ set(badHeapWordVal, G5);
+ #endif
+
// get oop result if there is one and reset the value in the thread
if (oop_result->is_valid()) {
get_vm_result(oop_result);
}
}
*** 1175,1184 ****
--- 1187,1201 ----
save_thread(thread_cache);
// do the call
call(entry_point, relocInfo::runtime_call_type);
delayed()->nop();
restore_thread(thread_cache);
+ #ifdef ASSERT
+ set(badHeapWordVal, G3);
+ set(badHeapWordVal, G4);
+ set(badHeapWordVal, G5);
+ #endif
}
void MacroAssembler::call_VM_leaf(Register thread_cache, address entry_point, int number_of_arguments) {
call_VM_leaf_base(thread_cache, entry_point, number_of_arguments);
*** 1516,1526 ****
// save_frame: given number of "extra" words in frame,
// issue approp. save instruction (p 200, v8 manual)
! void MacroAssembler::save_frame(int extraWords = 0) {
int delta = -total_frame_size_in_bytes(extraWords);
if (is_simm13(delta)) {
save(SP, delta, SP);
} else {
set(delta, G3_scratch);
--- 1533,1543 ----
// save_frame: given number of "extra" words in frame,
// issue approp. save instruction (p 200, v8 manual)
! void MacroAssembler::save_frame(int extraWords) {
int delta = -total_frame_size_in_bytes(extraWords);
if (is_simm13(delta)) {
save(SP, delta, SP);
} else {
set(delta, G3_scratch);
*** 1728,1737 ****
--- 1745,1755 ----
// plausibility check for oops
if (!VerifyOops) return;
if (reg == G0) return; // always NULL, which is always an oop
+ BLOCK_COMMENT("verify_oop {");
char buffer[64];
#ifdef COMPILER1
if (CommentedAssembly) {
snprintf(buffer, sizeof(buffer), "verify_oop at %d", offset());
block_comment(buffer);
*** 1766,1775 ****
--- 1784,1794 ----
// Register call to verify_oop_subroutine
callr(O7, G0);
delayed()->nop();
// recover frame size
add(SP, 8*8,SP);
+ BLOCK_COMMENT("} verify_oop");
}
void MacroAssembler::_verify_oop_addr(Address addr, const char* msg, const char * file, int line) {
// plausibility check for oops
if (!VerifyOops) return;
*** 2038,2048 ****
}
ThreadStateTransition::transition(JavaThread::current(), _thread_in_vm, saved_state);
}
else
::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg);
! assert(false, "error");
}
#ifndef PRODUCT
void MacroAssembler::test() {
--- 2057,2067 ----
}
ThreadStateTransition::transition(JavaThread::current(), _thread_in_vm, saved_state);
}
else
::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg);
! assert(false, err_msg("DEBUG MESSAGE: %s", msg));
}
#ifndef PRODUCT
void MacroAssembler::test() {
*** 3228,3257 ****
}
}
RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot,
int extra_slot_offset) {
// cf. TemplateTable::prepare_invoke(), if (load_receiver).
int stackElementSize = Interpreter::stackElementSize;
int offset = extra_slot_offset * stackElementSize;
if (arg_slot.is_constant()) {
offset += arg_slot.as_constant() * stackElementSize;
return offset;
} else {
! Register temp = arg_slot.as_register();
! sll_ptr(temp, exact_log2(stackElementSize), temp);
if (offset != 0)
! add(temp, offset, temp);
! return temp;
}
}
Address MacroAssembler::argument_address(RegisterOrConstant arg_slot,
int extra_slot_offset) {
! return Address(Gargs, argument_offset(arg_slot, extra_slot_offset));
}
void MacroAssembler::biased_locking_enter(Register obj_reg, Register mark_reg,
Register temp_reg,
--- 3247,3278 ----
}
}
RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot,
+ Register temp_reg,
int extra_slot_offset) {
// cf. TemplateTable::prepare_invoke(), if (load_receiver).
int stackElementSize = Interpreter::stackElementSize;
int offset = extra_slot_offset * stackElementSize;
if (arg_slot.is_constant()) {
offset += arg_slot.as_constant() * stackElementSize;
return offset;
} else {
! assert(temp_reg != noreg, "must specify");
! sll_ptr(arg_slot.as_register(), exact_log2(stackElementSize), temp_reg);
if (offset != 0)
! add(temp_reg, offset, temp_reg);
! return temp_reg;
}
}
Address MacroAssembler::argument_address(RegisterOrConstant arg_slot,
+ Register temp_reg,
int extra_slot_offset) {
! return Address(Gargs, argument_offset(arg_slot, temp_reg, extra_slot_offset));
}
void MacroAssembler::biased_locking_enter(Register obj_reg, Register mark_reg,
Register temp_reg,
src/cpu/sparc/vm/assembler_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File