diff options
| author | Ken Thompson <ken@golang.org> | 2008-06-16 22:34:50 -0700 |
|---|---|---|
| committer | Ken Thompson <ken@golang.org> | 2008-06-16 22:34:50 -0700 |
| commit | 4e8142c929bf285870aaa561d8bf47c94639b89b (patch) | |
| tree | 18a751a2c20ce9a71ef8b82757ccb3587ea53fe6 /src/runtime/runtime.c | |
| parent | 3f2d542817717400e28df072fa2ac20d648ad5be (diff) | |
| download | go-4e8142c929bf285870aaa561d8bf47c94639b89b.tar.xz | |
maps
SVN=123089
Diffstat (limited to 'src/runtime/runtime.c')
| -rw-r--r-- | src/runtime/runtime.c | 56 |
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); } |
