aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/runtime.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-01-16 14:58:14 -0800
committerRuss Cox <rsc@golang.org>2009-01-16 14:58:14 -0800
commit360962420c484427bbc16e1f8699ee5cccc4f012 (patch)
tree321251a8cd180ad7856af54e8e531850d0735fb0 /src/runtime/runtime.c
parentec9f2b0cd46300b9da3a82aa3604c98fce017baa (diff)
downloadgo-360962420c484427bbc16e1f8699ee5cccc4f012.tar.xz
casify, cleanup sys
R=r OCL=22978 CL=22984
Diffstat (limited to 'src/runtime/runtime.c')
-rw-r--r--src/runtime/runtime.c101
1 files changed, 41 insertions, 60 deletions
diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c
index 708abd4cab..31bd1ed868 100644
--- a/src/runtime/runtime.c
+++ b/src/runtime/runtime.c
@@ -32,8 +32,8 @@ sys·panicl(int32 lno)
tracebackothers(g);
}
panicking = 1;
- sys·breakpoint(); // so we can grab it in a debugger
- sys·exit(2);
+ sys·Breakpoint(); // so we can grab it in a debugger
+ sys_Exit(2);
}
void
@@ -55,7 +55,7 @@ throw(int8 *s)
prints(s);
prints("\n");
*(int32*)0 = 0;
- sys·exit(1);
+ sys_Exit(1);
}
void
@@ -280,9 +280,9 @@ modf(float64 d, float64 *ip)
return d - dd;
}
-// func frexp(float64) (float64, int32); // break fp into exp,frac
+// func Frexp(float64) (float64, int32); // break fp into exp,frac
void
-sys·frexp(float64 din, float64 dou, int32 iou)
+sys·Frexp(float64 din, float64 dou, int32 iou)
{
dou = frexp(din, &iou);
FLUSH(&dou);
@@ -290,7 +290,7 @@ sys·frexp(float64 din, float64 dou, int32 iou)
//func ldexp(int32, float64) float64; // make fp from exp,frac
void
-sys·ldexp(float64 din, int32 ein, float64 dou)
+sys·Ldexp(float64 din, int32 ein, float64 dou)
{
dou = ldexp(din, ein);
FLUSH(&dou);
@@ -298,7 +298,7 @@ sys·ldexp(float64 din, int32 ein, float64 dou)
//func modf(float64) (float64, float64); // break fp into double+double
void
-sys·modf(float64 din, float64 integer, float64 fraction)
+sys·Modf(float64 din, float64 integer, float64 fraction)
{
fraction = modf(din, &integer);
FLUSH(&fraction);
@@ -306,7 +306,7 @@ sys·modf(float64 din, float64 integer, float64 fraction)
//func isinf(float64, int32 sign) bool; // test for infinity
void
-sys·isInf(float64 din, int32 signin, bool out)
+sys·IsInf(float64 din, int32 signin, bool out)
{
out = isInf(din, signin);
FLUSH(&out);
@@ -314,7 +314,7 @@ sys·isInf(float64 din, int32 signin, bool out)
//func isnan(float64) bool; // test for NaN
void
-sys·isNaN(float64 din, bool out)
+sys·IsNaN(float64 din, bool out)
{
out = isNaN(din);
FLUSH(&out);
@@ -338,7 +338,7 @@ sys·NaN(float64 out)
// func float32bits(float32) uint32; // raw bits of float32
void
-sys·float32bits(float32 din, uint32 iou)
+sys·Float32bits(float32 din, uint32 iou)
{
iou = float32tobits(din);
FLUSH(&iou);
@@ -346,7 +346,7 @@ sys·float32bits(float32 din, uint32 iou)
// func float64bits(float64) uint64; // raw bits of float64
void
-sys·float64bits(float64 din, uint64 iou)
+sys·Float64bits(float64 din, uint64 iou)
{
iou = float64tobits(din);
FLUSH(&iou);
@@ -354,7 +354,7 @@ sys·float64bits(float64 din, uint64 iou)
// func float32frombits(uint32) float32; // raw bits to float32
void
-sys·float32frombits(uint32 uin, float32 dou)
+sys·Float32frombits(uint32 uin, float32 dou)
{
dou = float32frombits(uin);
FLUSH(&dou);
@@ -362,7 +362,7 @@ sys·float32frombits(uint32 uin, float32 dou)
// func float64frombits(uint64) float64; // raw bits to float64
void
-sys·float64frombits(uint64 uin, float64 dou)
+sys·Float64frombits(uint64 uin, float64 dou)
{
dou = float64frombits(uin);
FLUSH(&dou);
@@ -370,23 +370,37 @@ sys·float64frombits(uint64 uin, float64 dou)
static int32 argc;
static uint8** argv;
-static int32 envc;
-static uint8** envv;
+
+Array sys·Args;
+Array sys·Envs;
void
args(int32 c, uint8 **v)
{
argc = c;
argv = v;
- envv = v + argc + 1; // skip 0 at end of argv
- for (envc = 0; envv[envc] != 0; envc++)
- ;
}
-int32
-getenvc(void)
+void
+goargs(void)
{
- return envc;
+ string* goargv;
+ string* envv;
+ int32 i, envc;
+
+ goargv = (string*)argv;
+ for (i=0; i<argc; i++)
+ goargv[i] = gostring(argv[i]);
+ sys·Args.array = (byte*)argv;
+ sys·Args.nel = argc;
+ sys·Args.cap = argc;
+
+ envv = goargv + argc + 1; // skip 0 at end of argv
+ for (envc = 0; envv[envc] != 0; envc++)
+ envv[envc] = gostring((uint8*)envv[envc]);
+ sys·Envs.array = (byte*)envv;
+ sys·Envs.nel = envc;
+ sys·Envs.cap = envc;
}
byte*
@@ -394,11 +408,15 @@ getenv(int8 *s)
{
int32 i, j, len;
byte *v, *bs;
+ string* envv;
+ int32 envc;
bs = (byte*)s;
len = findnull(bs);
+ envv = (string*)sys·Envs.array;
+ envc = sys·Envs.nel;
for(i=0; i<envc; i++){
- v = envv[i];
+ v = envv[i]->str;
for(j=0; j<len; j++)
if(bs[j] != v[j])
goto nomatch;
@@ -410,6 +428,7 @@ getenv(int8 *s)
return nil;
}
+
int32
atoi(byte *p)
{
@@ -421,44 +440,6 @@ atoi(byte *p)
return n;
}
-//func argc() int32; // return number of arguments
-void
-sys·argc(int32 v)
-{
- v = argc;
- FLUSH(&v);
-}
-
-//func envc() int32; // return number of environment variables
-void
-sys·envc(int32 v)
-{
- v = envc;
- FLUSH(&v);
-}
-
-//func argv(i) string; // return argument i
-void
-sys·argv(int32 i, string s)
-{
- if(i >= 0 && i < argc)
- s = gostring(argv[i]);
- else
- s = emptystring;
- FLUSH(&s);
-}
-
-//func envv(i) string; // return environment variable i
-void
-sys·envv(int32 i, string s)
-{
- if(i >= 0 && i < envc)
- s = gostring(envv[i]);
- else
- s = emptystring;
- FLUSH(&s);
-}
-
void
check(void)
{