use &T{1,2,3} constructor for simple new cases

R=r
OCL=17691
CL=17719
diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go
index a180b81..32e6211 100644
--- a/src/lib/reflect/value.go
+++ b/src/lib/reflect/value.go
@@ -53,6 +53,10 @@
 	addr	Addr
 }
 
+func Int8Creator(typ Type, addr Addr) Value {
+	return &Int8ValueStruct{addr}
+}
+
 func (v *Int8ValueStruct) Kind() int {
 	return Int8Kind
 }
@@ -69,12 +73,6 @@
 	*AddrToPtrInt8(v.addr) = i
 }
 
-func Int8Creator(typ Type, addr Addr) Value {
-	v := new(Int8ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Int16
 
 export type Int16Value interface {
@@ -88,6 +86,10 @@
 	addr	Addr
 }
 
+func Int16Creator(typ Type, addr Addr) Value {
+	return &Int16ValueStruct{addr}
+}
+
 func (v *Int16ValueStruct) Kind() int {
 	return Int16Kind
 }
@@ -104,12 +106,6 @@
 	*AddrToPtrInt16(v.addr) = i
 }
 
-func Int16Creator(typ Type, addr Addr) Value {
-	v := new(Int16ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Int32
 
 export type Int32Value interface {
@@ -123,6 +119,10 @@
 	addr	Addr
 }
 
+func Int32Creator(typ Type, addr Addr) Value {
+	return &Int32ValueStruct{addr}
+}
+
 func (v *Int32ValueStruct) Type() Type {
 	return Int32
 }
@@ -139,12 +139,6 @@
 	*AddrToPtrInt32(v.addr) = i
 }
 
-func Int32Creator(typ Type, addr Addr) Value {
-	v := new(Int32ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Int64
 
 export type Int64Value interface {
@@ -154,6 +148,10 @@
 	Type()	Type;
 }
 
+func Int64Creator(typ Type, addr Addr) Value {
+	return &Int64ValueStruct{addr}
+}
+
 type Int64ValueStruct struct {
 	addr	Addr
 }
@@ -174,12 +172,6 @@
 	*AddrToPtrInt64(v.addr) = i
 }
 
-func Int64Creator(typ Type, addr Addr) Value {
-	v := new(Int64ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Uint8
 
 export type Uint8Value interface {
@@ -193,6 +185,10 @@
 	addr	Addr
 }
 
+func Uint8Creator(typ Type, addr Addr) Value {
+	return &Uint8ValueStruct{addr}
+}
+
 func (v *Uint8ValueStruct) Kind() int {
 	return Uint8Kind
 }
@@ -209,12 +205,6 @@
 	*AddrToPtrUint8(v.addr) = i
 }
 
-func Uint8Creator(typ Type, addr Addr) Value {
-	v := new(Uint8ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Uint16
 
 export type Uint16Value interface {
@@ -228,6 +218,10 @@
 	addr	Addr
 }
 
+func Uint16Creator(typ Type, addr Addr) Value {
+	return &Uint16ValueStruct{addr}
+}
+
 func (v *Uint16ValueStruct) Kind() int {
 	return Uint16Kind
 }
@@ -244,12 +238,6 @@
 	*AddrToPtrUint16(v.addr) = i
 }
 
-func Uint16Creator(typ Type, addr Addr) Value {
-	v := new(Uint16ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Uint32
 
 export type Uint32Value interface {
@@ -263,6 +251,10 @@
 	addr	Addr
 }
 
+func Uint32Creator(typ Type, addr Addr) Value {
+	return &Uint32ValueStruct{addr}
+}
+
 func (v *Uint32ValueStruct) Kind() int {
 	return Uint32Kind
 }
@@ -279,12 +271,6 @@
 	*AddrToPtrUint32(v.addr) = i
 }
 
-func Uint32Creator(typ Type, addr Addr) Value {
-	v := new(Uint32ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Uint64
 
 export type Uint64Value interface {
@@ -298,6 +284,10 @@
 	addr	Addr
 }
 
+func Uint64Creator(typ Type, addr Addr) Value {
+	return &Uint64ValueStruct{addr}
+}
+
 func (v *Uint64ValueStruct) Kind() int {
 	return Uint64Kind
 }
@@ -314,12 +304,6 @@
 	*AddrToPtrUint64(v.addr) = i
 }
 
-func Uint64Creator(typ Type, addr Addr) Value {
-	v := new(Uint64ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Float32
 
 export type Float32Value interface {
@@ -333,6 +317,10 @@
 	addr	Addr
 }
 
+func Float32Creator(typ Type, addr Addr) Value {
+	return &Float32ValueStruct{addr}
+}
+
 func (v *Float32ValueStruct) Kind() int {
 	return Float32Kind
 }
@@ -349,12 +337,6 @@
 	*AddrToPtrFloat32(v.addr) = f
 }
 
-func Float32Creator(typ Type, addr Addr) Value {
-	v := new(Float32ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Float64
 
 export type Float64Value interface {
@@ -368,6 +350,10 @@
 	addr	Addr
 }
 
+func Float64Creator(typ Type, addr Addr) Value {
+	return &Float64ValueStruct{addr}
+}
+
 func (v *Float64ValueStruct) Kind() int {
 	return Float64Kind
 }
@@ -384,12 +370,6 @@
 	*AddrToPtrFloat64(v.addr) = f
 }
 
-func Float64Creator(typ Type, addr Addr) Value {
-	v := new(Float64ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Float80
 
 export type Float80Value interface {
@@ -403,6 +383,10 @@
 	addr	Addr
 }
 
+func Float80Creator(typ Type, addr Addr) Value {
+	return &Float80ValueStruct{addr}
+}
+
 func (v *Float80ValueStruct) Kind() int {
 	return Float80Kind
 }
@@ -423,12 +407,6 @@
 }
 */
 
-func Float80Creator(typ Type, addr Addr) Value {
-	v := new(Float80ValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- String
 
 export type StringValue interface {
@@ -442,6 +420,10 @@
 	addr	Addr
 }
 
+func StringCreator(typ Type, addr Addr) Value {
+	return &StringValueStruct{addr}
+}
+
 func (v *StringValueStruct) Kind() int {
 	return StringKind
 }
@@ -458,12 +440,6 @@
 	*AddrToPtrString(v.addr) = s
 }
 
-func StringCreator(typ Type, addr Addr) Value {
-	v := new(StringValueStruct);
-	v.addr = addr;
-	return v;
-}
-
 // -- Pointer
 
 export type PtrValue interface {
@@ -603,7 +579,10 @@
 type MapValueStruct struct {
 	addr	Addr;
 	typ	Type;
-	len	int;
+}
+
+func MapCreator(typ Type, addr Addr) Value {
+	return &MapValueStruct{addr, typ}
 }
 
 func (v *MapValueStruct) Kind() int {
@@ -615,7 +594,7 @@
 }
 
 func (v *MapValueStruct) Len() int {
-	return v.len	// TODO: probably want this to be dynamic
+	return 0	// TODO: probably want this to be dynamic
 }
 
 func (v *MapValueStruct) Elem(key Value) Value {
@@ -623,14 +602,6 @@
 	return nil
 }
 
-func MapCreator(typ Type, addr Addr) Value {
-	arraytype := typ.(MapType);
-	v := new(MapValueStruct);
-	v.addr = addr;
-	v.typ = typ;
-	return v;
-}
-
 // -- Chan
 
 export type ChanValue interface {
@@ -641,7 +612,10 @@
 type ChanValueStruct struct {
 	addr	Addr;
 	typ	Type;
-	len	int;
+}
+
+func ChanCreator(typ Type, addr Addr) Value {
+	return &ChanValueStruct{addr, typ}
 }
 
 func (v *ChanValueStruct) Kind() int {
@@ -652,13 +626,6 @@
 	return v.typ
 }
 
-func ChanCreator(typ Type, addr Addr) Value {
-	v := new(ChanValueStruct);
-	v.addr = addr;
-	v.typ = typ;
-	return v;
-}
-
 // -- Struct
 
 export type StructValue interface {
@@ -711,26 +678,23 @@
 	Type()	Type;
 }
 
-type InterfaceValueInterface struct {
+type InterfaceValueStruct struct {
 	addr	Addr;
 	typ	Type;
 }
 
-func (v *InterfaceValueInterface) Kind() int {
+func InterfaceCreator(typ Type, addr Addr) Value {
+	return &InterfaceValueStruct{addr, typ}
+}
+
+func (v *InterfaceValueStruct) Kind() int {
 	return InterfaceKind
 }
 
-func (v *InterfaceValueInterface) Type() Type {
+func (v *InterfaceValueStruct) Type() Type {
 	return v.typ
 }
 
-func InterfaceCreator(typ Type, addr Addr) Value {
-	v := new(InterfaceValueInterface);
-	v.addr = addr;
-	v.typ = typ;
-	return v;
-}
-
 // -- Func
 
 export type FuncValue interface {
@@ -738,26 +702,23 @@
 	Type()	Type;
 }
 
-type FuncValueFunc struct {
+type FuncValueStruct struct {
 	addr	Addr;
 	typ	Type;
 }
 
-func (v *FuncValueFunc) Kind() int {
+func FuncCreator(typ Type, addr Addr) Value {
+	return &FuncValueStruct{addr, typ}
+}
+
+func (v *FuncValueStruct) Kind() int {
 	return FuncKind
 }
 
-func (v *FuncValueFunc) Type() Type {
+func (v *FuncValueStruct) Type() Type {
 	return v.typ
 }
 
-func FuncCreator(typ Type, addr Addr) Value {
-	v := new(FuncValueFunc);
-	v.addr = addr;
-	v.typ = typ;
-	return v;
-}
-
 var creator *map[int] Creator
 
 func init() {