< prev index next >
src/hotspot/cpu/aarch64/frame_aarch64.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. 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
--- 1,7 ----
/*
! * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. 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
*** 57,76 ****
address sp = (address)_sp;
address fp = (address)_fp;
address unextended_sp = (address)_unextended_sp;
// consider stack guards when trying to determine "safe" stack pointers
- static size_t stack_guard_size = os::uses_stack_guard_pages() ?
- (JavaThread::stack_red_zone_size() + JavaThread::stack_yellow_zone_size()) : 0;
- size_t usable_stack_size = thread->stack_size() - stack_guard_size;
-
// sp must be within the usable part of the stack (not in guards)
! bool sp_safe = (sp < thread->stack_base()) &&
! (sp >= thread->stack_base() - usable_stack_size);
!
!
! if (!sp_safe) {
return false;
}
// When we are running interpreted code the machine stack pointer, SP, is
// set low enough so that the Java expression stack can grow and shrink
--- 57,68 ----
address sp = (address)_sp;
address fp = (address)_fp;
address unextended_sp = (address)_unextended_sp;
// consider stack guards when trying to determine "safe" stack pointers
// sp must be within the usable part of the stack (not in guards)
! if (!thread->is_in_usable_stack(sp)) {
return false;
}
// When we are running interpreted code the machine stack pointer, SP, is
// set low enough so that the Java expression stack can grow and shrink
*** 564,574 ****
// validate locals
address locals = (address) *interpreter_frame_locals_addr();
! if (locals > thread->stack_base() || locals < (address) fp()) return false;
// We'd have to be pretty unlucky to be mislead at this point
return true;
}
--- 556,566 ----
// validate locals
address locals = (address) *interpreter_frame_locals_addr();
! if (locals >= thread->stack_base() || locals < (address) fp()) return false;
// We'd have to be pretty unlucky to be mislead at this point
return true;
}
< prev index next >