1 /* |
1 /* |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2016, 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. |
794 // state when it comes to machine representation but is used separately for (oop) |
794 // state when it comes to machine representation but is used separately for (oop) |
795 // type specific operations (e.g. verification code). |
795 // type specific operations (e.g. verification code). |
796 |
796 |
797 enum TosState { // describes the tos cache contents |
797 enum TosState { // describes the tos cache contents |
798 btos = 0, // byte, bool tos cached |
798 btos = 0, // byte, bool tos cached |
799 ctos = 1, // char tos cached |
799 ztos = 1, // byte, bool tos cached |
800 stos = 2, // short tos cached |
800 ctos = 2, // char tos cached |
801 itos = 3, // int tos cached |
801 stos = 3, // short tos cached |
802 ltos = 4, // long tos cached |
802 itos = 4, // int tos cached |
803 ftos = 5, // float tos cached |
803 ltos = 5, // long tos cached |
804 dtos = 6, // double tos cached |
804 ftos = 6, // float tos cached |
805 atos = 7, // object cached |
805 dtos = 7, // double tos cached |
806 vtos = 8, // tos not cached |
806 atos = 8, // object cached |
|
807 vtos = 9, // tos not cached |
807 number_of_states, |
808 number_of_states, |
808 ilgl // illegal state: should not occur |
809 ilgl // illegal state: should not occur |
809 }; |
810 }; |
810 |
811 |
811 |
812 |
812 inline TosState as_TosState(BasicType type) { |
813 inline TosState as_TosState(BasicType type) { |
813 switch (type) { |
814 switch (type) { |
814 case T_BYTE : return btos; |
815 case T_BYTE : return btos; |
815 case T_BOOLEAN: return btos; // FIXME: Add ztos |
816 case T_BOOLEAN: return ztos; |
816 case T_CHAR : return ctos; |
817 case T_CHAR : return ctos; |
817 case T_SHORT : return stos; |
818 case T_SHORT : return stos; |
818 case T_INT : return itos; |
819 case T_INT : return itos; |
819 case T_LONG : return ltos; |
820 case T_LONG : return ltos; |
820 case T_FLOAT : return ftos; |
821 case T_FLOAT : return ftos; |
826 return ilgl; |
827 return ilgl; |
827 } |
828 } |
828 |
829 |
829 inline BasicType as_BasicType(TosState state) { |
830 inline BasicType as_BasicType(TosState state) { |
830 switch (state) { |
831 switch (state) { |
831 //case ztos: return T_BOOLEAN;//FIXME |
|
832 case btos : return T_BYTE; |
832 case btos : return T_BYTE; |
|
833 case ztos : return T_BOOLEAN; |
833 case ctos : return T_CHAR; |
834 case ctos : return T_CHAR; |
834 case stos : return T_SHORT; |
835 case stos : return T_SHORT; |
835 case itos : return T_INT; |
836 case itos : return T_INT; |
836 case ltos : return T_LONG; |
837 case ltos : return T_LONG; |
837 case ftos : return T_FLOAT; |
838 case ftos : return T_FLOAT; |