[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnet ChangeLog include/il_utils.h support/inter...
From: |
Klaus Treichel |
Subject: |
[dotgnu-pnet-commits] pnet ChangeLog include/il_utils.h support/inter... |
Date: |
Thu, 03 May 2007 20:08:46 +0000 |
CVSROOT: /cvsroot/dotgnu-pnet
Module name: pnet
Changes by: Klaus Treichel <ktreichel> 07/05/03 20:08:46
Modified files:
. : ChangeLog
include : il_utils.h
support : intern.c
codegen : cg_decls.tc cg_lvalue.tc
cscc/csharp : cs_cast.tc
Log message:
2007-05-03 Klaus Treichel <address@hidden>
* include/il_utils.h, support/intern.c: Add the function
ILInternStringConcat3 to concatenate three interned strings.
* codegen/cg_decls.c, codegen/cg-lvalue.tc,
cscc/csharp/cs_cast.c: Replace
multiple concatenations by a call to the new function.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3449&r2=1.3450
http://cvs.savannah.gnu.org/viewcvs/pnet/include/il_utils.h?cvsroot=dotgnu-pnet&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/pnet/support/intern.c?cvsroot=dotgnu-pnet&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pnet/codegen/cg_decls.tc?cvsroot=dotgnu-pnet&r1=1.55&r2=1.56
http://cvs.savannah.gnu.org/viewcvs/pnet/codegen/cg_lvalue.tc?cvsroot=dotgnu-pnet&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/pnet/cscc/csharp/cs_cast.tc?cvsroot=dotgnu-pnet&r1=1.12&r2=1.13
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3449
retrieving revision 1.3450
diff -u -b -r1.3449 -r1.3450
--- ChangeLog 24 Apr 2007 19:43:25 -0000 1.3449
+++ ChangeLog 3 May 2007 20:08:46 -0000 1.3450
@@ -1,3 +1,11 @@
+2007-05-03 Klaus Treichel <address@hidden>
+
+ * include/il_utils.h, support/intern.c: Add the function
+ ILInternStringConcat3 to concatenate three interned strings.
+
+ * codegen/cg_decls.c, codegen/cg-lvalue.tc, cscc/csharp/cs_cast.c:
Replace
+ multiple concatenations by a call to the new function.
+
2007-04-24 Klaus Treichel <address@hidden>
* Makefile.am: remove the coremul dir if pnet is built without tools.
Index: include/il_utils.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/include/il_utils.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- include/il_utils.h 9 Apr 2007 09:10:47 -0000 1.28
+++ include/il_utils.h 3 May 2007 20:08:46 -0000 1.29
@@ -57,6 +57,13 @@
ILIntString ILInternAppendedString(ILIntString str1, ILIntString str2);
/*
+ * Concatenate three internalised strings and internalise the result.
+ */
+ILIntString ILInternStringConcat3(ILIntString str1,
+ ILIntString str2,
+ ILIntString str3);
+
+/*
* Generate a GUID value. The "guid" buffer must be at
* least 16 bytes in length.
*/
Index: support/intern.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/support/intern.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- support/intern.c 9 Apr 2007 09:10:47 -0000 1.4
+++ support/intern.c 3 May 2007 20:08:46 -0000 1.5
@@ -162,6 +162,127 @@
return result;
}
+ILIntString ILInternStringConcat3(ILIntString str1, ILIntString str2,
ILIntString str3)
+{
+ unsigned long hash = 0;
+ int len = 0;
+ InternEntry *entry;
+ ILIntString result;
+
+ /* Bail out early for the easy cases */
+ if(str1.len == 0)
+ {
+ if(str2.len == 0)
+ {
+ return str3;
+ }
+ if(str3.len == 0)
+ {
+ return str2;
+ }
+ }
+ if(str2.len == 0)
+ {
+ if(str3.len == 0)
+ {
+ return str1;
+ }
+ }
+
+ /* Hash the combined string */
+ if(str1.len > 0)
+ {
+ hash = ILHashString(hash, str1.string, str1.len);
+ len += str1.len;
+ }
+ else
+ {
+ str1.len = 0;
+ }
+ if(str2.len > 0)
+ {
+ hash = ILHashString(hash, str2.string, str2.len);
+ len += str2.len;
+ }
+ else
+ {
+ str2.len = 0;
+ }
+ if(str3.len > 0)
+ {
+ hash = ILHashString(hash, str3.string, str3.len);
+ len += str3.len;
+ }
+ else
+ {
+ str3.len = 0;
+ }
+ hash %= INTERN_HASH_SIZE;
+
+ /* Look in the hash table to see if we already have the combined string
*/
+ entry = hashTable[hash];
+ while(entry != 0)
+ {
+ if(len == entry->len)
+ {
+ if((str1.len > 0) && ILMemCmp(entry->str, str1.string,
str1.len))
+ {
+ /* No match */
+ }
+ else if((str2.len > 0) && ILMemCmp(entry->str +
str1.len, str2.string, str2.len))
+ {
+ /* No match */
+ }
+ else if((str3.len > 0) && ILMemCmp(entry->str +
str1.len + str2.len, str3.string, str3.len))
+ {
+ /* No match */
+ }
+ else
+ {
+ result.string = entry->str;
+ result.len = entry->len;
+ return result;
+ }
+ }
+ entry = entry->next;
+ }
+
+ /* Add a new item to the hash table */
+ entry = (InternEntry *)ILMalloc(sizeof(InternEntry) + len);
+ if(!entry)
+ {
+ #ifndef REDUCED_STDIO
+ fprintf(stderr, "virtual memory exhausted - cannot intern \"");
+ fwrite(str1.string, 1, str1.len, stderr);
+ fwrite(str2.string, 1, str2.len, stderr);
+ fprintf(stderr, "\"\n");
+ exit(1);
+ #endif
+ result.string = emptyString;
+ result.len = 0;
+ return result;
+ }
+ entry->next = hashTable[hash];
+ entry->len = len;
+ if(str1.len > 0)
+ {
+ ILMemCpy(entry->str, str1.string, str1.len);
+ }
+ if(str2.len > 0)
+ {
+ ILMemCpy(entry->str + str1.len, str2.string, str2.len);
+ }
+ if(str3.len > 0)
+ {
+ ILMemCpy(entry->str + str1.len + str2.len, str3.string,
str3.len);
+ }
+ entry->str[entry->len] = '\0';
+ hashTable[hash] = entry;
+ result.string = entry->str;
+ result.len = entry->len;
+ return result;
+}
+
#ifdef __cplusplus
};
#endif
Index: codegen/cg_decls.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/codegen/cg_decls.tc,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- codegen/cg_decls.tc 21 Mar 2007 08:37:04 -0000 1.55
+++ codegen/cg_decls.tc 3 May 2007 20:08:46 -0000 1.56
@@ -304,12 +304,11 @@
}
/* Create a name for the proxy method */
- name = ILInternAppendedString
- (ILInternAppendedString
+ name = ILInternStringConcat3
(ILInternString
((char
*)ILClass_Name(ILMethod_Owner(node->interfaceMethod)),
-1),
- ILInternString(".", 1)),
+ ILInternString(".", 1),
ILInternString((char *)ILMethod_Name(node->interfaceMethod),
-1))
.string;
Index: codegen/cg_lvalue.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/codegen/cg_lvalue.tc,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- codegen/cg_lvalue.tc 26 Jul 2004 06:54:54 -0000 1.25
+++ codegen/cg_lvalue.tc 3 May 2007 20:08:46 -0000 1.26
@@ -1615,8 +1615,8 @@
ILIntString name;
name.string = ident->name;
name.len = strlen(ident->name);
- return (ILInternAppendedString
- (quote,
ILInternAppendedString(name, quote))).string;
+ return (ILInternStringConcat3
+ (quote, name, quote)).string;
}
return ident->name;
}
@@ -1669,8 +1669,8 @@
str2.len = 1;
str3.string = name2;
str3.len = strlen(name2);
- return (ILInternAppendedString
- (str1, ILInternAppendedString(str2,
str3))).string;
+ return (ILInternStringConcat3
+ (str1, str2, str3)).string;
}
int ILIsQualIdent(ILNode *node)
Index: cscc/csharp/cs_cast.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_cast.tc,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- cscc/csharp/cs_cast.tc 8 Jun 2004 14:48:35 -0000 1.12
+++ cscc/csharp/cs_cast.tc 3 May 2007 20:08:46 -0000 1.13
@@ -164,10 +164,9 @@
const char *finalName;
if(namespace)
{
- finalName = ILInternAppendedString
- (ILInternAppendedString
+ finalName = ILInternStringConcat3
(ILInternString((char
*)namespace, -1),
- ILInternString((char
*)".", 1)),
+ ILInternString((char
*)".", 1),
ILInternString((char *)name,
-1)).string;
}
else
@@ -179,10 +178,9 @@
/* Prepend the name of the enclosing nesting class */
const char *parentName = CSTypeToName
(ILType_FromClass(ILClass_NestedParent(classInfo)));
- finalName = ILInternAppendedString
- (ILInternAppendedString
+ finalName = ILInternStringConcat3
(ILInternString((char
*)parentName, -1),
- ILInternString((char
*)".", 1)),
+ ILInternString((char
*)".", 1),
ILInternString((char
*)finalName, -1)).string;
}
return finalName;
- [dotgnu-pnet-commits] pnet ChangeLog include/il_utils.h support/inter...,
Klaus Treichel <=