aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
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
parent3f2d542817717400e28df072fa2ac20d648ad5be (diff)
downloadgo-4e8142c929bf285870aaa561d8bf47c94639b89b.tar.xz
maps
SVN=123089
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/runtime.c56
-rw-r--r--src/runtime/runtime.h10
2 files changed, 34 insertions, 32 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);
}
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
index d006915730..898c7b4083 100644
--- a/src/runtime/runtime.h
+++ b/src/runtime/runtime.h
@@ -80,12 +80,18 @@ enum
#define nil ((void*)0)
/*
- * very low level
+ * very low level c-called
*/
void FLUSH(void*);
+void throw(int8*);
void prints(int8*);
void mcpy(byte*, byte*, uint32);
void* mal(uint32);
+uint32 cmpstring(string, string);
+
+/*
+ * low level go -called
+ */
void sys_exit(int32);
void sys_write(int32, void*, int32);
void sys_breakpoint(void);
@@ -94,7 +100,7 @@ void sys_memclr(byte*, uint32);
void* sys_getcallerpc(void*);
/*
- * runtime
+ * runtime go-called
*/
void sys_printbool(bool);
void sys_printfloat(float64);