--- a/hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp Fri Dec 04 14:06:38 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp Fri Dec 04 16:38:04 2015 +0100
@@ -1,6 +1,6 @@
/*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2014 SAP AG. All rights reserved.
+ * Copyright 2012, 2015 SAP AG. 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
@@ -504,8 +504,7 @@
frame cur_frame = os::current_frame();
// Robust search of trace_calling_frame (independant of inlining).
- // Assumes saved_regs comes from a pusha in the trace_calling_frame.
- assert(cur_frame.sp() < saved_regs, "registers not saved on stack ?");
+ assert(cur_frame.sp() <= saved_regs, "registers not saved on stack ?");
frame trace_calling_frame = os::get_sender_for_C_frame(&cur_frame);
while (trace_calling_frame.fp() < saved_regs) {
trace_calling_frame = os::get_sender_for_C_frame(&trace_calling_frame);
@@ -539,7 +538,7 @@
BLOCK_COMMENT("trace_method_handle {");
const Register tmp = R11; // Will be preserved.
- const int nbytes_save = 11*8; // volatile gprs except R0
+ const int nbytes_save = MacroAssembler::num_volatile_regs * 8;
__ save_volatile_gprs(R1_SP, -nbytes_save); // except R0
__ save_LR_CR(tmp); // save in old frame