1 /*
2 * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
420 case If::gtr: l = lir_cond_greater; break;
421 case If::aeq: l = lir_cond_aboveEqual; break;
422 case If::beq: l = lir_cond_belowEqual; break;
423 default: fatal("You must pass valid If::Condition");
424 };
425 return l;
426 }
427
428 #ifdef __SOFTFP__
429 void do_soft_float_compare(If *x);
430 #endif // __SOFTFP__
431
432 void init();
433
434 SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
435 SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
436 void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
437
438 void do_RuntimeCall(address routine, int expected_arguments, Intrinsic* x);
439 #ifdef TRACE_HAVE_INTRINSICS
440 void do_ThreadIDIntrinsic(Intrinsic* x);
441 void do_ClassIDIntrinsic(Intrinsic* x);
442 #endif
443 ciKlass* profile_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k,
444 Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_at_call_k,
445 ciKlass* callee_signature_k);
446 void profile_arguments(ProfileCall* x);
447 void profile_parameters(Base* x);
448 void profile_parameters_at_call(ProfileCall* x);
449 LIR_Opr maybe_mask_boolean(StoreIndexed* x, LIR_Opr array, LIR_Opr value, CodeEmitInfo*& null_check_info);
450
451 public:
452 Compilation* compilation() const { return _compilation; }
453 FrameMap* frame_map() const { return _compilation->frame_map(); }
454 ciMethod* method() const { return _method; }
455 BlockBegin* block() const { return _block; }
456 IRScope* scope() const { return block()->scope(); }
457
458 int max_virtual_register_number() const { return _virtual_register_number; }
459
460 void block_do(BlockBegin* block);
461
|
1 /*
2 * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
420 case If::gtr: l = lir_cond_greater; break;
421 case If::aeq: l = lir_cond_aboveEqual; break;
422 case If::beq: l = lir_cond_belowEqual; break;
423 default: fatal("You must pass valid If::Condition");
424 };
425 return l;
426 }
427
428 #ifdef __SOFTFP__
429 void do_soft_float_compare(If *x);
430 #endif // __SOFTFP__
431
432 void init();
433
434 SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
435 SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
436 void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
437
438 void do_RuntimeCall(address routine, int expected_arguments, Intrinsic* x);
439 #ifdef TRACE_HAVE_INTRINSICS
440 void do_ClassIDIntrinsic(Intrinsic* x);
441 void do_getEventWriter(Intrinsic* x);
442 #endif
443 ciKlass* profile_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k,
444 Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_at_call_k,
445 ciKlass* callee_signature_k);
446 void profile_arguments(ProfileCall* x);
447 void profile_parameters(Base* x);
448 void profile_parameters_at_call(ProfileCall* x);
449 LIR_Opr maybe_mask_boolean(StoreIndexed* x, LIR_Opr array, LIR_Opr value, CodeEmitInfo*& null_check_info);
450
451 public:
452 Compilation* compilation() const { return _compilation; }
453 FrameMap* frame_map() const { return _compilation->frame_map(); }
454 ciMethod* method() const { return _method; }
455 BlockBegin* block() const { return _block; }
456 IRScope* scope() const { return block()->scope(); }
457
458 int max_virtual_register_number() const { return _virtual_register_number; }
459
460 void block_do(BlockBegin* block);
461
|