src/share/vm/opto/library_call.cpp

changeset 9756
2be326848943
parent 9703
2fdf635bcf28
parent 9720
67dddb025b7b
child 9806
758c07667682
equal deleted inserted replaced
9707:b87dc103bf45 9756:2be326848943
1 /* 1 /*
2 * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
3801 return always_branch; 3801 return always_branch;
3802 } 3802 }
3803 } 3803 }
3804 // Now test the correct condition. 3804 // Now test the correct condition.
3805 jint nval = (obj_array 3805 jint nval = (obj_array
3806 ? ((jint)Klass::_lh_array_tag_type_value 3806 ? (jint)(Klass::_lh_array_tag_type_value
3807 << Klass::_lh_array_tag_shift) 3807 << Klass::_lh_array_tag_shift)
3808 : Klass::_lh_neutral_value); 3808 : Klass::_lh_neutral_value);
3809 Node* cmp = _gvn.transform(new(C) CmpINode(layout_val, intcon(nval))); 3809 Node* cmp = _gvn.transform(new(C) CmpINode(layout_val, intcon(nval)));
3810 BoolTest::mask btest = BoolTest::lt; // correct for testing is_[obj]array 3810 BoolTest::mask btest = BoolTest::lt; // correct for testing is_[obj]array
3811 // invert the test if we are looking for a non-array 3811 // invert the test if we are looking for a non-array
6757 state = get_state_from_sha_object(sha_obj); 6757 state = get_state_from_sha_object(sha_obj);
6758 } 6758 }
6759 if (state == NULL) return false; 6759 if (state == NULL) return false;
6760 6760
6761 // Call the stub. 6761 // Call the stub.
6762 Node* call = make_runtime_call(RC_LEAF|RC_NO_FP, 6762 Node *call;
6763 OptoRuntime::digestBase_implCompressMB_Type(), 6763 if (CCallingConventionRequiresIntsAsLongs) {
6764 stubAddr, stubName, TypePtr::BOTTOM, 6764 call = make_runtime_call(RC_LEAF|RC_NO_FP,
6765 src_start, state, ofs, limit); 6765 OptoRuntime::digestBase_implCompressMB_Type(),
6766 stubAddr, stubName, TypePtr::BOTTOM,
6767 src_start, state, ofs XTOP, limit XTOP);
6768 } else {
6769 call = make_runtime_call(RC_LEAF|RC_NO_FP,
6770 OptoRuntime::digestBase_implCompressMB_Type(),
6771 stubAddr, stubName, TypePtr::BOTTOM,
6772 src_start, state, ofs, limit);
6773 }
6766 // return ofs (int) 6774 // return ofs (int)
6767 Node* result = _gvn.transform(new (C) ProjNode(call, TypeFunc::Parms)); 6775 Node* result = _gvn.transform(new (C) ProjNode(call, TypeFunc::Parms));
6768 set_result(result); 6776 set_result(result);
6769 6777
6770 return true; 6778 return true;

mercurial