Skip to content
This repository has been archived by the owner on Aug 31, 2022. It is now read-only.
/ jdk7 Public archive

Commit

Permalink
Merge
Browse files Browse the repository at this point in the history
  • Loading branch information
J. Duke committed Feb 5, 2021
2 parents 35e4ab5 + 27a0f9c commit be40873
Show file tree
Hide file tree
Showing 117 changed files with 4,352 additions and 1,283 deletions.
1 change: 1 addition & 0 deletions .hgtags-top-repo
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,4 @@ c6569c5585851dfd39b8de8e021c3c312f51af12 jdk7-b141
cfbbdb77eac0397b03eb99ee2e07ea00e0a7b81e jdk7-b142
14b8e7eee1058fd4ed5a2700a2ce14b3616278f1 jdk7-b143
7203965666a4fe63bf82f5e4204f41ce6285e716 jdk7-b144
55e9ebf032186c333e5964ed044419830ac02693 jdk7-b145
1 change: 1 addition & 0 deletions corba/.hgtags
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,4 @@ a58635cdd921bafef353f4864184a0481353197b jdk7-b141
a2f340a048c88d10cbedc0504f5cf03d39925a40 jdk7-b142
51ed32f6f4de56f16e910ac54ba6c6f6606f4f17 jdk7-b143
7033a5756ad552d88114594d8e2d2e4dc2c05963 jdk7-b144
77ec0541aa2aa4da27e9e385a118a2e51e7fca24 jdk7-b145
2 changes: 2 additions & 0 deletions hotspot/.hgtags
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,5 @@ c149193c768b8b7233da4c3a3fdc0756b975848e hs21-b13
c149193c768b8b7233da4c3a3fdc0756b975848e jdk7-b143
fe189d4a44e9e8f0c7d78fcbd1c63701745752ca jdk7-b144
62f39d40ebf176306a916812729df586f9d10f43 hs21-b14
82a81d5c5700a69333e12532bf0c4d33e885c7fc jdk7-b145
82a81d5c5700a69333e12532bf0c4d33e885c7fc hs21-b15
2 changes: 1 addition & 1 deletion hotspot/make/hotspot_version
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2011

HS_MAJOR_VER=21
HS_MINOR_VER=0
HS_BUILD_NUMBER=15
HS_BUILD_NUMBER=16

JDK_MAJOR_VER=1
JDK_MINOR_VER=7
Expand Down
6 changes: 5 additions & 1 deletion hotspot/make/windows/makefiles/compile.make
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ CPP=ARCH_ERROR
!endif

CPP_FLAGS=$(CPP_FLAGS) /D "WIN32" /D "_WINDOWS"

# Must specify this for sharedRuntimeTrig.cpp
CPP_FLAGS=$(CPP_FLAGS) /D "VM_LITTLE_ENDIAN"

Expand Down Expand Up @@ -232,6 +231,11 @@ LINK_FLAGS= $(LINK_FLAGS) kernel32.lib user32.lib gdi32.lib winspool.lib \
uuid.lib Wsock32.lib winmm.lib /nologo /machine:$(MACHINE) /opt:REF \
/opt:ICF,8 /map /debug


!if $(MSC_VER) >= 1600
LINK_FLAGS= $(LINK_FLAGS) psapi.lib
!endif

# Resource compiler settings
RC=rc.exe
RC_FLAGS=/D "HS_VER=$(HS_VER)" \
Expand Down
36 changes: 28 additions & 8 deletions hotspot/src/cpu/sparc/vm/assembler_sparc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@
#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) {
Expand Down Expand Up @@ -1072,6 +1078,12 @@ void MacroAssembler::call_VM_base(
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);
Expand Down Expand Up @@ -1177,6 +1189,11 @@ void MacroAssembler::call_VM_leaf_base(Register thread_cache, address entry_poin
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
}


Expand Down Expand Up @@ -1518,7 +1535,7 @@ int MacroAssembler::total_frame_size_in_bytes(int extraWords) {
// save_frame: given number of "extra" words in frame,
// issue approp. save instruction (p 200, v8 manual)

void MacroAssembler::save_frame(int extraWords = 0) {
void MacroAssembler::save_frame(int extraWords) {
int delta = -total_frame_size_in_bytes(extraWords);
if (is_simm13(delta)) {
save(SP, delta, SP);
Expand Down Expand Up @@ -1730,6 +1747,7 @@ void MacroAssembler::_verify_oop(Register reg, const char* msg, const char * fil

if (reg == G0) return; // always NULL, which is always an oop

BLOCK_COMMENT("verify_oop {");
char buffer[64];
#ifdef COMPILER1
if (CommentedAssembly) {
Expand Down Expand Up @@ -1768,6 +1786,7 @@ void MacroAssembler::_verify_oop(Register reg, const char* msg, const char * fil
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) {
Expand Down Expand Up @@ -2040,7 +2059,7 @@ void MacroAssembler::debug(char* msg, RegistersForDebugging* regs) {
}
else
::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg);
assert(false, "error");
assert(false, err_msg("DEBUG MESSAGE: %s", msg));
}


Expand Down Expand Up @@ -3230,6 +3249,7 @@ void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_


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;
Expand All @@ -3238,18 +3258,19 @@ RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot,
offset += arg_slot.as_constant() * stackElementSize;
return offset;
} else {
Register temp = arg_slot.as_register();
sll_ptr(temp, exact_log2(stackElementSize), temp);
assert(temp_reg != noreg, "must specify");
sll_ptr(arg_slot.as_register(), exact_log2(stackElementSize), temp_reg);
if (offset != 0)
add(temp, offset, temp);
return temp;
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, extra_slot_offset));
return Address(Gargs, argument_offset(arg_slot, temp_reg, extra_slot_offset));
}


Expand Down Expand Up @@ -4906,4 +4927,3 @@ void MacroAssembler::char_arrays_equals(Register ary1, Register ary2,
// Caller should set it:
// add(G0, 1, result); // equals
}

44 changes: 35 additions & 9 deletions hotspot/src/cpu/sparc/vm/assembler_sparc.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -309,12 +309,14 @@ class Address VALUE_OBJ_CLASS_SPEC {
#endif

// accessors
Register base() const { return _base; }
Register index() const { return _index_or_disp.as_register(); }
int disp() const { return _index_or_disp.as_constant(); }
Register base() const { return _base; }
Register index() const { return _index_or_disp.as_register(); }
int disp() const { return _index_or_disp.as_constant(); }

bool has_index() const { return _index_or_disp.is_register(); }
bool has_disp() const { return _index_or_disp.is_constant(); }
bool has_index() const { return _index_or_disp.is_register(); }
bool has_disp() const { return _index_or_disp.is_constant(); }

bool uses(Register reg) const { return base() == reg || (has_index() && index() == reg); }

const relocInfo::relocType rtype() { return _rspec.type(); }
const RelocationHolder& rspec() { return _rspec; }
Expand All @@ -330,6 +332,10 @@ class Address VALUE_OBJ_CLASS_SPEC {
Address a(base(), disp() + plusdisp);
return a;
}
bool is_same_address(Address a) const {
// disregard _rspec
return base() == a.base() && (has_index() ? index() == a.index() : disp() == a.disp());
}

Address after_save() const {
Address a = (*this);
Expand Down Expand Up @@ -436,6 +442,10 @@ class AddressLiteral VALUE_OBJ_CLASS_SPEC {
: _address((address) addr),
_rspec(rspec_from_rtype(rtype, (address) addr)) {}

AddressLiteral(oop* addr, relocInfo::relocType rtype = relocInfo::none)
: _address((address) addr),
_rspec(rspec_from_rtype(rtype, (address) addr)) {}

AddressLiteral(float* addr, relocInfo::relocType rtype = relocInfo::none)
: _address((address) addr),
_rspec(rspec_from_rtype(rtype, (address) addr)) {}
Expand All @@ -455,6 +465,21 @@ class AddressLiteral VALUE_OBJ_CLASS_SPEC {
}
};

// Convenience classes
class ExternalAddress: public AddressLiteral {
private:
static relocInfo::relocType reloc_for_target(address target) {
// Sometimes ExternalAddress is used for values which aren't
// exactly addresses, like the card table base.
// external_word_type can't be used for values in the first page
// so just skip the reloc in that case.
return external_word_Relocation::can_be_relocated(target) ? relocInfo::external_word_type : relocInfo::none;
}

public:
ExternalAddress(address target) : AddressLiteral(target, reloc_for_target( target)) {}
ExternalAddress(oop* target) : AddressLiteral(target, reloc_for_target((address) target)) {}
};

inline Address RegisterImpl::address_in_saved_window() const {
return (Address(SP, (sp_offset_in_saved_window() * wordSize) + STACK_BIAS));
Expand Down Expand Up @@ -855,9 +880,8 @@ class Assembler : public AbstractAssembler {
// and be sign-extended. Check the range.

static void assert_signed_range(intptr_t x, int nbits) {
assert( nbits == 32
|| -(1 << nbits-1) <= x && x < ( 1 << nbits-1),
"value out of range");
assert(nbits == 32 || (-(1 << nbits-1) <= x && x < ( 1 << nbits-1)),
err_msg("value out of range: x=" INTPTR_FORMAT ", nbits=%d", x, nbits));
}

static void assert_signed_word_disp_range(intptr_t x, int nbits) {
Expand Down Expand Up @@ -2287,7 +2311,7 @@ class MacroAssembler: public Assembler {
int total_frame_size_in_bytes(int extraWords);

// used when extraWords known statically
void save_frame(int extraWords);
void save_frame(int extraWords = 0);
void save_frame_c1(int size_in_bytes);
// make a frame, and simultaneously pass up one or two register value
// into the new register window
Expand Down Expand Up @@ -2456,9 +2480,11 @@ class MacroAssembler: public Assembler {
// offset relative to Gargs of argument at tos[arg_slot].
// (arg_slot == 0 means the last argument, not the first).
RegisterOrConstant argument_offset(RegisterOrConstant arg_slot,
Register temp_reg,
int extra_slot_offset = 0);
// Address of Gargs and argument_offset.
Address argument_address(RegisterOrConstant arg_slot,
Register temp_reg,
int extra_slot_offset = 0);

// Stack overflow checking
Expand Down
6 changes: 5 additions & 1 deletion hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,11 @@ inline void Assembler::stf( FloatRegisterImpl::Width w, FloatRegister d, Regi
inline void Assembler::stf( FloatRegisterImpl::Width w, FloatRegister d, Register s1, Register s2) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(stf_op3, w) | rs1(s1) | rs2(s2) ); }
inline void Assembler::stf( FloatRegisterImpl::Width w, FloatRegister d, Register s1, int simm13a) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(stf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); }

inline void Assembler::stf( FloatRegisterImpl::Width w, FloatRegister d, const Address& a, int offset) { relocate(a.rspec(offset)); stf(w, d, a.base(), a.disp() + offset); }
inline void Assembler::stf( FloatRegisterImpl::Width w, FloatRegister d, const Address& a, int offset) {
relocate(a.rspec(offset));
if (a.has_index()) { assert(offset == 0, ""); stf(w, d, a.base(), a.index() ); }
else { stf(w, d, a.base(), a.disp() + offset); }
}

inline void Assembler::stfsr( Register s1, Register s2) { v9_dep(); emit_long( op(ldst_op) | op3(stfsr_op3) | rs1(s1) | rs2(s2) ); }
inline void Assembler::stfsr( Register s1, int simm13a) { v9_dep(); emit_data( op(ldst_op) | op3(stfsr_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
Expand Down
2 changes: 2 additions & 0 deletions hotspot/src/cpu/sparc/vm/frame_sparc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,8 @@ frame frame::sender(RegisterMap* map) const {
// interpreted but its pc is in the code cache (for c1 -> osr_frame_return_id stub), so it must be
// explicitly recognized.

if (is_ricochet_frame()) return sender_for_ricochet_frame(map);

bool frame_is_interpreted = is_interpreted_frame();
if (frame_is_interpreted) {
map->make_integer_regs_unsaved();
Expand Down
Loading

0 comments on commit be40873

Please sign in to comment.