aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/runtime.c
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2008-06-16 22:34:50 -0700
committerKen Thompson <ken@golang.org>2008-06-16 22:34:50 -0700
commit4e8142c929bf285870aaa561d8bf47c94639b89b (patch)
tree18a751a2c20ce9a71ef8b82757ccb3587ea53fe6 /src/runtime/runtime.c
parent3f2d542817717400e28df072fa2ac20d648ad5be (diff)
downloadgo-4e8142c929bf285870aaa561d8bf47c94639b89b.tar.xz
maps
SVN=123089
Diffstat (limited to 'src/runtime/runtime.c')
-rw-r--r--src/runtime/runtime.c56
1 files changed, 26 insertions, 30 deletions
diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c
index 9a7efc55b7..ee6f75f09c 100644
--- a/src/runtime/runtime.c
+++ b/src/runtime/runtime.c
@@ -147,7 +147,7 @@ enum
MAP_ANON = 0x1000,
};
-static void
+void
throw(int8 *s)
{
prints("throw: ");
@@ -208,6 +208,30 @@ mal(uint32 n)
return v;
}
+uint32
+cmpstring(string s1, string s2)
+{
+ uint32 i, l;
+ byte c1, c2;
+
+ l = s1->len;
+ if(s2->len < l)
+ l = s2->len;
+ for(i=0; i<l; i++) {
+ c1 = s1->str[i];
+ c2 = s2->str[i];
+ if(c1 < c2)
+ return -1;
+ if(c1 > c2)
+ return +1;
+ }
+ if(s1->len < s2->len)
+ return -1;
+ if(s1->len > s2->len)
+ return +1;
+ return 0;
+}
+
void
sys_mal(uint32 n, uint8 *ret)
{
@@ -243,35 +267,7 @@ out:
void
sys_cmpstring(string s1, string s2, int32 v)
{
- uint32 i, l;
- byte c1, c2;
-
- l = s1->len;
- if(s2->len < l)
- l = s2->len;
- for(i=0; i<l; i++) {
- c1 = s1->str[i];
- c2 = s2->str[i];
- if(c1 < c2) {
- v = -1;
- goto out;
- }
- if(c1 > c2) {
- v = +1;
- goto out;
- }
- }
- if(s1->len < s2->len) {
- v = -1;
- goto out;
- }
- if(s1->len > s2->len) {
- v = +1;
- goto out;
- }
- v = 0;
-
-out:
+ v = cmpstring(s1, s2);
FLUSH(&v);
}