Index: build/make/win.properties =================================================================== --- build/make/win.properties (revision 542511) +++ build/make/win.properties (working copy) @@ -86,8 +86,8 @@ PATCHES_HOME=../patches #proxy configuration -# http.proxyHost= -# http.proxyPort= +http.proxyHost=proxy03.ims.intel.com +http.proxyPort=911 # Default building mode, either release or debug BUILD_CFG=debug Index: vm/vmcore/src/class_support/Class_File_Loader.cpp =================================================================== --- vm/vmcore/src/class_support/Class_File_Loader.cpp (revision 542511) +++ vm/vmcore/src/class_support/Class_File_Loader.cpp (working copy) @@ -650,9 +650,9 @@ } // JVM spec: -// Unqualified names must not contain the characters ’.’, ’;’, ’[’ or ’/’. Method names are -// further constrained so that, with the exception of the special method names (§3.9) -// and , they must not contain the characters ’<’ or ’>’. +// Unqualified names must not contain the characters ".", ";", "[" or "/". Method names are +// further constrained so that, with the exception of the special method names (§3.9) +// and , they must not contain the characters "<" or ">". static inline bool check_member_name(const char *name, unsigned len, bool old_version, bool is_method) { @@ -660,18 +660,29 @@ return is_identifier(name, len); }else { for (unsigned i = 0; i < len; i++) { - switch(name[i]){ - case '.': - case ';': - case '[': - case '/': - return false; - case '<': - case '>': - if(is_method) + //check if symbol has byte size + if(!(name[i] & 0x80)) { + switch(name[i]) { + case '.': + case ';': + case '[': + case '/': return false; - break; - } + case '<': + case '>': + if(is_method) + return false; + } + } else { //skip other symbols, they are not in exception list + assert(name[i] & 0x40); + if(name[i] & 0x20) { + assert(len - i - 3 > 0); //check array bound + i += 3; + } else { + assert(len - i - 2 > 0); + i += 2; + } + } } } return true; @@ -1801,6 +1812,7 @@ STD_FREE(generic_vars); } } + if (failed) { return false; } @@ -1829,7 +1841,7 @@ { result = check_field_descriptor(descriptor, &next, false, old_version); if( !result || *next == '\0' ) { - return result; + return false; } descriptor = next; }