move alignment calculations into gc
R=ken
OCL=26914
CL=26914
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 392c13d..c09bc97 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -442,6 +442,15 @@
EXTERN Var var[NVAR];
+typedef struct Typedef Typedef;
+struct Typedef
+{
+ char* name;
+ int etype;
+ int sameas;
+};
+
+extern Typedef typedefs[];
typedef struct Io Io;
struct Io
@@ -467,6 +476,22 @@
char* dir;
};
+/*
+ * note this is the runtime representation
+ * of the compilers arrays.
+ *
+ * typedef struct
+ * { // must not move anything
+ * uchar array[8]; // pointer to data
+ * uchar nel[4]; // number of elements
+ * uchar cap[4]; // allocated number of elements
+ * } Array;
+ */
+EXTERN int Array_array; // runtime offsetof(Array,array)
+EXTERN int Array_nel; // runtime offsetof(Array,nel)
+EXTERN int Array_cap; // runtime offsetof(Array,cap)
+EXTERN int sizeof_Array; // runtime sizeof(Array)
+
EXTERN Dlist dotlist[10]; // size is max depth of embeddeds
EXTERN Io curio;
@@ -477,7 +502,6 @@
EXTERN Hist* hist;
EXTERN Hist* ehist;
-
EXTERN char* infile;
EXTERN char* outfile;
EXTERN char* package;
@@ -534,6 +558,9 @@
EXTERN ushort block; // current block number
EXTERN int hasdefer; // flag that curfn has defer statetment
+EXTERN int maxround;
+EXTERN int widthptr;
+
EXTERN Node* retnil;
EXTERN Node* fskel;
@@ -562,13 +589,13 @@
/*
* lex.c
*/
-int mainlex(int, char*[]);
void setfilename(char*);
void addidir(char*);
void importfile(Val*);
void cannedimports(char*, char*);
void unimportfile();
int32 yylex(void);
+void typeinit(int lex);
void lexinit(void);
char* lexname(int);
int32 getr(void);
@@ -881,8 +908,7 @@
/*
* gen.c/gsubr.c/obj.c
*/
-void belexinit(int);
-void besetptr(void);
+void betypeinit(void);
vlong convvtox(vlong, int);
void compile(Node*);
void proglist(void);
@@ -896,7 +922,13 @@
Type* shallow(Type*);
/*
- * bits.c
+ * align.c
+ */
+uint32 rnd(uint32, uint32);
+void dowidth(Type*);
+
+/*
+ * bits.c
*/
Bits bor(Bits, Bits);
Bits band(Bits, Bits);
@@ -908,3 +940,4 @@
int bset(Bits, uint);
int Qconv(Fmt *fp);
int bitno(int32);
+