8168712: [AOT] assert(false) failed: DEBUG MESSAGE: InterpreterMacroAssembler::call_VM_base: last_sp != NULL
Skip the assert for this specific case, as it is not an issue. Reviewed-by: coleenp, dlong, kvn
This commit is contained in:
parent
a5d5806cb4
commit
dc50d0a8b2
src/hotspot/cpu
test/hotspot/jtreg/compiler/runtime
@ -2195,6 +2195,13 @@ void TemplateTable::_return(TosState state)
|
||||
__ bind(skip_register_finalizer);
|
||||
}
|
||||
|
||||
// Explicitly reset last_sp, for handling special case in TemplateInterpreter::deopt_reexecute_entry
|
||||
#ifdef ASSERT
|
||||
if (state == vtos) {
|
||||
__ str(zr, Address(rfp, frame::interpreter_frame_last_sp_offset * wordSize));
|
||||
}
|
||||
#endif
|
||||
|
||||
// Issue a StoreStore barrier after all stores but before return
|
||||
// from any constructor for any class with a final field. We don't
|
||||
// know if this is a finalizer, so we always do so.
|
||||
|
@ -2844,6 +2844,19 @@ void TemplateTable::_return(TosState state) {
|
||||
__ bind(skip_register_finalizer);
|
||||
}
|
||||
|
||||
// Explicitly reset last_sp, for handling special case in TemplateInterpreter::deopt_reexecute_entry
|
||||
#ifdef ASSERT
|
||||
if (state == vtos) {
|
||||
#ifndef AARCH64
|
||||
__ mov(Rtemp, 0);
|
||||
__ str(Rtemp, Address(FP, frame::interpreter_frame_last_sp_offset * wordSize));
|
||||
#else
|
||||
__ restore_sp_after_call(Rtemp);
|
||||
__ restore_stack_top();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
// Narrow result if state is itos but result type is smaller.
|
||||
// Need to narrow in the return bytecode rather than in generate_return_entry
|
||||
// since compiled code callers expect the result to already be narrowed.
|
||||
|
@ -2563,6 +2563,13 @@ void TemplateTable::_return(TosState state) {
|
||||
__ bind(skip_register_finalizer);
|
||||
}
|
||||
|
||||
// Explicitly reset last_sp, for handling special case in TemplateInterpreter::deopt_reexecute_entry
|
||||
#ifdef ASSERT
|
||||
if (state == vtos) {
|
||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Narrow result if state is itos but result type is smaller.
|
||||
// Need to narrow in the return bytecode rather than in generate_return_entry
|
||||
// since compiled code callers expect the result to already be narrowed.
|
||||
|
49
test/hotspot/jtreg/compiler/runtime/Test8168712.java
Normal file
49
test/hotspot/jtreg/compiler/runtime/Test8168712.java
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 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
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @requires vm.simpleArch == "x64" & vm.debug
|
||||
* @bug 8168712
|
||||
*
|
||||
* @run main/othervm -XX:CompileCommand=compileonly,Test8168712.* -XX:CompileCommand=compileonly,*Object.* -XX:+DTraceMethodProbes -XX:-UseOnStackReplacement -XX:+DeoptimizeRandom compiler.runtime.Test8168712
|
||||
*/
|
||||
package compiler.runtime;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class Test8168712 {
|
||||
static HashSet<Test8168712> m = new HashSet<>();
|
||||
public static void main(String args[]) {
|
||||
int i = 0;
|
||||
while (i++<15000) {
|
||||
test();
|
||||
}
|
||||
}
|
||||
static Test8168712 test() {
|
||||
return new Test8168712();
|
||||
}
|
||||
protected void finalize() {
|
||||
m.add(this);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user