Hi Mandy,
webrev.03 looks good to me!
best regards,
-- daniel
On 14/09/16 01:04, Mandy Chung wrote:
Yes that’s one option.
JVM_STACKWALK_FILL_CLASS_REFS_ONLY is not necessarily used to get caller class. For
example, AccessControlContext is interested in protection domains. We could build a
specialized impl class to walk the stack fetching Class<?> only whereas
getCallerClass will stop walking after a few top frames. So a different bit will
enable future experiment. Having said that, the assert should be reverted and minor
adjustment:
@@ -140,6 +143,13 @@
fill_stackframe(stackFrame, method, bci);
} else {
assert (use_frames_array(mode) == false, "Bad mode for get caller
class");
+ if (get_caller_class(mode) && index == start_index &&
method->caller_sensitive()) {
+ ResourceMark rm(THREAD);
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(),
+ err_msg("StackWalker::getCallerClass called from @CallerSensitive %s
method",
+ method->name_and_sig_as_C_string()));
+ }
+
http://cr.openjdk.java.net/~mchung/jdk9/webrevs/8157464/webrev.03/
Mandy