comparison src/share/vm/opto/matcher.hpp @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents cd5d10655495
children 89152779163c
comparison
equal deleted inserted replaced
14908:8db6e76cb658 14909:4ca6dc0799b6
1 /* 1 /*
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, 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.
284 static const int vector_shift_count_ideal_reg(int len); 284 static const int vector_shift_count_ideal_reg(int len);
285 285
286 // CPU supports misaligned vectors store/load. 286 // CPU supports misaligned vectors store/load.
287 static const bool misaligned_vectors_ok(); 287 static const bool misaligned_vectors_ok();
288 288
289 // Should original key array reference be passed to AES stubs
290 static const bool pass_original_key_for_aes();
291
292 // Used to determine a "low complexity" 64-bit constant. (Zero is simple.) 289 // Used to determine a "low complexity" 64-bit constant. (Zero is simple.)
293 // The standard of comparison is one (StoreL ConL) vs. two (StoreI ConI). 290 // The standard of comparison is one (StoreL ConL) vs. two (StoreI ConI).
294 // Depends on the details of 64-bit constant generation on the CPU. 291 // Depends on the details of 64-bit constant generation on the CPU.
295 static const bool isSimpleConstant64(jlong con); 292 static const bool isSimpleConstant64(jlong con);
296 293
338 // Register for DIVL projection of divmodL 335 // Register for DIVL projection of divmodL
339 static RegMask divL_proj_mask(); 336 static RegMask divL_proj_mask();
340 // Register for MODL projection of divmodL 337 // Register for MODL projection of divmodL
341 static RegMask modL_proj_mask(); 338 static RegMask modL_proj_mask();
342 339
340 static const RegMask mathExactI_result_proj_mask();
341 static const RegMask mathExactL_result_proj_mask();
342 static const RegMask mathExactI_flags_proj_mask();
343
343 // Use hardware DIV instruction when it is faster than 344 // Use hardware DIV instruction when it is faster than
344 // a code which use multiply for division by constant. 345 // a code which use multiply for division by constant.
345 static bool use_asm_for_ldiv_by_con( jlong divisor ); 346 static bool use_asm_for_ldiv_by_con( jlong divisor );
346 347
347 static const RegMask method_handle_invoke_SP_save_mask(); 348 static const RegMask method_handle_invoke_SP_save_mask();
446 // piece-by-piece. Only happens when passing doubles into C code or when 447 // piece-by-piece. Only happens when passing doubles into C code or when
447 // calling i2c adapters as the Java calling convention forces doubles to be 448 // calling i2c adapters as the Java calling convention forces doubles to be
448 // aligned. 449 // aligned.
449 static const bool misaligned_doubles_ok; 450 static const bool misaligned_doubles_ok;
450 451
451 // Does the CPU require postalloc expand (see block.cpp for description of
452 // postalloc expand)?
453 static const bool require_postalloc_expand;
454
455 // Perform a platform dependent implicit null fixup. This is needed 452 // Perform a platform dependent implicit null fixup. This is needed
456 // on windows95 to take care of some unusual register constraints. 453 // on windows95 to take care of some unusual register constraints.
457 void pd_implicit_null_fixup(MachNode *load, uint idx); 454 void pd_implicit_null_fixup(MachNode *load, uint idx);
458 455
459 // Advertise here if the CPU requires explicit rounding operations 456 // Advertise here if the CPU requires explicit rounding operations
482 // Check for a following volatile memory barrier without an 479 // Check for a following volatile memory barrier without an
483 // intervening load and thus we don't need a barrier here. We 480 // intervening load and thus we don't need a barrier here. We
484 // retain the Node to act as a compiler ordering barrier. 481 // retain the Node to act as a compiler ordering barrier.
485 static bool post_store_load_barrier(const Node* mb); 482 static bool post_store_load_barrier(const Node* mb);
486 483
487 // Does n lead to an uncommon trap that can cause deoptimization?
488 static bool branches_to_uncommon_trap(const Node *n);
489 484
490 #ifdef ASSERT 485 #ifdef ASSERT
491 void dump_old2new_map(); // machine-independent to machine-dependent 486 void dump_old2new_map(); // machine-independent to machine-dependent
492 487
493 Node* find_old_node(Node* new_node) { 488 Node* find_old_node(Node* new_node) {