Mercurial > hg > truffle
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) { |