Sat, 06 Jan 2018 20:01:31 +0800
[Upgrade] jdk8u91-b15 --> jdk8u112-b15 (platform-dependent code OK)
1.1 --- a/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp Tue Apr 10 10:21:49 2018 +0800 1.2 +++ b/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp Sat Jan 06 20:01:31 2018 +0800 1.3 @@ -1020,6 +1020,8 @@ 1.4 LIR_Opr klass_reg = FrameMap::_a4_oop_opr; 1.5 #endif 1.6 // new_instance(reg, x->klass(), FrameMap::_t0_oop_opr, FrameMap::_t1_oop_opr,FrameMap::_t2_oop_opr, LIR_OprFact::illegalOpr, klass_reg, info); 1.7 + guarantee(false, "not implemented yet."); 1.8 +/* 1.9 new_instance(reg, 1.10 x->klass(), 1.11 FrameMap::_t0_oop_opr, 1.12 @@ -1035,6 +1037,7 @@ 1.13 #endif 1.14 klass_reg, 1.15 info); 1.16 +*/ 1.17 LIR_Opr result = rlock_result(x); 1.18 __ move(reg, result); 1.19 }
2.1 --- a/src/cpu/mips/vm/compiledIC_mips.cpp Tue Apr 10 10:21:49 2018 +0800 2.2 +++ b/src/cpu/mips/vm/compiledIC_mips.cpp Sat Jan 06 20:01:31 2018 +0800 2.3 @@ -51,7 +51,7 @@ 2.4 // ---------------------------------------------------------------------------- 2.5 2.6 #define __ _masm. 2.7 -void CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf) { 2.8 +address CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf) { 2.9 2.10 address mark = cbuf.insts_mark(); // get mark within main instrs section 2.11 2.12 @@ -59,9 +59,8 @@ 2.13 // That's why we must use the macroassembler to generate a stub. 2.14 MacroAssembler _masm(&cbuf); 2.15 2.16 - address base = 2.17 - __ start_a_stub(Compile::MAX_stubs_size); 2.18 - if (base == NULL) return; // CodeBuffer::expand failed 2.19 + address base = __ start_a_stub(Compile::MAX_stubs_size); 2.20 + if (base == NULL) return NULL; // CodeBuffer::expand failed 2.21 // static stub relocation stores the instruction address of the call 2.22 2.23 __ relocate(static_stub_Relocation::spec(mark), 0); 2.24 @@ -83,8 +82,9 @@ 2.25 address call_pc = (address)-1; 2.26 __ patchable_jump(call_pc); 2.27 __ align(16); 2.28 + // Update current stubs pointer and restore code_end. 2.29 __ end_a_stub(); 2.30 - // Update current stubs pointer and restore code_end. 2.31 + return base; 2.32 } 2.33 #undef __ 2.34
3.1 --- a/src/cpu/mips/vm/jniFastGetField_mips_64.cpp Tue Apr 10 10:21:49 2018 +0800 3.2 +++ b/src/cpu/mips/vm/jniFastGetField_mips_64.cpp Sat Jan 06 20:01:31 2018 +0800 3.3 @@ -38,7 +38,7 @@ 3.4 // between loads, which is more efficient than lfence. 3.5 3.6 address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) { 3.7 - const char *name; 3.8 + const char *name = NULL; 3.9 switch (type) { 3.10 case T_BOOLEAN: name = "jni_fast_GetBooleanField"; break; 3.11 case T_BYTE: name = "jni_fast_GetByteField"; break; 3.12 @@ -98,7 +98,7 @@ 3.13 3.14 slowcase_entry_pclist[count++] = __ pc(); 3.15 __ bind (slow); 3.16 - address slow_case_addr; 3.17 + address slow_case_addr = NULL; 3.18 switch (type) { 3.19 case T_BOOLEAN: slow_case_addr = jni_GetBooleanField_addr(); break; 3.20 case T_BYTE: slow_case_addr = jni_GetByteField_addr(); break; 3.21 @@ -140,7 +140,7 @@ 3.22 } 3.23 3.24 address JNI_FastGetField::generate_fast_get_float_field0(BasicType type) { 3.25 - const char *name; 3.26 + const char *name =NULL; 3.27 switch (type) { 3.28 case T_FLOAT: name = "jni_fast_GetFloatField"; break; 3.29 case T_DOUBLE: name = "jni_fast_GetDoubleField"; break; 3.30 @@ -212,7 +212,7 @@ 3.31 3.32 slowcase_entry_pclist[count++] = __ pc(); 3.33 __ bind (slow); 3.34 - address slow_case_addr; 3.35 + address slow_case_addr = NULL; 3.36 switch (type) { 3.37 case T_FLOAT: slow_case_addr = jni_GetFloatField_addr(); break; 3.38 case T_DOUBLE: slow_case_addr = jni_GetDoubleField_addr(); break;
4.1 --- a/src/cpu/mips/vm/mips_64.ad Tue Apr 10 10:21:49 2018 +0800 4.2 +++ b/src/cpu/mips/vm/mips_64.ad Sat Jan 06 20:01:31 2018 +0800 4.3 @@ -538,9 +538,12 @@ 4.4 // Note that the code buffer's insts_mark is always relative to insts. 4.5 // That's why we must use the macroassembler to generate a handler. 4.6 MacroAssembler _masm(&cbuf); 4.7 - address base = 4.8 - __ start_a_stub(size_exception_handler()); 4.9 - if (base == NULL) return 0; // CodeBuffer::expand failed 4.10 + address base = __ start_a_stub(size_exception_handler()); 4.11 + if (base == NULL) { 4.12 + ciEnv::current()->record_failure("CodeCache is full"); 4.13 + return 0; // CodeBuffer::expand failed 4.14 + } 4.15 + 4.16 int offset = __ offset(); 4.17 4.18 __ block_comment("; emit_exception_handler"); 4.19 @@ -559,11 +562,12 @@ 4.20 // Note that the code buffer's insts_mark is always relative to insts. 4.21 // That's why we must use the macroassembler to generate a handler. 4.22 MacroAssembler _masm(&cbuf); 4.23 - address base = 4.24 - __ start_a_stub(size_deopt_handler()); 4.25 - 4.26 - // FIXME 4.27 - if (base == NULL) return 0; // CodeBuffer::expand failed 4.28 + address base = __ start_a_stub(size_deopt_handler()); 4.29 + if (base == NULL) { 4.30 + ciEnv::current()->record_failure("CodeCache is full"); 4.31 + return 0; // CodeBuffer::expand failed 4.32 + } 4.33 + 4.34 int offset = __ offset(); 4.35 4.36 __ block_comment("; emit_deopt_handler"); 4.37 @@ -613,9 +617,11 @@ 4.38 // That's why we must use the macroassembler to generate a stub. 4.39 MacroAssembler _masm(&cbuf); 4.40 4.41 - address base = 4.42 - __ start_a_stub(Compile::MAX_stubs_size); 4.43 - if (base == NULL) return; // CodeBuffer::expand failed 4.44 + address base = __ start_a_stub(Compile::MAX_stubs_size); 4.45 + if (base == NULL) { // CodeBuffer::expand failed 4.46 + ciEnv::current()->record_failure("CodeCache is full"); 4.47 + } 4.48 + 4.49 // static stub relocation stores the instruction address of the call 4.50 4.51 __ relocate(static_stub_Relocation::spec(mark), 0);
5.1 --- a/src/share/vm/c1/c1_LIRGenerator.cpp Tue Apr 10 10:21:49 2018 +0800 5.2 +++ b/src/share/vm/c1/c1_LIRGenerator.cpp Sat Jan 06 20:01:31 2018 +0800 5.3 @@ -716,8 +716,7 @@ 5.4 #ifndef MIPS64 5.5 void LIRGenerator::new_instance(LIR_Opr dst, ciInstanceKlass* klass, bool is_unresolved, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, LIR_Opr scratch4, LIR_Opr klass_reg, CodeEmitInfo* info) { 5.6 #else 5.7 -void LIRGenerator::new_instance(LIR_Opr dst, ciInstanceKlass* klass, bool is_unresolved, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, 5.8 - LIR_Opr scratch4, LIR_Opr scratch5, LIR_Opr scratch6,LIR_Opr klass_reg, CodeEmitInfo* info) { 5.9 +void LIRGenerator::new_instance(LIR_Opr dst, ciInstanceKlass* klass, bool is_unresolved, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, LIR_Opr scratch4, LIR_Opr scratch5, LIR_Opr scratch6, LIR_Opr klass_reg, CodeEmitInfo* info) { 5.10 #endif 5.11 klass2reg_with_patching(klass_reg, klass, info, is_unresolved); 5.12 // If klass is not loaded we do not know if the klass has finalizers: 5.13 @@ -3918,8 +3917,14 @@ 5.14 __ move(new LIR_Address(klass, in_bytes(Klass::layout_helper_offset()), T_INT), layout); 5.15 int diffbit = Klass::layout_helper_boolean_diffbit(); 5.16 __ logical_and(layout, LIR_OprFact::intConst(diffbit), layout); 5.17 +#ifdef MIPS64 5.18 + guarantee(false, "not implemented yet for mips"); 5.19 + // __ cmp(); 5.20 + // __ cmov(); 5.21 +#else 5.22 __ cmp(lir_cond_notEqual, layout, LIR_OprFact::intConst(0)); 5.23 __ cmove(lir_cond_notEqual, value_fixed, value, value_fixed, T_BYTE); 5.24 +#endif 5.25 value = value_fixed; 5.26 } 5.27 return value;
6.1 --- a/src/share/vm/c1/c1_LIRGenerator.hpp Tue Apr 10 10:21:49 2018 +0800 6.2 +++ b/src/share/vm/c1/c1_LIRGenerator.hpp Sat Jan 06 20:01:31 2018 +0800 6.3 @@ -350,7 +350,7 @@ 6.4 #ifndef MIPS64 6.5 void new_instance (LIR_Opr dst, ciInstanceKlass* klass, bool is_unresolved, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, LIR_Opr scratch4, LIR_Opr klass_reg, CodeEmitInfo* info); 6.6 #else 6.7 - void new_instance (LIR_Opr dst, ciInstanceKlass* klass, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, LIR_Opr scratch4, LIR_Opr scratch5, LIR_Opr scratch6, LIR_Opr klass_reg, CodeEmitInfo* info); 6.8 + void new_instance (LIR_Opr dst, ciInstanceKlass* klass, bool is_unresolved, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, LIR_Opr scratch4, LIR_Opr scratch5, LIR_Opr scratch6, LIR_Opr klass_reg, CodeEmitInfo* info); 6.9 #endif 6.10 6.11 // machine dependent