--- a/src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp Mon Jan 22 12:04:12 2018 +0100
+++ b/src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp Fri Jan 19 17:01:34 2018 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -991,8 +991,8 @@
int offset = -1;
switch (c->type()) {
+ case T_FLOAT: type = T_INT; // Float constants are stored by int store instructions.
case T_INT:
- case T_FLOAT:
case T_ADDRESS: {
LIR_Opr tmp = FrameMap::O7_opr;
int value = c->as_jint_bits();
@@ -1202,6 +1202,7 @@
__ stw(tmp, to.base(), to.disp());
break;
}
+ case T_ADDRESS:
case T_OBJECT: {
Register tmp = O7;
Address from = frame_map()->address_for_slot(src->single_stack_ix());
@@ -1355,7 +1356,6 @@
}
}
-
void LIR_Assembler::reg2mem(LIR_Opr from_reg, LIR_Opr dest, BasicType type,
LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack,
bool wide, bool unaligned) {
@@ -2265,10 +2265,10 @@
op->obj()->as_register() == O0 &&
op->klass()->as_register() == G5, "must be");
if (op->init_check()) {
+ add_debug_info_for_null_check_here(op->stub()->info());
__ ldub(op->klass()->as_register(),
in_bytes(InstanceKlass::init_state_offset()),
op->tmp1()->as_register());
- add_debug_info_for_null_check_here(op->stub()->info());
__ cmp(op->tmp1()->as_register(), InstanceKlass::fully_initialized);
__ br(Assembler::notEqual, false, Assembler::pn, *op->stub()->entry());
__ delayed()->nop();