inlinevoid ZeroStack::overflow_check(int required_words, TRAPS) { // Check the Zero stack if (available_words() < required_words) {
handle_overflow(THREAD); return;
}
// Check the ABI stack if (abi_stack_available(THREAD) < 0) {
handle_overflow(THREAD); return;
}
}
// This method returns the amount of ABI stack available for us // to use under normal circumstances. Note that the returned // value can be negative. inlineint ZeroStack::abi_stack_available(Thread *thread) const {
assert(Thread::current() == thread, "should run in the same thread"); int stack_used = thread->stack_base() - (address) &stack_used
+ (StackOverflow::stack_guard_zone_size() + StackOverflow::stack_shadow_zone_size()); int stack_free = thread->stack_size() - stack_used; return stack_free;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.