< prev index next >

src/share/vm/opto/intrinsicnode.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2014, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2015, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 34,44 **** } //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. Strip out // control copies ! Node *StrIntrinsicNode::Ideal(PhaseGVN *phase, bool can_reshape) { if (remove_dead_region(phase, can_reshape)) return this; // Don't bother trying to transform a dead node if (in(0) && in(0)->is_top()) return NULL; if (can_reshape) { --- 34,44 ---- } //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. Strip out // control copies ! Node* StrIntrinsicNode::Ideal(PhaseGVN* phase, bool can_reshape) { if (remove_dead_region(phase, can_reshape)) return this; // Don't bother trying to transform a dead node if (in(0) && in(0)->is_top()) return NULL; if (can_reshape) {
*** 53,82 **** } return NULL; } //------------------------------Value------------------------------------------ ! const Type *StrIntrinsicNode::Value( PhaseTransform *phase ) const { if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; return bottom_type(); } //============================================================================= //------------------------------match_edge------------------------------------- // Do not match memory edge uint EncodeISOArrayNode::match_edge(uint idx) const { return idx == 2 || idx == 3; // EncodeISOArray src (Binary dst len) } //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. Strip out // control copies ! Node *EncodeISOArrayNode::Ideal(PhaseGVN *phase, bool can_reshape) { return remove_dead_region(phase, can_reshape) ? this : NULL; } //------------------------------Value------------------------------------------ ! const Type *EncodeISOArrayNode::Value(PhaseTransform *phase) const { if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; return bottom_type(); } --- 53,100 ---- } return NULL; } //------------------------------Value------------------------------------------ ! const Type* StrIntrinsicNode::Value(PhaseTransform* phase) const { if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; return bottom_type(); } + uint StrIntrinsicNode::size_of() const { return sizeof(*this); } + + //============================================================================= + //------------------------------Ideal------------------------------------------ + // Return a node which is more "ideal" than the current node. Strip out + // control copies + Node* StrCompressedCopyNode::Ideal(PhaseGVN* phase, bool can_reshape) { + return remove_dead_region(phase, can_reshape) ? this : NULL; + } + + //============================================================================= + //------------------------------Ideal------------------------------------------ + // Return a node which is more "ideal" than the current node. Strip out + // control copies + Node* StrInflatedCopyNode::Ideal(PhaseGVN* phase, bool can_reshape) { + return remove_dead_region(phase, can_reshape) ? this : NULL; + } + //============================================================================= //------------------------------match_edge------------------------------------- // Do not match memory edge uint EncodeISOArrayNode::match_edge(uint idx) const { return idx == 2 || idx == 3; // EncodeISOArray src (Binary dst len) } //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. Strip out // control copies ! Node* EncodeISOArrayNode::Ideal(PhaseGVN* phase, bool can_reshape) { return remove_dead_region(phase, can_reshape) ? this : NULL; } //------------------------------Value------------------------------------------ ! const Type* EncodeISOArrayNode::Value(PhaseTransform* phase) const { if (in(0) && phase->type(in(0)) == Type::TOP) return Type::TOP; return bottom_type(); }
< prev index next >