# HG changeset patch # User chrisphi # Date 1461780971 -3600 # Node ID 964754807fa6d4f3ea22fed588b30cd2a160495b # Parent a770f5694856c340aee280b3c727dbdda26fdf58 8155261: Zero broken since HS23 update Summary: Update Zero following imported JSR292 changes Reviewed-by: andrew, aph diff -r a770f5694856 -r 964754807fa6 src/cpu/zero/vm/copy_zero.hpp --- a/src/cpu/zero/vm/copy_zero.hpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/cpu/zero/vm/copy_zero.hpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -169,6 +169,7 @@ } static void pd_fill_to_bytes(void* to, size_t count, jubyte value) { + assert(count > 0, "count for pd_fill_to_bytes should be greater than zero"); memset(to, value, count); } @@ -177,6 +178,7 @@ } static void pd_zero_to_bytes(void* to, size_t count) { + assert(count > 0, "count for pd_zero_to_bytes should be greater than zero"); memset(to, 0, count); } diff -r a770f5694856 -r 964754807fa6 src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc. + * Copyright 2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -811,11 +811,10 @@ case MethodHandles::_bound_int_mh: case MethodHandles::_bound_long_mh: { - BasicType arg_type = T_ILLEGAL; - int arg_mask = -1; - int arg_slots = -1; - MethodHandles::get_ek_bound_mh_info( - entry_kind, arg_type, arg_mask, arg_slots); + BasicType arg_type = MethodHandles::ek_bound_mh_arg_type(entry_kind); + int arg_mask = 0; + int arg_slots = type2size[arg_type];; + int arg_slot = java_lang_invoke_BoundMethodHandle::vmargslot(method_handle); @@ -961,10 +960,10 @@ java_lang_invoke_AdapterMethodHandle::conversion(method_handle); int arg2 = MethodHandles::adapter_conversion_vminfo(conv); - int swap_bytes = 0, rotate = 0; - MethodHandles::get_ek_adapter_opt_swap_rot_info( - entry_kind, swap_bytes, rotate); - int swap_slots = swap_bytes >> LogBytesPerWord; + int swap_slots = MethodHandles::ek_adapter_opt_swap_slots(entry_kind); + int rotate = MethodHandles::ek_adapter_opt_swap_mode(entry_kind); + int swap_bytes = swap_slots * Interpreter::stackElementSize; + swap_slots = swap_bytes >> LogBytesPerWord; intptr_t tmp; switch (rotate) { diff -r a770f5694856 -r 964754807fa6 src/cpu/zero/vm/methodHandles_zero.cpp --- a/src/cpu/zero/vm/methodHandles_zero.cpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/cpu/zero/vm/methodHandles_zero.cpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2009, 2010, 2011 Red Hat, Inc. + * Copyright 2009, 2010, 2011, 2012 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,12 +38,29 @@ |(1<pc(); + (*bounce_offset) = _masm->pc() - start; + (*exception_offset) = _masm->pc() - start; +} + +frame MethodHandles::ricochet_frame_sender(const frame& fr, RegisterMap *map) { + ShouldNotCallThis(); +} + +void MethodHandles::ricochet_frame_oops_do(const frame& fr, OopClosure* blk, const RegisterMap* reg_map) { +} diff -r a770f5694856 -r 964754807fa6 src/cpu/zero/vm/methodHandles_zero.hpp --- a/src/cpu/zero/vm/methodHandles_zero.hpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/cpu/zero/vm/methodHandles_zero.hpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Red Hat, Inc. + * Copyright 2011, 2012 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,3 +29,14 @@ adapter_code_size = 0 }; +class RicochetFrame : public ResourceObj { + friend class MethodHandles; + public: + +static void generate_ricochet_blob(MacroAssembler* _masm, + // output params: + int* bounce_offset, + int* exception_offset, + int* frame_size_in_words); + +}; diff -r a770f5694856 -r 964754807fa6 src/cpu/zero/vm/sharedRuntime_zero.cpp --- a/src/cpu/zero/vm/sharedRuntime_zero.cpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/cpu/zero/vm/sharedRuntime_zero.cpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,6 +1,6 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2013, Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,6 +47,11 @@ #endif +static address zero_null_code_stub() { + address start = ShouldNotCallThisStub(); + return start; +} + int SharedRuntime::java_calling_convention(const BasicType *sig_bt, VMRegPair *regs, int total_args_passed, @@ -63,9 +68,9 @@ AdapterFingerPrint *fingerprint) { return AdapterHandlerLibrary::new_entry( fingerprint, - ShouldNotCallThisStub(), - ShouldNotCallThisStub(), - ShouldNotCallThisStub()); + CAST_FROM_FN_PTR(address,zero_null_code_stub), + CAST_FROM_FN_PTR(address,zero_null_code_stub), + CAST_FROM_FN_PTR(address,zero_null_code_stub)); } nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm, @@ -96,19 +101,20 @@ ShouldNotCallThis(); } +JRT_LEAF(void, zero_stub()) + ShouldNotCallThis(); +JRT_END + static RuntimeStub* generate_empty_runtime_stub(const char* name) { - CodeBuffer buffer(name, 0, 0); - return RuntimeStub::new_runtime_stub(name, &buffer, 0, 0, NULL, false); + return CAST_FROM_FN_PTR(RuntimeStub*,zero_stub); } static SafepointBlob* generate_empty_safepoint_blob() { - CodeBuffer buffer("handler_blob", 0, 0); - return SafepointBlob::create(&buffer, NULL, 0); + return CAST_FROM_FN_PTR(SafepointBlob*,zero_stub); } static DeoptimizationBlob* generate_empty_deopt_blob() { - CodeBuffer buffer("handler_blob", 0, 0); - return DeoptimizationBlob::create(&buffer, NULL, 0, 0, 0, 0); + return CAST_FROM_FN_PTR(DeoptimizationBlob*,zero_stub); } diff -r a770f5694856 -r 964754807fa6 src/share/vm/asm/codeBuffer.cpp --- a/src/share/vm/asm/codeBuffer.cpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/share/vm/asm/codeBuffer.cpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -674,7 +674,7 @@ } } - if (dest->blob() == NULL) { + if (dest->blob() == NULL && dest_filled != NULL) { // Destination is a final resting place, not just another buffer. // Normalize uninitialized bytes in the final padding. Copy::fill_to_bytes(dest_filled, dest_end - dest_filled, diff -r a770f5694856 -r 964754807fa6 src/share/vm/runtime/vmStructs.cpp --- a/src/share/vm/runtime/vmStructs.cpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/share/vm/runtime/vmStructs.cpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,5 +1,6 @@ /* * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -828,10 +829,10 @@ /* CodeBlobs (NOTE: incomplete, but only a little) */ \ /***************************************************/ \ \ - X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _sender_pc, address)) \ - X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _exact_sender_sp, intptr_t*)) \ - X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _sender_link, intptr_t*)) \ - X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _saved_args_base, intptr_t*)) \ + NOT_ZERO(X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _sender_pc, address))) \ + NOT_ZERO(X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _exact_sender_sp, intptr_t*))) \ + NOT_ZERO(X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _sender_link, intptr_t*))) \ + NOT_ZERO(X86_ONLY(nonstatic_field(MethodHandles::RicochetFrame, _saved_args_base, intptr_t*))) \ \ static_field(SharedRuntime, _ricochet_blob, RicochetBlob*) \ \ @@ -2530,7 +2531,7 @@ /* frame */ \ /**********************/ \ \ - X86_ONLY(declare_constant(frame::entry_frame_call_wrapper_offset)) \ + NOT_ZERO(X86_ONLY(declare_constant(frame::entry_frame_call_wrapper_offset))) \ declare_constant(frame::pc_return_offset) \ \ /*************/ \ diff -r a770f5694856 -r 964754807fa6 src/share/vm/utilities/macros.hpp --- a/src/share/vm/utilities/macros.hpp Wed Jan 27 22:38:47 2016 +0000 +++ b/src/share/vm/utilities/macros.hpp Wed Apr 27 19:16:11 2016 +0100 @@ -1,5 +1,6 @@ /* * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -177,6 +178,22 @@ #define NOT_WIN64(code) code #endif +#if defined(ZERO) +#define ZERO_ONLY(code) code +#define NOT_ZERO(code) +#else +#define ZERO_ONLY(code) +#define NOT_ZERO(code) code +#endif + +#if defined(SHARK) +#define SHARK_ONLY(code) code +#define NOT_SHARK(code) +#else +#define SHARK_ONLY(code) +#define NOT_SHARK(code) code +#endif + #if defined(IA32) || defined(AMD64) #define X86 #define X86_ONLY(code) code