< prev index next >
src/hotspot/share/runtime/javaCalls.hpp
Print this page
rev 52749 : Bootstrap method consolidation
* clean up and simplify JDK support code for BSM invocation
* simplify JVM bootstrap handshake: use BootstrapCallInfo only
* remove unused JVM paths and data fields
* move bootstrap argument processing from MethodHandleNatives to ConstantPool
* remove ConstantGroup; merge argument access into BootstrapCallInfo
* adjust BSM argument access: remove copyArguments, add argumentRef API
* add metadata-free BSM modes, including symbolic arguments from CP
@@ -161,38 +161,48 @@
value_state_handle,
value_state_jobject,
value_state_limit
};
+ void size_check(int words = 1) {
+ assert(_size + (words-1) < _max_size, "oob: increase max_size argument to JavaCallArguments");
+ }
+
inline void push_oop(Handle h) {
+ size_check();
_value_state[_size] = value_state_handle;
_size = push_oop_impl(h.raw_value(), _size);
}
inline void push_jobject(jobject h) {
+ size_check();
_value_state[_size] = value_state_jobject;
_size = push_oop_impl(h, _size);
}
inline void push_int(int i) {
+ size_check();
_value_state[_size] = value_state_primitive;
JNITypes::put_int(i, _value, _size);
}
inline void push_double(double d) {
+ size_check(2);
_value_state[_size] = value_state_primitive;
_value_state[_size + 1] = value_state_primitive;
JNITypes::put_double(d, _value, _size);
}
inline void push_long(jlong l) {
+ size_check(2);
_value_state[_size] = value_state_primitive;
_value_state[_size + 1] = value_state_primitive;
JNITypes::put_long(l, _value, _size);
}
inline void push_float(float f) {
+ size_check();
_value_state[_size] = value_state_primitive;
JNITypes::put_float(f, _value, _size);
}
// receiver
@@ -208,10 +218,11 @@
assert(_start_at_zero == false, "can only be called once");
_start_at_zero = true;
_value_state--;
_value--;
_size++;
+ DEBUG_ONLY(_max_size++);
_value_state[0] = value_state_handle;
push_oop_impl(h.raw_value(), 0);
}
// Converts all Handles to oops, and returns a reference to parameter vector
< prev index next >