865 size_t framesize = C->frame_size_in_bytes(); |
865 size_t framesize = C->frame_size_in_bytes(); |
866 size_t bangsize = C->bang_size_in_bytes(); |
866 size_t bangsize = C->bang_size_in_bytes(); |
867 |
867 |
868 assert(framesize % wordSize == 0, "must preserve wordSize alignment"); |
868 assert(framesize % wordSize == 0, "must preserve wordSize alignment"); |
869 |
869 |
|
870 if (C->clinit_barrier_on_entry()) { |
|
871 assert(!C->method()->holder()->is_not_initialized(), "initialization should have been started"); |
|
872 |
|
873 Label L_skip_barrier; |
|
874 Register klass = Z_R1_scratch; |
|
875 |
|
876 // Notify OOP recorder (don't need the relocation) |
|
877 AddressLiteral md = __ constant_metadata_address(C->method()->holder()->constant_encoding()); |
|
878 __ load_const_optimized(klass, md.value()); |
|
879 __ clinit_barrier(klass, Z_thread, &L_skip_barrier /*L_fast_path*/); |
|
880 |
|
881 __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub()); |
|
882 __ z_br(klass); |
|
883 |
|
884 __ bind(L_skip_barrier); |
|
885 } |
|
886 |
870 // Calls to C2R adapters often do not accept exceptional returns. |
887 // Calls to C2R adapters often do not accept exceptional returns. |
871 // We require that their callers must bang for them. But be |
888 // We require that their callers must bang for them. But be |
872 // careful, because some VM calls (such as call site linkage) can |
889 // careful, because some VM calls (such as call site linkage) can |
873 // use several kilobytes of stack. But the stack safety zone should |
890 // use several kilobytes of stack. But the stack safety zone should |
874 // account for that. See bugs 4446381, 4468289, 4497237. |
891 // account for that. See bugs 4446381, 4468289, 4497237. |
5386 |
5403 |
5387 instruct castII(iRegI dst) %{ |
5404 instruct castII(iRegI dst) %{ |
5388 match(Set dst (CastII dst)); |
5405 match(Set dst (CastII dst)); |
5389 size(0); |
5406 size(0); |
5390 format %{ "# castII of $dst" %} |
5407 format %{ "# castII of $dst" %} |
|
5408 ins_encode(/*empty*/); |
|
5409 ins_pipe(pipe_class_dummy); |
|
5410 %} |
|
5411 |
|
5412 instruct castLL(iRegL dst) %{ |
|
5413 match(Set dst (CastLL dst)); |
|
5414 size(0); |
|
5415 format %{ "# castLL of $dst" %} |
5391 ins_encode(/*empty*/); |
5416 ins_encode(/*empty*/); |
5392 ins_pipe(pipe_class_dummy); |
5417 ins_pipe(pipe_class_dummy); |
5393 %} |
5418 %} |
5394 |
5419 |
5395 |
5420 |