# HG changeset patch # User naoto # Date 1332868247 25200 # Node ID ffd8b8da06963706180c9b20228787b1a89d9d14 # Parent 43db70cf8b20be2ce13670b59e8bc5c522d0bc7d 7156459: Remove unnecessary get() from Currency.getInstance() Reviewed-by: chegar, dholmes, mduigou diff -r 43db70cf8b20 -r ffd8b8da0696 src/share/classes/java/util/Currency.java --- a/src/share/classes/java/util/Currency.java Wed Mar 21 10:10:38 2012 -0700 +++ b/src/share/classes/java/util/Currency.java Tue Mar 27 10:10:47 2012 -0700 @@ -288,46 +288,47 @@ private static Currency getInstance(String currencyCode, int defaultFractionDigits, int numericCode) { - // Try to look up the currency code in the instances table. - // This does the null pointer check as a side effect. - // Also, if there already is an entry, the currencyCode must be valid. - Currency instance = instances.get(currencyCode); - if (instance != null) { - return instance; + // Try to look up the currency code in the instances table. + // This does the null pointer check as a side effect. + // Also, if there already is an entry, the currencyCode must be valid. + Currency instance = instances.get(currencyCode); + if (instance != null) { + return instance; + } + + if (defaultFractionDigits == Integer.MIN_VALUE) { + // Currency code not internally generated, need to verify first + // A currency code must have 3 characters and exist in the main table + // or in the list of other currencies. + if (currencyCode.length() != 3) { + throw new IllegalArgumentException(); } - - if (defaultFractionDigits == Integer.MIN_VALUE) { - // Currency code not internally generated, need to verify first - // A currency code must have 3 characters and exist in the main table - // or in the list of other currencies. - if (currencyCode.length() != 3) { + char char1 = currencyCode.charAt(0); + char char2 = currencyCode.charAt(1); + int tableEntry = getMainTableEntry(char1, char2); + if ((tableEntry & COUNTRY_TYPE_MASK) == SIMPLE_CASE_COUNTRY_MASK + && tableEntry != INVALID_COUNTRY_ENTRY + && currencyCode.charAt(2) - 'A' == (tableEntry & SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK)) { + defaultFractionDigits = (tableEntry & SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK) >> SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT; + numericCode = (tableEntry & NUMERIC_CODE_MASK) >> NUMERIC_CODE_SHIFT; + } else { + // Check for '-' separately so we don't get false hits in the table. + if (currencyCode.charAt(2) == '-') { throw new IllegalArgumentException(); } - char char1 = currencyCode.charAt(0); - char char2 = currencyCode.charAt(1); - int tableEntry = getMainTableEntry(char1, char2); - if ((tableEntry & COUNTRY_TYPE_MASK) == SIMPLE_CASE_COUNTRY_MASK - && tableEntry != INVALID_COUNTRY_ENTRY - && currencyCode.charAt(2) - 'A' == (tableEntry & SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK)) { - defaultFractionDigits = (tableEntry & SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK) >> SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT; - numericCode = (tableEntry & NUMERIC_CODE_MASK) >> NUMERIC_CODE_SHIFT; - } else { - // Check for '-' separately so we don't get false hits in the table. - if (currencyCode.charAt(2) == '-') { - throw new IllegalArgumentException(); - } - int index = otherCurrencies.indexOf(currencyCode); - if (index == -1) { - throw new IllegalArgumentException(); - } - defaultFractionDigits = otherCurrenciesDFD[index / 4]; - numericCode = otherCurrenciesNumericCode[index / 4]; + int index = otherCurrencies.indexOf(currencyCode); + if (index == -1) { + throw new IllegalArgumentException(); } + defaultFractionDigits = otherCurrenciesDFD[index / 4]; + numericCode = otherCurrenciesNumericCode[index / 4]; } + } - instance = instances.putIfAbsent(currencyCode, - new Currency(currencyCode, defaultFractionDigits, numericCode)); - return (instance != null ? instance : instances.get(currencyCode)); + Currency currencyVal = + new Currency(currencyCode, defaultFractionDigits, numericCode); + instance = instances.putIfAbsent(currencyCode, currencyVal); + return (instance != null ? instance : currencyVal); } /**