src/cpu/x86/vm/methodHandles_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7081938 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/methodHandles_x86.cpp

Print this page




 393     __ stop("load_stack_move of garbage value");
 394     __ BIND(L_ok);
 395   }
 396   BLOCK_COMMENT("} load_stack_move");
 397 }
 398 
 399 #ifdef ASSERT
 400 void MethodHandles::RicochetFrame::verify_offsets() {
 401   // Check compatibility of this struct with the more generally used offsets of class frame:
 402   int ebp_off = sender_link_offset_in_bytes();  // offset from struct base to local rbp value
 403   assert(ebp_off + wordSize*frame::interpreter_frame_method_offset      == saved_args_base_offset_in_bytes(), "");
 404   assert(ebp_off + wordSize*frame::interpreter_frame_last_sp_offset     == conversion_offset_in_bytes(), "");
 405   assert(ebp_off + wordSize*frame::interpreter_frame_sender_sp_offset   == exact_sender_sp_offset_in_bytes(), "");
 406   // These last two have to be exact:
 407   assert(ebp_off + wordSize*frame::link_offset                          == sender_link_offset_in_bytes(), "");
 408   assert(ebp_off + wordSize*frame::return_addr_offset                   == sender_pc_offset_in_bytes(), "");
 409 }
 410 
 411 void MethodHandles::RicochetFrame::verify() const {
 412   verify_offsets();
 413   assert(magic_number_1() == MAGIC_NUMBER_1, "");
 414   assert(magic_number_2() == MAGIC_NUMBER_2, "");
 415   if (!Universe::heap()->is_gc_active()) {
 416     if (saved_args_layout() != NULL) {
 417       assert(saved_args_layout()->is_method(), "must be valid oop");
 418     }
 419     if (saved_target() != NULL) {
 420       assert(java_lang_invoke_MethodHandle::is_instance(saved_target()), "checking frame value");
 421     }
 422   }
 423   int conv_op = adapter_conversion_op(conversion());
 424   assert(conv_op == java_lang_invoke_AdapterMethodHandle::OP_COLLECT_ARGS ||
 425          conv_op == java_lang_invoke_AdapterMethodHandle::OP_FOLD_ARGS ||
 426          conv_op == java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_REF,
 427          "must be a sane conversion");
 428   if (has_return_value_slot()) {
 429     assert(*return_value_slot_addr() == RETURN_VALUE_PLACEHOLDER, "");
 430   }
 431 }
 432 #endif //PRODUCT
 433 
 434 #ifdef ASSERT




 393     __ stop("load_stack_move of garbage value");
 394     __ BIND(L_ok);
 395   }
 396   BLOCK_COMMENT("} load_stack_move");
 397 }
 398 
 399 #ifdef ASSERT
 400 void MethodHandles::RicochetFrame::verify_offsets() {
 401   // Check compatibility of this struct with the more generally used offsets of class frame:
 402   int ebp_off = sender_link_offset_in_bytes();  // offset from struct base to local rbp value
 403   assert(ebp_off + wordSize*frame::interpreter_frame_method_offset      == saved_args_base_offset_in_bytes(), "");
 404   assert(ebp_off + wordSize*frame::interpreter_frame_last_sp_offset     == conversion_offset_in_bytes(), "");
 405   assert(ebp_off + wordSize*frame::interpreter_frame_sender_sp_offset   == exact_sender_sp_offset_in_bytes(), "");
 406   // These last two have to be exact:
 407   assert(ebp_off + wordSize*frame::link_offset                          == sender_link_offset_in_bytes(), "");
 408   assert(ebp_off + wordSize*frame::return_addr_offset                   == sender_pc_offset_in_bytes(), "");
 409 }
 410 
 411 void MethodHandles::RicochetFrame::verify() const {
 412   verify_offsets();
 413   assert(magic_number_1() == MAGIC_NUMBER_1, err_msg(PTR_FORMAT " == " PTR_FORMAT, magic_number_1(), MAGIC_NUMBER_1));
 414   assert(magic_number_2() == MAGIC_NUMBER_2, err_msg(PTR_FORMAT " == " PTR_FORMAT, magic_number_2(), MAGIC_NUMBER_2));
 415   if (!Universe::heap()->is_gc_active()) {
 416     if (saved_args_layout() != NULL) {
 417       assert(saved_args_layout()->is_method(), "must be valid oop");
 418     }
 419     if (saved_target() != NULL) {
 420       assert(java_lang_invoke_MethodHandle::is_instance(saved_target()), "checking frame value");
 421     }
 422   }
 423   int conv_op = adapter_conversion_op(conversion());
 424   assert(conv_op == java_lang_invoke_AdapterMethodHandle::OP_COLLECT_ARGS ||
 425          conv_op == java_lang_invoke_AdapterMethodHandle::OP_FOLD_ARGS ||
 426          conv_op == java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_REF,
 427          "must be a sane conversion");
 428   if (has_return_value_slot()) {
 429     assert(*return_value_slot_addr() == RETURN_VALUE_PLACEHOLDER, "");
 430   }
 431 }
 432 #endif //PRODUCT
 433 
 434 #ifdef ASSERT


src/cpu/x86/vm/methodHandles_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File