1.1 --- a/src/share/vm/opto/memnode.hpp Fri Mar 06 21:36:50 2009 -0800 1.2 +++ b/src/share/vm/opto/memnode.hpp Mon Mar 09 03:17:11 2009 -0700 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. 1.6 + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -207,6 +207,19 @@ 1.11 virtual BasicType memory_type() const { return T_BYTE; } 1.12 }; 1.13 1.14 +//------------------------------LoadUBNode------------------------------------- 1.15 +// Load a unsigned byte (8bits unsigned) from memory 1.16 +class LoadUBNode : public LoadNode { 1.17 +public: 1.18 + LoadUBNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt* ti = TypeInt::UBYTE ) 1.19 + : LoadNode(c, mem, adr, at, ti) {} 1.20 + virtual int Opcode() const; 1.21 + virtual uint ideal_reg() const { return Op_RegI; } 1.22 + virtual Node* Ideal(PhaseGVN *phase, bool can_reshape); 1.23 + virtual int store_Opcode() const { return Op_StoreB; } 1.24 + virtual BasicType memory_type() const { return T_BYTE; } 1.25 +}; 1.26 + 1.27 //------------------------------LoadUSNode------------------------------------- 1.28 // Load an unsigned short/char (16bits unsigned) from memory 1.29 class LoadUSNode : public LoadNode { 1.30 @@ -232,6 +245,18 @@ 1.31 virtual BasicType memory_type() const { return T_INT; } 1.32 }; 1.33 1.34 +//------------------------------LoadUI2LNode----------------------------------- 1.35 +// Load an unsigned integer into long from memory 1.36 +class LoadUI2LNode : public LoadNode { 1.37 +public: 1.38 + LoadUI2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeLong* t = TypeLong::UINT) 1.39 + : LoadNode(c, mem, adr, at, t) {} 1.40 + virtual int Opcode() const; 1.41 + virtual uint ideal_reg() const { return Op_RegL; } 1.42 + virtual int store_Opcode() const { return Op_StoreL; } 1.43 + virtual BasicType memory_type() const { return T_LONG; } 1.44 +}; 1.45 + 1.46 //------------------------------LoadRangeNode---------------------------------- 1.47 // Load an array length from the array 1.48 class LoadRangeNode : public LoadINode {