Commit 55645045 authored by Russ Cox's avatar Russ Cox

new new & make

R=r
OCL=22166
CL=22166
parent 9662e7b2
...@@ -166,7 +166,7 @@ func (x Natural) Add(y Natural) Natural { ...@@ -166,7 +166,7 @@ func (x Natural) Add(y Natural) Natural {
} }
c := Digit(0); c := Digit(0);
z := new(Natural, n + 1); z := make(Natural, n + 1);
i := 0; i := 0;
for i < m { for i < m {
t := c + x[i] + y[i]; t := c + x[i] + y[i];
...@@ -195,7 +195,7 @@ func (x Natural) Sub(y Natural) Natural { ...@@ -195,7 +195,7 @@ func (x Natural) Sub(y Natural) Natural {
} }
c := Digit(0); c := Digit(0);
z := new(Natural, n); z := make(Natural, n);
i := 0; i := 0;
for i < m { for i < m {
t := c + x[i] - y[i]; t := c + x[i] - y[i];
...@@ -253,7 +253,7 @@ func (x Natural) Mul(y Natural) Natural { ...@@ -253,7 +253,7 @@ func (x Natural) Mul(y Natural) Natural {
n := len(x); n := len(x);
m := len(y); m := len(y);
z := new(Natural, n + m); z := make(Natural, n + m);
for j := 0; j < m; j++ { for j := 0; j < m; j++ {
d := y[j]; d := y[j];
if d != 0 { if d != 0 {
...@@ -280,7 +280,7 @@ func (x Natural) Mul(y Natural) Natural { ...@@ -280,7 +280,7 @@ func (x Natural) Mul(y Natural) Natural {
func Unpack(x Natural) []Digit2 { func Unpack(x Natural) []Digit2 {
n := len(x); n := len(x);
z := new([]Digit2, n*2 + 1); // add space for extra digit (used by DivMod) z := make([]Digit2, n*2 + 1); // add space for extra digit (used by DivMod)
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
t := x[i]; t := x[i];
z[i*2] = Digit2(t & M2); z[i*2] = Digit2(t & M2);
...@@ -296,7 +296,7 @@ func Unpack(x Natural) []Digit2 { ...@@ -296,7 +296,7 @@ func Unpack(x Natural) []Digit2 {
func Pack(x []Digit2) Natural { func Pack(x []Digit2) Natural {
n := (len(x) + 1) / 2; n := (len(x) + 1) / 2;
z := new(Natural, n); z := make(Natural, n);
if len(x) & 1 == 1 { if len(x) & 1 == 1 {
// handle odd len(x) // handle odd len(x)
n--; n--;
...@@ -472,7 +472,7 @@ func Shl(z, x []Digit, s uint) Digit { ...@@ -472,7 +472,7 @@ func Shl(z, x []Digit, s uint) Digit {
func (x Natural) Shl(s uint) Natural { func (x Natural) Shl(s uint) Natural {
n := uint(len(x)); n := uint(len(x));
m := n + s/W; m := n + s/W;
z := new(Natural, m+1); z := make(Natural, m+1);
z[m] = Shl(z[m-n : m], x, s%W); z[m] = Shl(z[m-n : m], x, s%W);
...@@ -497,7 +497,7 @@ func (x Natural) Shr(s uint) Natural { ...@@ -497,7 +497,7 @@ func (x Natural) Shr(s uint) Natural {
if m > n { // check for underflow if m > n { // check for underflow
m = 0; m = 0;
} }
z := new(Natural, m); z := make(Natural, m);
Shr(z, x[n-m : n], s%W); Shr(z, x[n-m : n], s%W);
...@@ -512,7 +512,7 @@ func (x Natural) And(y Natural) Natural { ...@@ -512,7 +512,7 @@ func (x Natural) And(y Natural) Natural {
return y.And(x); return y.And(x);
} }
z := new(Natural, m); z := make(Natural, m);
for i := 0; i < m; i++ { for i := 0; i < m; i++ {
z[i] = x[i] & y[i]; z[i] = x[i] & y[i];
} }
...@@ -536,7 +536,7 @@ func (x Natural) Or(y Natural) Natural { ...@@ -536,7 +536,7 @@ func (x Natural) Or(y Natural) Natural {
return y.Or(x); return y.Or(x);
} }
z := new(Natural, n); z := make(Natural, n);
for i := 0; i < m; i++ { for i := 0; i < m; i++ {
z[i] = x[i] | y[i]; z[i] = x[i] | y[i];
} }
...@@ -553,7 +553,7 @@ func (x Natural) Xor(y Natural) Natural { ...@@ -553,7 +553,7 @@ func (x Natural) Xor(y Natural) Natural {
return y.Xor(x); return y.Xor(x);
} }
z := new(Natural, n); z := make(Natural, n);
for i := 0; i < m; i++ { for i := 0; i < m; i++ {
z[i] = x[i] ^ y[i]; z[i] = x[i] ^ y[i];
} }
...@@ -627,10 +627,10 @@ func (x Natural) ToString(base uint) string { ...@@ -627,10 +627,10 @@ func (x Natural) ToString(base uint) string {
// allocate buffer for conversion // allocate buffer for conversion
assert(2 <= base && base <= 16); assert(2 <= base && base <= 16);
n := (x.Log2() + 1) / Log2(Digit(base)) + 1; // +1: round up n := (x.Log2() + 1) / Log2(Digit(base)) + 1; // +1: round up
s := new([]byte, n); s := make([]byte, n);
// don't destroy x // don't destroy x
t := new(Natural, len(x)); t := make(Natural, len(x));
Copy(t, x); Copy(t, x);
// convert // convert
...@@ -681,7 +681,7 @@ func HexValue(ch byte) uint { ...@@ -681,7 +681,7 @@ func HexValue(ch byte) uint {
func MulAdd1(x Natural, d, c Digit) Natural { func MulAdd1(x Natural, d, c Digit) Natural {
assert(IsSmall(d-1) && IsSmall(c)); assert(IsSmall(d-1) && IsSmall(c));
n := len(x); n := len(x);
z := new(Natural, n + 1); z := make(Natural, n + 1);
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
t := c + x[i]*d; t := c + x[i]*d;
......
...@@ -50,8 +50,8 @@ export func NewBufReadSize(rd io.Read, size int) (b *BufRead, err *os.Error) { ...@@ -50,8 +50,8 @@ export func NewBufReadSize(rd io.Read, size int) (b *BufRead, err *os.Error) {
if size <= 0 { if size <= 0 {
return nil, BadBufSize return nil, BadBufSize
} }
b = new(*BufRead); b = new(BufRead);
b.buf = new([]byte, size); b.buf = make([]byte, size);
b.rd = rd; b.rd = rd;
return b, nil return b, nil
} }
...@@ -262,7 +262,7 @@ func (b *BufRead) ReadLineBytes(delim byte) (line []byte, err *os.Error) { ...@@ -262,7 +262,7 @@ func (b *BufRead) ReadLineBytes(delim byte) (line []byte, err *os.Error) {
} }
// Read bytes out of buffer. // Read bytes out of buffer.
buf := new([]byte, b.Buffered()); buf := make([]byte, b.Buffered());
var n int; var n int;
n, e = b.Read(buf); n, e = b.Read(buf);
if e != nil { if e != nil {
...@@ -278,9 +278,9 @@ func (b *BufRead) ReadLineBytes(delim byte) (line []byte, err *os.Error) { ...@@ -278,9 +278,9 @@ func (b *BufRead) ReadLineBytes(delim byte) (line []byte, err *os.Error) {
// Grow list if needed. // Grow list if needed.
if full == nil { if full == nil {
full = new([][]byte, 16); full = make([][]byte, 16);
} else if nfull >= len(full) { } else if nfull >= len(full) {
newfull := new([][]byte, len(full)*2); newfull := make([][]byte, len(full)*2);
// BUG slice assignment // BUG slice assignment
for i := 0; i < len(full); i++ { for i := 0; i < len(full); i++ {
newfull[i] = full[i]; newfull[i] = full[i];
...@@ -301,7 +301,7 @@ func (b *BufRead) ReadLineBytes(delim byte) (line []byte, err *os.Error) { ...@@ -301,7 +301,7 @@ func (b *BufRead) ReadLineBytes(delim byte) (line []byte, err *os.Error) {
n += len(frag); n += len(frag);
// Copy full pieces and fragment in. // Copy full pieces and fragment in.
buf := new([]byte, n); buf := make([]byte, n);
n = 0; n = 0;
for i := 0; i < nfull; i++ { for i := 0; i < nfull; i++ {
CopySlice(buf[n:n+len(full[i])], full[i]); CopySlice(buf[n:n+len(full[i])], full[i]);
...@@ -339,8 +339,8 @@ export func NewBufWriteSize(wr io.Write, size int) (b *BufWrite, err *os.Error) ...@@ -339,8 +339,8 @@ export func NewBufWriteSize(wr io.Write, size int) (b *BufWrite, err *os.Error)
if size <= 0 { if size <= 0 {
return nil, BadBufSize return nil, BadBufSize
} }
b = new(*BufWrite); b = new(BufWrite);
b.buf = new([]byte, size); b.buf = make([]byte, size);
b.wr = wr; b.wr = wr;
return b, nil return b, nil
} }
......
...@@ -14,7 +14,7 @@ import ( ...@@ -14,7 +14,7 @@ import (
) )
func StringToBytes(s string) []byte { func StringToBytes(s string) []byte {
b := new([]byte, len(s)); b := make([]byte, len(s));
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
b[i] = s[i] b[i] = s[i]
} }
...@@ -34,7 +34,7 @@ type ByteReader struct { ...@@ -34,7 +34,7 @@ type ByteReader struct {
} }
func NewByteReader(p []byte) io.Read { func NewByteReader(p []byte) io.Read {
b := new(*ByteReader); b := new(ByteReader);
b.p = p; b.p = p;
return b return b
} }
...@@ -56,7 +56,7 @@ type HalfByteReader struct { ...@@ -56,7 +56,7 @@ type HalfByteReader struct {
} }
func NewHalfByteReader(p []byte) io.Read { func NewHalfByteReader(p []byte) io.Read {
b := new(*HalfByteReader); b := new(HalfByteReader);
b.p = p; b.p = p;
return b return b
} }
...@@ -80,7 +80,7 @@ type Rot13Reader struct { ...@@ -80,7 +80,7 @@ type Rot13Reader struct {
} }
func NewRot13Reader(r io.Read) *Rot13Reader { func NewRot13Reader(r io.Read) *Rot13Reader {
r13 := new(*Rot13Reader); r13 := new(Rot13Reader);
r13.r = r; r13.r = r;
return r13 return r13
} }
...@@ -238,14 +238,14 @@ type ByteWriter struct { ...@@ -238,14 +238,14 @@ type ByteWriter struct {
} }
func NewByteWriter() WriteBuffer { func NewByteWriter() WriteBuffer {
return new(*ByteWriter) return new(ByteWriter)
} }
func (w *ByteWriter) Write(p []byte) (int, *os.Error) { func (w *ByteWriter) Write(p []byte) (int, *os.Error) {
if w.p == nil { if w.p == nil {
w.p = new([]byte, len(p)+100) w.p = make([]byte, len(p)+100)
} else if w.n + len(p) >= len(w.p) { } else if w.n + len(p) >= len(w.p) {
newp := new([]byte, len(w.p)*2 + len(p)); newp := make([]byte, len(w.p)*2 + len(p));
Copy(newp[0:w.n], w.p[0:w.n]); Copy(newp[0:w.n], w.p[0:w.n]);
w.p = newp w.p = newp
} }
...@@ -266,7 +266,7 @@ type HalfByteWriter struct { ...@@ -266,7 +266,7 @@ type HalfByteWriter struct {
} }
func NewHalfByteWriter() WriteBuffer { func NewHalfByteWriter() WriteBuffer {
w := new(*HalfByteWriter); w := new(HalfByteWriter);
w.bw = NewByteWriter(); w.bw = NewByteWriter();
return w return w
} }
......
...@@ -22,7 +22,7 @@ func (p *Array) Init(initial_len int) *Array { ...@@ -22,7 +22,7 @@ func (p *Array) Init(initial_len int) *Array {
if initial_len > n { if initial_len > n {
n = initial_len n = initial_len
} }
a = new([]Element, n); a = make([]Element, n);
} else { } else {
// nil out entries // nil out entries
for j := len(a) - 1; j >= 0; j-- { for j := len(a) - 1; j >= 0; j-- {
...@@ -36,7 +36,7 @@ func (p *Array) Init(initial_len int) *Array { ...@@ -36,7 +36,7 @@ func (p *Array) Init(initial_len int) *Array {
export func New(len int) *Array { export func New(len int) *Array {
return new(*Array).Init(len) return new(Array).Init(len)
} }
...@@ -66,7 +66,7 @@ func (p *Array) Insert(i int, x Element) { ...@@ -66,7 +66,7 @@ func (p *Array) Insert(i int, x Element) {
// grow array by doubling its capacity // grow array by doubling its capacity
if n == cap(a) { if n == cap(a) {
b := new([]Element, 2*n); b := make([]Element, 2*n);
for j := n-1; j >= 0; j-- { for j := n-1; j >= 0; j-- {
b[j] = a[j]; b[j] = a[j];
} }
......
...@@ -19,7 +19,7 @@ func (p *IntArray) Init(len int) *IntArray { ...@@ -19,7 +19,7 @@ func (p *IntArray) Init(len int) *IntArray {
export func NewIntArray(len int) *IntArray { export func NewIntArray(len int) *IntArray {
return new(*IntArray).Init(len) return new(IntArray).Init(len)
} }
......
...@@ -318,10 +318,10 @@ func (f *Flag) SVal() string { ...@@ -318,10 +318,10 @@ func (f *Flag) SVal() string {
} }
func New() *Flags { func New() *Flags {
f := new(*Flags); f := new(Flags);
f.first_arg = 1; // 0 is the program name, 1 is first arg f.first_arg = 1; // 0 is the program name, 1 is first arg
f.actual = new(map[string] *Flag); f.actual = make(map[string] *Flag);
f.formal = new(map[string] *Flag); f.formal = make(map[string] *Flag);
return f; return f;
} }
...@@ -361,7 +361,7 @@ export func NArg() int { ...@@ -361,7 +361,7 @@ export func NArg() int {
} }
func Add(name string, value Value, usage string) *Flag { func Add(name string, value Value, usage string) *Flag {
f := new(*Flag); f := new(Flag);
f.name = name; f.name = name;
f.usage = usage; f.usage = usage;
f.value = value; f.value = value;
......
...@@ -71,7 +71,7 @@ func (f *Fmt) init() { ...@@ -71,7 +71,7 @@ func (f *Fmt) init() {
} }
export func New() *Fmt { export func New() *Fmt {
f := new(*Fmt); f := new(Fmt);
f.init(); f.init();
return f; return f;
} }
...@@ -135,7 +135,7 @@ func (f *Fmt) pad(s string) { ...@@ -135,7 +135,7 @@ func (f *Fmt) pad(s string) {
if w > NByte { if w > NByte {
w = NByte; w = NByte;
} }
buf := new([]byte, w); buf := make([]byte, w);
for i := 0; i < w; i++ { for i := 0; i < w; i++ {
buf[i] = padchar; buf[i] = padchar;
} }
......
...@@ -46,7 +46,7 @@ type P struct { ...@@ -46,7 +46,7 @@ type P struct {
} }
func Printer() *P { func Printer() *P {
p := new(*P); p := new(P);
p.fmt = fmt.New(); p.fmt = fmt.New();
return p; return p;
} }
...@@ -81,7 +81,7 @@ func (p *P) ensure(n int) { ...@@ -81,7 +81,7 @@ func (p *P) ensure(n int) {
if newn < n { if newn < n {
newn = n + AllocSize newn = n + AllocSize
} }
b := new([]byte, newn); b := make([]byte, newn);
for i := 0; i < p.n; i++ { for i := 0; i < p.n; i++ {
b[i] = p.buf[i]; b[i] = p.buf[i];
} }
......
...@@ -52,7 +52,7 @@ func (d *Digest) Sum32() uint32 { ...@@ -52,7 +52,7 @@ func (d *Digest) Sum32() uint32 {
} }
func (d *Digest) Sum() []byte { func (d *Digest) Sum() []byte {
p := new([]byte, 4); p := make([]byte, 4);
s := d.Sum32(); s := d.Sum32();
p[0] = byte(s>>24); p[0] = byte(s>>24);
p[1] = byte(s>>16); p[1] = byte(s>>16);
......
...@@ -29,7 +29,7 @@ export const ( ...@@ -29,7 +29,7 @@ export const (
export type Table []uint32 export type Table []uint32
export func MakeTable(poly uint32) Table { export func MakeTable(poly uint32) Table {
t := new(Table, 256); t := make(Table, 256);
for i := 0; i < 256; i++ { for i := 0; i < 256; i++ {
crc := uint32(i); crc := uint32(i);
for j := 0; j < 8; j++ { for j := 0; j < 8; j++ {
...@@ -74,7 +74,7 @@ func (d *Digest) Sum32() uint32 { ...@@ -74,7 +74,7 @@ func (d *Digest) Sum32() uint32 {
} }
func (d *Digest) Sum() []byte { func (d *Digest) Sum() []byte {
p := new([]byte, 4); p := make([]byte, 4);
s := d.Sum32(); s := d.Sum32();
p[0] = byte(s>>24); p[0] = byte(s>>24);
p[1] = byte(s>>16); p[1] = byte(s>>16);
......
...@@ -27,7 +27,7 @@ export type Digest struct { ...@@ -27,7 +27,7 @@ export type Digest struct {
} }
export func NewDigest() *Digest { export func NewDigest() *Digest {
d := new(*Digest); d := new(Digest);
d.s[0] = A; d.s[0] = A;
d.s[1] = B; d.s[1] = B;
d.s[2] = C; d.s[2] = C;
...@@ -88,7 +88,7 @@ func (d *Digest) Sum() []byte { ...@@ -88,7 +88,7 @@ func (d *Digest) Sum() []byte {
panicln("oops"); panicln("oops");
} }
p := new([]byte, 16); p := make([]byte, 16);
j := 0; j := 0;
for i := 0; i < 4; i++ { for i := 0; i < 4; i++ {
s := d.s[i]; s := d.s[i];
......
...@@ -28,7 +28,7 @@ export type Digest struct { ...@@ -28,7 +28,7 @@ export type Digest struct {
} }
export func NewDigest() *Digest { export func NewDigest() *Digest {
d := new(*Digest); d := new(Digest);
d.h[0] = H0; d.h[0] = H0;
d.h[1] = H1; d.h[1] = H1;
d.h[2] = H2; d.h[2] = H2;
...@@ -90,7 +90,7 @@ func (d *Digest) Sum() []byte { ...@@ -90,7 +90,7 @@ func (d *Digest) Sum() []byte {
panicln("oops"); panicln("oops");
} }
p := new([]byte, 20); p := make([]byte, 20);
j := 0; j := 0;
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
s := d.h[i]; s := d.h[i];
......
...@@ -22,7 +22,7 @@ export type Conn struct { ...@@ -22,7 +22,7 @@ export type Conn struct {
// Create new connection from rwc. // Create new connection from rwc.
export func NewConn(rwc io.ReadWriteClose) (c *Conn, err *os.Error) { export func NewConn(rwc io.ReadWriteClose) (c *Conn, err *os.Error) {
c = new(*Conn); c = new(Conn);
c.rwc = rwc; c.rwc = rwc;
if c.br, err = bufio.NewBufRead(rwc); err != nil { if c.br, err = bufio.NewBufRead(rwc); err != nil {
return nil, err return nil, err
......
...@@ -181,7 +181,7 @@ func ParseHTTPVersion(vers string) (int, int, bool) { ...@@ -181,7 +181,7 @@ func ParseHTTPVersion(vers string) (int, int, bool) {
// Read and parse a request from b. // Read and parse a request from b.
export func ReadRequest(b *bufio.BufRead) (req *Request, err *os.Error) { export func ReadRequest(b *bufio.BufRead) (req *Request, err *os.Error) {
req = new(*Request); req = new(Request);
// First line: GET /index.html HTTP/1.0 // First line: GET /index.html HTTP/1.0
var s string; var s string;
...@@ -205,7 +205,7 @@ export func ReadRequest(b *bufio.BufRead) (req *Request, err *os.Error) { ...@@ -205,7 +205,7 @@ export func ReadRequest(b *bufio.BufRead) (req *Request, err *os.Error) {
// Subsequent lines: Key: value. // Subsequent lines: Key: value.
nheader := 0; nheader := 0;
req.header = new(map[string] string); req.header = make(map[string] string);
for { for {
var key, value string; var key, value string;
if key, value, err = ReadKeyValue(b); err != nil { if key, value, err = ReadKeyValue(b); err != nil {
......
...@@ -60,7 +60,7 @@ export func URLUnescape(s string) (string, *os.Error) { ...@@ -60,7 +60,7 @@ export func URLUnescape(s string) (string, *os.Error) {
return s, nil return s, nil
} }
t := new([]byte, len(s)-2*n); t := make([]byte, len(s)-2*n);
j := 0; j := 0;
for i := 0; i < len(s); { for i := 0; i < len(s); {
if s[i] == '%' { if s[i] == '%' {
...@@ -131,7 +131,7 @@ export func ParseURL(rawurl string) (url *URL, err *os.Error) { ...@@ -131,7 +131,7 @@ export func ParseURL(rawurl string) (url *URL, err *os.Error) {
if rawurl == "" { if rawurl == "" {
return nil, BadURL return nil, BadURL
} }
url = new(*URL); url = new(URL);
url.raw = rawurl; url.raw = rawurl;
// Split off possible leading "http:", "mailto:", etc. // Split off possible leading "http:", "mailto:", etc.
......
...@@ -40,12 +40,12 @@ func (b *ByteBuffer) Write(p []byte) (n int, err *os.Error) { ...@@ -40,12 +40,12 @@ func (b *ByteBuffer) Write(p []byte) (n int, err *os.Error) {
plen := len(p); plen := len(p);
if len(b.buf) == 0 { if len(b.buf) == 0 {
b.cap = plen + 1024; b.cap = plen + 1024;
b.buf = new([]byte, b.cap); b.buf = make([]byte, b.cap);
b.len = 0; b.len = 0;
} }
if b.len + len(p) > b.cap { if b.len + len(p) > b.cap {
b.cap = 2*(b.cap + plen); b.cap = 2*(b.cap + plen);
nb := new([]byte, b.cap); nb := make([]byte, b.cap);
bytecopy(nb, 0, b.buf, 0, b.len); bytecopy(nb, 0, b.buf, 0, b.len);
b.buf = nb; b.buf = nb;
} }
...@@ -81,7 +81,7 @@ func (b *ByteBuffer) Data() []byte { ...@@ -81,7 +81,7 @@ func (b *ByteBuffer) Data() []byte {
export func NewByteBufferFromArray(buf []byte) *ByteBuffer { export func NewByteBufferFromArray(buf []byte) *ByteBuffer {
b := new(*ByteBuffer); b := new(ByteBuffer);
b.buf = buf; b.buf = buf;
b.off = 0; b.off = 0;
b.len = len(buf); b.len = len(buf);
......
...@@ -31,7 +31,7 @@ export type ReadWriteClose interface { ...@@ -31,7 +31,7 @@ export type ReadWriteClose interface {
} }
export func WriteString(w Write, s string) (n int, err *os.Error) { export func WriteString(w Write, s string) (n int, err *os.Error) {
b := new([]byte, len(s)+1); b := make([]byte, len(s)+1);
if !syscall.StringToBytes(b, s) { if !syscall.StringToBytes(b, s) {
return -1, os.EINVAL return -1, os.EINVAL
} }
...@@ -80,7 +80,7 @@ export func MakeFullReader(fd Read) Read { ...@@ -80,7 +80,7 @@ export func MakeFullReader(fd Read) Read {
// Copies n bytes (or until EOF is reached) from src to dst. // Copies n bytes (or until EOF is reached) from src to dst.
// Returns the number of bytes copied and the error, if any. // Returns the number of bytes copied and the error, if any.
export func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) { export func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) {
buf := new([]byte, 32*1024); buf := make([]byte, 32*1024);
for written < n { for written < n {
l := len(buf); l := len(buf);
if d := n - written; d < int64(l) { if d := n - written; d < int64(l) {
...@@ -116,7 +116,7 @@ export func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) { ...@@ -116,7 +116,7 @@ export func Copyn(src Read, dst Write, n int64) (written int64, err *os.Error) {
// Copies from src to dst until EOF is reached. // Copies from src to dst until EOF is reached.
// Returns the number of bytes copied and the error, if any. // Returns the number of bytes copied and the error, if any.
export func Copy(src Read, dst Write) (written int64, err *os.Error) { export func Copy(src Read, dst Write) (written int64, err *os.Error) {
buf := new([]byte, 32*1024); buf := make([]byte, 32*1024);
for { for {
nr, er := src.Read(buf); nr, er := src.Read(buf);
if nr > 0 { if nr > 0 {
...@@ -148,7 +148,7 @@ export func Copy(src Read, dst Write) (written int64, err *os.Error) { ...@@ -148,7 +148,7 @@ export func Copy(src Read, dst Write) (written int64, err *os.Error) {
// Could fill with syscall.StringToBytes but it adds an unnecessary \000 // Could fill with syscall.StringToBytes but it adds an unnecessary \000
// so the length would be wrong. // so the length would be wrong.
export func StringBytes(s string) []byte { export func StringBytes(s string) []byte {
b := new([]byte, len(s)); b := make([]byte, len(s));
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
b[i] = s[i]; b[i] = s[i];
} }
......
...@@ -269,11 +269,11 @@ func (b *JsonBuilder) Array() { ...@@ -269,11 +269,11 @@ func (b *JsonBuilder) Array() {
} }
func (b *JsonBuilder) Map() { func (b *JsonBuilder) Map() {
b.Put(&Map{new(map[string]Json), Null{}}) b.Put(&Map{make(map[string]Json), Null{}})
} }
func (b *JsonBuilder) Elem(i int) Builder { func (b *JsonBuilder) Elem(i int) Builder {
bb := new(*JsonBuilder); bb := new(JsonBuilder);
bb.a = b.Get().(*Array).a; bb.a = b.Get().(*Array).a;
bb.i = i; bb.i = i;
for i >= bb.a.Len() { for i >= bb.a.Len() {
...@@ -283,7 +283,7 @@ func (b *JsonBuilder) Elem(i int) Builder { ...@@ -283,7 +283,7 @@ func (b *JsonBuilder) Elem(i int) Builder {
} }
func (b *JsonBuilder) Key(k string) Builder { func (b *JsonBuilder) Key(k string) Builder {
bb := new(*JsonBuilder); bb := new(JsonBuilder);
bb.m = b.Get().(*Map).m; bb.m = b.Get().(*Map).m;
bb.k = k; bb.k = k;
bb.m[k] = null; bb.m[k] = null;
...@@ -293,7 +293,7 @@ func (b *JsonBuilder) Key(k string) Builder { ...@@ -293,7 +293,7 @@ func (b *JsonBuilder) Key(k string) Builder {
export func StringToJson(s string) (json Json, ok bool, errtok string) { export func StringToJson(s string) (json Json, ok bool, errtok string) {
var errindx int; var errindx int;
var j Json; var j Json;
b := new(*JsonBuilder); b := new(JsonBuilder);
b.ptr = &j; b.ptr = &j;
ok, errindx, errtok = Parse(s, b); ok, errindx, errtok = Parse(s, b);
if !ok { if !ok {
......
...@@ -40,7 +40,7 @@ export func TestJson(t *testing.T) { ...@@ -40,7 +40,7 @@ export func TestJson(t *testing.T) {
} }
export func TestJsonMap(t *testing.T) { export func TestJsonMap(t *testing.T) {
values := new(map[string]Json); values := make(map[string]Json);
mapstr := "{"; mapstr := "{";
for i := 0; i < len(jsontests); i++ { for i := 0; i < len(jsontests); i++ {
val, ok, errtok := StringToJson(jsontests[i]); val, ok, errtok := StringToJson(jsontests[i]);
......
...@@ -48,7 +48,7 @@ export func Unquote(s string) (t string, ok bool) { ...@@ -48,7 +48,7 @@ export func Unquote(s string) (t string, ok bool) {
if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' {
return return
} }
b := new([]byte, len(s)); b := make([]byte, len(s));
w := 0; w := 0;
for r := 1; r < len(s)-1; { for r := 1; r < len(s)-1; {
switch { switch {
...@@ -118,9 +118,9 @@ export func Unquote(s string) (t string, ok bool) { ...@@ -118,9 +118,9 @@ export func Unquote(s string) (t string, ok bool) {
} }
export func Quote(s string) string { export func Quote(s string) string {
chr := new([]byte, utf8.UTFMax); chr := make([]byte, utf8.UTFMax);
chr0 := chr[0:1]; chr0 := chr[0:1];
b := new(*io.ByteBuffer); b := new(io.ByteBuffer);
chr[0] = '"'; chr[0] = '"';
b.Write(chr0); b.Write(chr0);
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
...@@ -387,7 +387,7 @@ Switch: ...@@ -387,7 +387,7 @@ Switch:
} }
export func Parse(s string, build Builder) (ok bool, errindx int, errtok string) { export func Parse(s string, build Builder) (ok bool, errindx int, errtok string) {
lex := new(*Lexer); lex := new(Lexer);
lex.s = s; lex.s = s;
lex.Next(); lex.Next();
if ParseValue(lex, build) { if ParseValue(lex, build) {
......
...@@ -22,7 +22,7 @@ func FetchGoogle(t *testing.T, fd net.Conn, network, addr string) { ...@@ -22,7 +22,7 @@ func FetchGoogle(t *testing.T, fd net.Conn, network, addr string) {
req := io.StringBytes("GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n"); req := io.StringBytes("GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n");
n, errno := fd.Write(req); n, errno := fd.Write(req);
buf := new([]byte, 1000); buf := make([]byte, 1000);
n, errno = io.Readn(fd, buf); n, errno = io.Readn(fd, buf);
if n < 1000 { if n < 1000 {
......
...@@ -44,7 +44,7 @@ func Exchange(cfg *DNS_Config, c Conn, name string) (m *DNS_Msg, err *os.Error) ...@@ -44,7 +44,7 @@ func Exchange(cfg *DNS_Config, c Conn, name string) (m *DNS_Msg, err *os.Error)
if len(name) >= 256 { if len(name) >= 256 {
return nil, DNS_NameTooLong return nil, DNS_NameTooLong
} }
out := new(*DNS_Msg); out := new(DNS_Msg);
out.id = 0x1234; out.id = 0x1234;
out.question = []DNS_Question{ out.question = []DNS_Question{
DNS_Question{ name, DNS_TypeA, DNS_ClassINET } DNS_Question{ name, DNS_TypeA, DNS_ClassINET }
...@@ -64,14 +64,14 @@ func Exchange(cfg *DNS_Config, c Conn, name string) (m *DNS_Msg, err *os.Error) ...@@ -64,14 +64,14 @@ func Exchange(cfg *DNS_Config, c Conn, name string) (m *DNS_Msg, err *os.Error)
// TODO(rsc): set up timeout or call ReadTimeout. // TODO(rsc): set up timeout or call ReadTimeout.
// right now net does not support that. // right now net does not support that.
buf := new([]byte, 2000); // More than enough. buf := make([]byte, 2000); // More than enough.
n, err = c.Read(buf); n, err = c.Read(buf);
if err != nil { if err != nil {
// TODO(rsc): only continue if timed out // TODO(rsc): only continue if timed out
continue continue
} }
buf = buf[0:n]; buf = buf[0:n];
in := new(*DNS_Msg); in := new(DNS_Msg);
if !in.Unpack(buf) || in.id != out.id { if !in.Unpack(buf) || in.id != out.id {
continue continue
} }
...@@ -85,7 +85,7 @@ func Exchange(cfg *DNS_Config, c Conn, name string) (m *DNS_Msg, err *os.Error) ...@@ -85,7 +85,7 @@ func Exchange(cfg *DNS_Config, c Conn, name string) (m *DNS_Msg, err *os.Error)
// On return, if err == nil, addrs != nil. // On return, if err == nil, addrs != nil.
// TODO(rsc): Maybe return [][]byte (==[]IPAddr) instead? // TODO(rsc): Maybe return [][]byte (==[]IPAddr) instead?
func Answer(name string, dns *DNS_Msg) (addrs []string, err *os.Error) { func Answer(name string, dns *DNS_Msg) (addrs []string, err *os.Error) {
addrs = new([]string, 0, len(dns.answer)); addrs = make([]string, 0, len(dns.answer));
if dns.rcode == DNS_RcodeNameError && dns.authoritative { if dns.rcode == DNS_RcodeNameError && dns.authoritative {
return nil, DNS_NameNotFound // authoritative "no such host" return nil, DNS_NameNotFound // authoritative "no such host"
......
...@@ -31,9 +31,9 @@ export func DNS_ReadConfig() *DNS_Config { ...@@ -31,9 +31,9 @@ export func DNS_ReadConfig() *DNS_Config {
if file == nil { if file == nil {
return nil return nil
} }
conf := new(*DNS_Config); conf := new(DNS_Config);
conf.servers = new([]string, 3)[0:0]; // small, but the standard limit conf.servers = make([]string, 3)[0:0]; // small, but the standard limit
conf.search = new([]string, 0); conf.search = make([]string, 0);
conf.ndots = 1; conf.ndots = 1;
conf.timeout = 1; conf.timeout = 1;
conf.attempts = 1; conf.attempts = 1;
...@@ -62,14 +62,14 @@ export func DNS_ReadConfig() *DNS_Config { ...@@ -62,14 +62,14 @@ export func DNS_ReadConfig() *DNS_Config {
case "domain": // set search path to just this domain case "domain": // set search path to just this domain
if len(f) > 1 { if len(f) > 1 {
conf.search = new([]string, 1); conf.search = make([]string, 1);
conf.search[0] = f[1]; conf.search[0] = f[1];
} else { } else {
conf.search = new([]string, 0) conf.search = make([]string, 0)
} }
case "search": // set search path to given servers case "search": // set search path to given servers
conf.search = new([]string, len(f) - 1); conf.search = make([]string, len(f) - 1);
for i := 0; i < len(conf.search); i++ { for i := 0; i < len(conf.search); i++ {
conf.search[i] = f[i+1]; conf.search[i] = f[i+1];
} }
......
...@@ -198,18 +198,18 @@ export type DNS_RR_A struct { ...@@ -198,18 +198,18 @@ export type DNS_RR_A struct {
// Map of constructors for each RR wire type. // Map of constructors for each RR wire type.
var rr_mk = map[int]*()DNS_RR { var rr_mk = map[int]*()DNS_RR {
DNS_TypeCNAME: func() DNS_RR { return new(*DNS_RR_CNAME) }, DNS_TypeCNAME: func() DNS_RR { return new(DNS_RR_CNAME) },
DNS_TypeHINFO: func() DNS_RR { return new(*DNS_RR_HINFO) }, DNS_TypeHINFO: func() DNS_RR { return new(DNS_RR_HINFO) },
DNS_TypeMB: func() DNS_RR { return new(*DNS_RR_MB) }, DNS_TypeMB: func() DNS_RR { return new(DNS_RR_MB) },
DNS_TypeMG: func() DNS_RR { return new(*DNS_RR_MG) }, DNS_TypeMG: func() DNS_RR { return new(DNS_RR_MG) },
DNS_TypeMINFO: func() DNS_RR { return new(*DNS_RR_MINFO) }, DNS_TypeMINFO: func() DNS_RR { return new(DNS_RR_MINFO) },
DNS_TypeMR: func() DNS_RR { return new(*DNS_RR_MR) }, DNS_TypeMR: func() DNS_RR { return new(DNS_RR_MR) },
DNS_TypeMX: func() DNS_RR { return new(*DNS_RR_MX) }, DNS_TypeMX: func() DNS_RR { return new(DNS_RR_MX) },
DNS_TypeNS: func() DNS_RR { return new(*DNS_RR_NS) }, DNS_TypeNS: func() DNS_RR { return new(DNS_RR_NS) },
DNS_TypePTR: func() DNS_RR { return new(*DNS_RR_PTR) }, DNS_TypePTR: func() DNS_RR { return new(DNS_RR_PTR) },
DNS_TypeSOA: func() DNS_RR { return new(*DNS_RR_SOA) }, DNS_TypeSOA: func() DNS_RR { return new(DNS_RR_SOA) },
DNS_TypeTXT: func() DNS_RR { return new(*DNS_RR_TXT) }, DNS_TypeTXT: func() DNS_RR { return new(DNS_RR_TXT) },
DNS_TypeA: func() DNS_RR { return new(*DNS_RR_A) }, DNS_TypeA: func() DNS_RR { return new(DNS_RR_A) },
} }
// Pack a domain name s into msg[off:]. // Pack a domain name s into msg[off:].
...@@ -424,7 +424,7 @@ func UnpackStructValue(val reflect.StructValue, msg []byte, off int) (off1 int, ...@@ -424,7 +424,7 @@ func UnpackStructValue(val reflect.StructValue, msg []byte, off int) (off1 int,
} }
n := int(msg[off]); n := int(msg[off]);
off++; off++;
b := new([]byte, n); b := make([]byte, n);
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
b[i] = msg[off+i]; b[i] = msg[off+i];
} }
...@@ -582,7 +582,7 @@ func (dns *DNS_Msg) Pack() (msg []byte, ok bool) { ...@@ -582,7 +582,7 @@ func (dns *DNS_Msg) Pack() (msg []byte, ok bool) {
// Could work harder to calculate message size, // Could work harder to calculate message size,
// but this is far more than we need and not // but this is far more than we need and not
// big enough to hurt the allocator. // big enough to hurt the allocator.
msg = new([]byte, 2000); msg = make([]byte, 2000);
// Pack it in: header and then the pieces. // Pack it in: header and then the pieces.
off := 0; off := 0;
...@@ -623,10 +623,10 @@ func (dns *DNS_Msg) Unpack(msg []byte) bool { ...@@ -623,10 +623,10 @@ func (dns *DNS_Msg) Unpack(msg []byte) bool {
dns.rcode = int(dh.bits & 0xF); dns.rcode = int(dh.bits & 0xF);
// Arrays. // Arrays.
dns.question = new([]DNS_Question, dh.qdcount); dns.question = make([]DNS_Question, dh.qdcount);
dns.answer = new([]DNS_RR, dh.ancount); dns.answer = make([]DNS_RR, dh.ancount);
dns.ns = new([]DNS_RR, dh.nscount); dns.ns = make([]DNS_RR, dh.nscount);
dns.extra = new([]DNS_RR, dh.arcount); dns.extra = make([]DNS_RR, dh.arcount);
for i := 0; i < len(dns.question); i++ { for i := 0; i < len(dns.question); i++ {
off, ok = UnpackStruct(&dns.question[i], msg, off); off, ok = UnpackStruct(&dns.question[i], msg, off);
......
...@@ -78,9 +78,9 @@ type PollServer struct { ...@@ -78,9 +78,9 @@ type PollServer struct {
func (s *PollServer) Run(); func (s *PollServer) Run();
func NewPollServer() (s *PollServer, err *os.Error) { func NewPollServer() (s *PollServer, err *os.Error) {
s = new(*PollServer); s = new(PollServer);
s.cr = new(chan *FD, 1); s.cr = make(chan *FD, 1);
s.cw = new(chan *FD, 1); s.cw = make(chan *FD, 1);
if s.pr, s.pw, err = os.Pipe(); err != nil { if s.pr, s.pw, err = os.Pipe(); err != nil {
return nil, err return nil, err
} }
...@@ -100,7 +100,7 @@ func NewPollServer() (s *PollServer, err *os.Error) { ...@@ -100,7 +100,7 @@ func NewPollServer() (s *PollServer, err *os.Error) {
s.poll.Close(); s.poll.Close();
goto Error goto Error
} }
s.pending = new(map[int64] *FD); s.pending = make(map[int64] *FD);
go s.Run(); go s.Run();
return s, nil return s, nil
} }
...@@ -214,11 +214,11 @@ export func NewFD(fd int64) (f *FD, err *os.Error) { ...@@ -214,11 +214,11 @@ export func NewFD(fd int64) (f *FD, err *os.Error) {
if err = SetNonblock(fd); err != nil { if err = SetNonblock(fd); err != nil {
return nil, err return nil, err
} }
f = new(*FD); f = new(FD);
f.fd = fd; f.fd = fd;
f.osfd = os.NewFD(fd); f.osfd = os.NewFD(fd);
f.cr = new(chan *FD, 1); f.cr = make(chan *FD, 1);
f.cw = new(chan *FD, 1); f.cw = make(chan *FD, 1);
return f, nil return f, nil
} }
......
...@@ -19,7 +19,7 @@ export type Pollster struct { ...@@ -19,7 +19,7 @@ export type Pollster struct {
} }
export func NewPollster() (p *Pollster, err *os.Error) { export func NewPollster() (p *Pollster, err *os.Error) {
p = new(*Pollster); p = new(Pollster);
var e int64; var e int64;
if p.kq, e = syscall.kqueue(); e != 0 { if p.kq, e = syscall.kqueue(); e != 0 {
return nil, os.ErrnoToError(e) return nil, os.ErrnoToError(e)
......
...@@ -25,7 +25,7 @@ export type Pollster struct { ...@@ -25,7 +25,7 @@ export type Pollster struct {
} }
export func NewPollster() (p *Pollster, err *os.Error) { export func NewPollster() (p *Pollster, err *os.Error) {
p = new(*Pollster); p = new(Pollster);
var e int64; var e int64;
// The arg to epoll_create is a hint to the kernel // The arg to epoll_create is a hint to the kernel
...@@ -34,7 +34,7 @@ export func NewPollster() (p *Pollster, err *os.Error) { ...@@ -34,7 +34,7 @@ export func NewPollster() (p *Pollster, err *os.Error) {
if p.epfd, e = syscall.epoll_create(16); e != 0 { if p.epfd, e = syscall.epoll_create(16); e != 0 {
return nil, os.ErrnoToError(e) return nil, os.ErrnoToError(e)
} }
p.events = new(map[int64] uint32); p.events = make(map[int64] uint32);
return p, nil return p, nil
} }
......
...@@ -23,7 +23,7 @@ export const ( ...@@ -23,7 +23,7 @@ export const (
// Make the 4 bytes into an IPv4 address (in IPv6 form) // Make the 4 bytes into an IPv4 address (in IPv6 form)
func MakeIPv4(a, b, c, d byte) []byte { func MakeIPv4(a, b, c, d byte) []byte {
p := new([]byte, IPv6len); p := make([]byte, IPv6len);
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
p[i] = 0 p[i] = 0
} }
...@@ -44,11 +44,11 @@ func init() { ...@@ -44,11 +44,11 @@ func init() {
IPv4allsys = MakeIPv4(0xe0, 0x00, 0x00, 0x01); IPv4allsys = MakeIPv4(0xe0, 0x00, 0x00, 0x01);
IPv4allrouter = MakeIPv4(0xe0, 0x00, 0x00, 0x02); IPv4allrouter = MakeIPv4(0xe0, 0x00, 0x00, 0x02);
IPv4prefix = MakeIPv4(0, 0, 0, 0); IPv4prefix = MakeIPv4(0, 0, 0, 0);
IPallbits = new([]byte, IPv6len); IPallbits = make([]byte, IPv6len);
for i := 0; i < IPv6len; i++ { for i := 0; i < IPv6len; i++ {
IPallbits[i] = 0xff IPallbits[i] = 0xff
} }
IPnoaddr = new([]byte, IPv6len); // zeroed IPnoaddr = make([]byte, IPv6len); // zeroed
} }
// Is p all zeros? // Is p all zeros?
...@@ -115,7 +115,7 @@ export func Mask(ip []byte, mask []byte) []byte { ...@@ -115,7 +115,7 @@ export func Mask(ip []byte, mask []byte) []byte {
if n != len(mask) { if n != len(mask) {
return nil return nil
} }
out := new([]byte, n); out := make([]byte, n);
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
out[i] = ip[i] & mask[i]; out[i] = ip[i] & mask[i];
} }
...@@ -280,7 +280,7 @@ func ParseIPv4(s string) []byte { ...@@ -280,7 +280,7 @@ func ParseIPv4(s string) []byte {
// * The last 32 bits can be in IPv4 form. // * The last 32 bits can be in IPv4 form.
// Thus, ::ffff:1.2.3.4 is the IPv4 address 1.2.3.4. // Thus, ::ffff:1.2.3.4 is the IPv4 address 1.2.3.4.
func ParseIPv6(s string) []byte { func ParseIPv6(s string) []byte {
p := new([]byte, 16); p := make([]byte, 16);
ellipsis := -1; // position of ellipsis in p ellipsis := -1; // position of ellipsis in p
i := 0; // index in string s i := 0; // index in string s
......
...@@ -370,7 +370,7 @@ func (c *ConnTCP) SetNoDelay(nodelay bool) *os.Error { ...@@ -370,7 +370,7 @@ func (c *ConnTCP) SetNoDelay(nodelay bool) *os.Error {
} }
func NewConnTCP(fd *FD, raddr string) *ConnTCP { func NewConnTCP(fd *FD, raddr string) *ConnTCP {
c := new(*ConnTCP); c := new(ConnTCP);
c.fd = fd; c.fd = fd;
c.raddr = raddr; c.raddr = raddr;
c.SetNoDelay(true); c.SetNoDelay(true);
...@@ -398,7 +398,7 @@ export type ConnUDP struct { ...@@ -398,7 +398,7 @@ export type ConnUDP struct {
} }
func NewConnUDP(fd *FD, raddr string) *ConnUDP { func NewConnUDP(fd *FD, raddr string) *ConnUDP {
c := new(*ConnUDP); c := new(ConnUDP);
c.fd = fd; c.fd = fd;
c.raddr = raddr; c.raddr = raddr;
return c return c
...@@ -497,7 +497,7 @@ export func ListenTCP(net, laddr string) (l *ListenerTCP, err *os.Error) { ...@@ -497,7 +497,7 @@ export func ListenTCP(net, laddr string) (l *ListenerTCP, err *os.Error) {
syscall.close(fd.fd); syscall.close(fd.fd);
return nil, os.ErrnoToError(e1) return nil, os.ErrnoToError(e1)
} }
l = new(*ListenerTCP); l = new(ListenerTCP);
l.fd = fd; l.fd = fd;
return l, nil return l, nil
} }
......
...@@ -16,7 +16,7 @@ export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E ...@@ -16,7 +16,7 @@ export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
} }
sa := new(*syscall.SockaddrInet4); sa := new(syscall.SockaddrInet4);
sa.len = syscall.SizeofSockaddrInet4; sa.len = syscall.SizeofSockaddrInet4;
sa.family = syscall.AF_INET; sa.family = syscall.AF_INET;
sa.port[0] = byte(port>>8); sa.port[0] = byte(port>>8);
...@@ -32,7 +32,7 @@ export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E ...@@ -32,7 +32,7 @@ export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
} }
sa := new(*syscall.SockaddrInet6); sa := new(syscall.SockaddrInet6);
sa.len = syscall.SizeofSockaddrInet6; sa.len = syscall.SizeofSockaddrInet6;
sa.family = syscall.AF_INET6; sa.family = syscall.AF_INET6;
sa.port[0] = byte(port>>8); sa.port[0] = byte(port>>8);
......
...@@ -16,7 +16,7 @@ export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E ...@@ -16,7 +16,7 @@ export func IPv4ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
if p == nil || port < 0 || port > 0xFFFF { if p == nil || port < 0 || port > 0xFFFF {
return nil, os.EINVAL return nil, os.EINVAL
} }
sa := new(*syscall.SockaddrInet4); sa := new(syscall.SockaddrInet4);
sa.family = syscall.AF_INET; sa.family = syscall.AF_INET;
sa.port[0] = byte(port>>8); sa.port[0] = byte(port>>8);
sa.port[1] = byte(port); sa.port[1] = byte(port);
...@@ -41,7 +41,7 @@ export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E ...@@ -41,7 +41,7 @@ export func IPv6ToSockaddr(p []byte, port int) (sa1 *syscall.Sockaddr, err *os.E
p = IPv6zero; p = IPv6zero;
} }
sa := new(*syscall.SockaddrInet6); sa := new(syscall.SockaddrInet6);
sa.family = syscall.AF_INET6; sa.family = syscall.AF_INET6;
sa.port[0] = byte(port>>8); sa.port[0] = byte(port>>8);
sa.port[1] = byte(port); sa.port[1] = byte(port);
......
...@@ -60,7 +60,7 @@ package func Open(name string) *File { ...@@ -60,7 +60,7 @@ package func Open(name string) *File {
if err != nil { if err != nil {
return nil return nil
} }
return &File{fd, new([]byte, 1024)[0:0]}; return &File{fd, make([]byte, 1024)[0:0]};
} }
package func ByteIndex(s string, c byte) int { package func ByteIndex(s string, c byte) int {
...@@ -85,7 +85,7 @@ package func CountAnyByte(s string, t string) int { ...@@ -85,7 +85,7 @@ package func CountAnyByte(s string, t string) int {
// Split s at any bytes in t. // Split s at any bytes in t.
package func SplitAtBytes(s string, t string) []string { package func SplitAtBytes(s string, t string) []string {
a := new([]string, 1+CountAnyByte(s, t)); a := make([]string, 1+CountAnyByte(s, t));
n := 0; n := 0;
last := 0; last := 0;
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {
......
...@@ -17,7 +17,7 @@ import ( ...@@ -17,7 +17,7 @@ import (
var services map[string] map[string] int var services map[string] map[string] int
func ReadServices() { func ReadServices() {
services = new(map[string] map[string] int); services = make(map[string] map[string] int);
file := Open("/etc/services"); file := Open("/etc/services");
for line, ok := file.ReadLine(); ok; line, ok = file.ReadLine() { for line, ok := file.ReadLine(); ok; line, ok = file.ReadLine() {
// "http 80/tcp www www-http # World Wide Web HTTP" // "http 80/tcp www www-http # World Wide Web HTTP"
...@@ -36,7 +36,7 @@ func ReadServices() { ...@@ -36,7 +36,7 @@ func ReadServices() {
netw := portnet[j+1:len(portnet)]; // "tcp" netw := portnet[j+1:len(portnet)]; // "tcp"
m, ok1 := services[netw]; m, ok1 := services[netw];
if !ok1 { if !ok1 {
m = new(map[string] int); m = make(map[string] int);
services[netw] = m; services[netw] = m;
} }
for i := 0; i < len(f); i++ { for i := 0; i < len(f); i++ {
......
...@@ -36,7 +36,7 @@ func Serve(t *testing.T, network, addr string, listening, done chan<- int) { ...@@ -36,7 +36,7 @@ func Serve(t *testing.T, network, addr string, listening, done chan<- int) {
if err != nil { if err != nil {
break; break;
} }
echodone := new(chan int); echodone := make(chan int);
go Echo(fd, echodone); go Echo(fd, echodone);
<-echodone; // make sure Echo stops <-echodone; // make sure Echo stops
l.Close(); l.Close();
...@@ -67,8 +67,8 @@ func Connect(t *testing.T, network, addr string) { ...@@ -67,8 +67,8 @@ func Connect(t *testing.T, network, addr string) {
func DoTest(t *testing.T, network, listenaddr, dialaddr string) { func DoTest(t *testing.T, network, listenaddr, dialaddr string) {
t.Logf("Test %s %s %s\n", network, listenaddr, dialaddr); t.Logf("Test %s %s %s\n", network, listenaddr, dialaddr);
listening := new(chan int); listening := make(chan int);
done := new(chan int); done := make(chan int);
go Serve(t, network, listenaddr, listening, done); go Serve(t, network, listenaddr, listening, done);
<-listening; // wait for server to start <-listening; // wait for server to start
Connect(t, network, dialaddr); Connect(t, network, dialaddr);
......
...@@ -22,8 +22,8 @@ type Request struct { ...@@ -22,8 +22,8 @@ type Request struct {
} }
// TODO: Would like to use chan Request but 6g rejects it. // TODO: Would like to use chan Request but 6g rejects it.
var service = new(chan *Request) var service = make(chan *Request)
var jobmap = new(map[*()]*Job) var jobmap = make(map[*()]*Job)
// Moderate access to the jobmap. // Moderate access to the jobmap.
// Even if accesses were thread-safe (they should be but are not) // Even if accesses were thread-safe (they should be but are not)
...@@ -34,8 +34,8 @@ func Server() { ...@@ -34,8 +34,8 @@ func Server() {
req := <-service; req := <-service;
job, present := jobmap[req.f]; job, present := jobmap[req.f];
if !present { if !present {
job = new(*Job); job = new(Job);
job.doit = new(chan bool, 1); job.doit = make(chan bool, 1);
job.doit <- true; job.doit <- true;
jobmap[req.f] = job jobmap[req.f] = job
} }
...@@ -52,7 +52,7 @@ export func Do(f *()) { ...@@ -52,7 +52,7 @@ export func Do(f *()) {
var present bool; var present bool;
// job, present = jobmap[f] // job, present = jobmap[f]
if !present { if !present {
c := new(chan *Job); c := make(chan *Job);
req := Request{f, c}; req := Request{f, c};
service <- &req; service <- &req;
job = <-c job = <-c
......
...@@ -12,7 +12,7 @@ export type Error struct { ...@@ -12,7 +12,7 @@ export type Error struct {
s string s string
} }
var ErrorTab = new(map[int64] *Error); var ErrorTab = make(map[int64] *Error);
export func NewError(s string) *Error { export func NewError(s string) *Error {
return &Error{s} return &Error{s}
......
...@@ -85,7 +85,7 @@ func (fd *FD) WriteString(s string) (ret int, err *Error) { ...@@ -85,7 +85,7 @@ func (fd *FD) WriteString(s string) (ret int, err *Error) {
if fd == nil { if fd == nil {
return 0, EINVAL return 0, EINVAL
} }
b := new([]byte, len(s)+1); b := make([]byte, len(s)+1);
if !syscall.StringToBytes(b, s) { if !syscall.StringToBytes(b, s) {
return 0, EINVAL return 0, EINVAL
} }
......
...@@ -166,7 +166,7 @@ frand() float ...@@ -166,7 +166,7 @@ frand() float
export func export func
perm(n int) []int perm(n int) []int
{ {
m := new([]int, n); m := make([]int, n);
for i:=0; i<n; i++ { for i:=0; i<n; i++ {
m[i] = i; m[i] = i;
} }
......
...@@ -176,7 +176,7 @@ export func TestAll(tt *testing.T) { // TODO(r): wrap up better ...@@ -176,7 +176,7 @@ export func TestAll(tt *testing.T) { // TODO(r): wrap up better
} }
{ {
type C chan *T; // TODO: should not be necessary type C chan *T; // TODO: should not be necessary
var tmp = new(*C); var tmp = new(C);
value := reflect.NewValue(tmp); value := reflect.NewValue(tmp);
assert(reflect.ValueToString(value), "*reflect.C·all_test(@)"); assert(reflect.ValueToString(value), "*reflect.C·all_test(@)");
} }
......
...@@ -332,7 +332,7 @@ func (t *InterfaceTypeStruct) Len() int { ...@@ -332,7 +332,7 @@ func (t *InterfaceTypeStruct) Len() int {
return len(t.field) return len(t.field)
} }
var NilInterface = NewInterfaceTypeStruct("nil", "", new([]Field, 0)); var NilInterface = NewInterfaceTypeStruct("nil", "", make([]Field, 0));
// -- Func // -- Func
...@@ -397,9 +397,9 @@ func init() { ...@@ -397,9 +397,9 @@ func init() {
Lock(); // not necessary because of init ordering but be safe. Lock(); // not necessary because of init ordering but be safe.
types = new(map[string] Type); types = make(map[string] Type);
typestring = new(map[string] string); typestring = make(map[string] string);
basicstub = new(map[string] *StubType); basicstub = make(map[string] *StubType);
// Basics go into types table // Basics go into types table
types[MissingString] = Missing; types[MissingString] = Missing;
...@@ -674,11 +674,11 @@ func (p *Parser) Chan(name string, tokstart, dir int) *StubType { ...@@ -674,11 +674,11 @@ func (p *Parser) Chan(name string, tokstart, dir int) *StubType {
// Parse array of fields for struct, interface, and func arguments // Parse array of fields for struct, interface, and func arguments
func (p *Parser) Fields(sep, term string) []Field { func (p *Parser) Fields(sep, term string) []Field {
a := new([]Field, 10); a := make([]Field, 10);
nf := 0; nf := 0;
for p.token != "" && p.token != term { for p.token != "" && p.token != term {
if nf == len(a) { if nf == len(a) {
a1 := new([]Field, 2*nf); a1 := make([]Field, 2*nf);
for i := 0; i < nf; i++ { for i := 0; i < nf; i++ {
a1[i] = a[i]; a1[i] = a[i];
} }
...@@ -706,7 +706,7 @@ func (p *Parser) Fields(sep, term string) []Field { ...@@ -706,7 +706,7 @@ func (p *Parser) Fields(sep, term string) []Field {
// A single type packaged as a field for a function return // A single type packaged as a field for a function return
func (p *Parser) OneField() []Field { func (p *Parser) OneField() []Field {
a := new([]Field, 1); a := make([]Field, 1);
a[0].name = ""; a[0].name = "";
a[0].typ = p.Type(""); a[0].typ = p.Type("");
return a; return a;
...@@ -838,7 +838,7 @@ export func ParseTypeString(name, typestring string) Type { ...@@ -838,7 +838,7 @@ export func ParseTypeString(name, typestring string) Type {
// If the typestring is empty, it represents (the type of) a nil interface value // If the typestring is empty, it represents (the type of) a nil interface value
return NilInterface return NilInterface
} }
p := new(*Parser); p := new(Parser);
p.str = typestring; p.str = typestring;
p.Next(); p.Next();
return p.Type(name).Get(); return p.Type(name).Get();
......
...@@ -625,7 +625,7 @@ func (v *FixedArrayValueStruct) Elem(i int) Value { ...@@ -625,7 +625,7 @@ func (v *FixedArrayValueStruct) Elem(i int) Value {
func ArrayCreator(typ Type, addr Addr) Value { func ArrayCreator(typ Type, addr Addr) Value {
arraytype := typ.(ArrayType); arraytype := typ.(ArrayType);
if arraytype.Open() { if arraytype.Open() {
v := new(*OpenArrayValueStruct); v := new(OpenArrayValueStruct);
v.kind = ArrayKind; v.kind = ArrayKind;
v.addr = addr; v.addr = addr;
v.typ = typ; v.typ = typ;
...@@ -634,7 +634,7 @@ func ArrayCreator(typ Type, addr Addr) Value { ...@@ -634,7 +634,7 @@ func ArrayCreator(typ Type, addr Addr) Value {
v.array = addr.(*RuntimeArray); v.array = addr.(*RuntimeArray);
return v; return v;
} }
v := new(*FixedArrayValueStruct); v := new(FixedArrayValueStruct);
v.kind = ArrayKind; v.kind = ArrayKind;
v.addr = addr; v.addr = addr;
v.typ = typ; v.typ = typ;
...@@ -710,7 +710,7 @@ func (v *StructValueStruct) Field(i int) Value { ...@@ -710,7 +710,7 @@ func (v *StructValueStruct) Field(i int) Value {
func StructCreator(typ Type, addr Addr) Value { func StructCreator(typ Type, addr Addr) Value {
t := typ.(StructType); t := typ.(StructType);
nfield := t.Len(); nfield := t.Len();
v := &StructValueStruct{ Common{StructKind, typ, addr}, new([]Value, nfield) }; v := &StructValueStruct{ Common{StructKind, typ, addr}, make([]Value, nfield) };
for i := 0; i < nfield; i++ { for i := 0; i < nfield; i++ {
name, ftype, str, offset := t.Field(i); name, ftype, str, offset := t.Field(i);
addr_uint := uintptr(addr) + uintptr(offset); addr_uint := uintptr(addr) + uintptr(offset);
...@@ -783,7 +783,7 @@ var creator = map[int] Creator { ...@@ -783,7 +783,7 @@ var creator = map[int] Creator {
FuncKind : &FuncCreator, FuncKind : &FuncCreator,
} }
var typecache = new(map[string] *Type); var typecache = make(map[string] *Type);
func NewValueAddr(typ Type, addr Addr) Value { func NewValueAddr(typ Type, addr Addr) Value {
c, ok := creator[typ.Kind()]; c, ok := creator[typ.Kind()];
...@@ -807,7 +807,7 @@ export func NewInitValue(typ Type) Value { ...@@ -807,7 +807,7 @@ export func NewInitValue(typ Type) Value {
if size == 0 { if size == 0 {
size = 1; size = 1;
} }
data := new([]uint8, size); data := make([]uint8, size);
return NewValueAddr(typ, Addr(&data[0])); return NewValueAddr(typ, Addr(&data[0]));
} }
...@@ -824,12 +824,12 @@ export func NewOpenArrayValue(typ ArrayType, len, cap int) ArrayValue { ...@@ -824,12 +824,12 @@ export func NewOpenArrayValue(typ ArrayType, len, cap int) ArrayValue {
return nil return nil
} }
array := new(*RuntimeArray); array := new(RuntimeArray);
size := typ.Elem().Size() * cap; size := typ.Elem().Size() * cap;
if size == 0 { if size == 0 {
size = 1; size = 1;
} }
data := new([]uint8, size); data := make([]uint8, size);
array.data = Addr(&data[0]); array.data = Addr(&data[0]);
array.len = uint32(len); array.len = uint32(len);
array.cap = uint32(cap); array.cap = uint32(cap);
...@@ -874,13 +874,13 @@ export func NewValue(e interface {}) Value { ...@@ -874,13 +874,13 @@ export func NewValue(e interface {}) Value {
p, ok := typecache[typestring]; p, ok := typecache[typestring];
if !ok { if !ok {
typ := ParseTypeString("", typestring); typ := ParseTypeString("", typestring);
p = new(*Type); p = new(Type);
*p = typ; *p = typ;
typecache[typestring] = p; typecache[typestring] = p;
} }
// Content of interface is a value; need a permanent copy to take its address // Content of interface is a value; need a permanent copy to take its address
// so we can modify the contents. Values contain pointers to 'values'. // so we can modify the contents. Values contain pointers to 'values'.
ap := new(*uint64); ap := new(uint64);
*ap = value; *ap = value;
return NewValueAddr(*p, ap.(Addr)); return NewValueAddr(*p, ap.(Addr));
} }
...@@ -197,7 +197,7 @@ func MatchStringsTest(t *testing.T, expr string, str string, match []int) { ...@@ -197,7 +197,7 @@ func MatchStringsTest(t *testing.T, expr string, str string, match []int) {
if re == nil { if re == nil {
return return
} }
strs := new([]string, len(match)/2); strs := make([]string, len(match)/2);
for i := 0; i < len(match); i++ { for i := 0; i < len(match); i++ {
strs[i/2] = str[match[i] : match[i+1]] strs[i/2] = str[match[i] : match[i+1]]
} }
......
...@@ -112,7 +112,7 @@ func (char *Char) Type() int { return CHAR } ...@@ -112,7 +112,7 @@ func (char *Char) Type() int { return CHAR }
func (char *Char) Print() { print("char ", string(char.char)) } func (char *Char) Print() { print("char ", string(char.char)) }
func NewChar(char int) *Char { func NewChar(char int) *Char {
c := new(*Char); c := new(Char);
c.char = char; c.char = char;
return c; return c;
} }
...@@ -163,7 +163,7 @@ func (cclass *CharClass) Matches(c int) bool { ...@@ -163,7 +163,7 @@ func (cclass *CharClass) Matches(c int) bool {
} }
func NewCharClass() *CharClass { func NewCharClass() *CharClass {
c := new(*CharClass); c := new(CharClass);
c.ranges = array.NewIntArray(0); c.ranges = array.NewIntArray(0);
return c; return c;
} }
...@@ -249,7 +249,7 @@ func (p *Parser) nextc() int { ...@@ -249,7 +249,7 @@ func (p *Parser) nextc() int {
} }
func NewParser(re *RE) *Parser { func NewParser(re *RE) *Parser {
parser := new(*Parser); parser := new(Parser);
parser.re = re; parser.re = re;
parser.nextc(); // load p.ch parser.nextc(); // load p.ch
return parser; return parser;
...@@ -364,15 +364,15 @@ func (p *Parser) Term() (start, end Inst) { ...@@ -364,15 +364,15 @@ func (p *Parser) Term() (start, end Inst) {
p.re.Error(ErrUnmatchedRbkt); p.re.Error(ErrUnmatchedRbkt);
case '^': case '^':
p.nextc(); p.nextc();
start = p.re.Add(new(*Bot)); start = p.re.Add(new(Bot));
return start, start; return start, start;
case '$': case '$':
p.nextc(); p.nextc();
start = p.re.Add(new(*Eot)); start = p.re.Add(new(Eot));
return start, start; return start, start;
case '.': case '.':
p.nextc(); p.nextc();
start = p.re.Add(new(*Any)); start = p.re.Add(new(Any));
return start, start; return start, start;
case '[': case '[':
p.nextc(); p.nextc();
...@@ -393,9 +393,9 @@ func (p *Parser) Term() (start, end Inst) { ...@@ -393,9 +393,9 @@ func (p *Parser) Term() (start, end Inst) {
} }
p.nlpar--; p.nlpar--;
p.nextc(); p.nextc();
bra := new(*Bra); bra := new(Bra);
p.re.Add(bra); p.re.Add(bra);
ebra := new(*Ebra); ebra := new(Ebra);
p.re.Add(ebra); p.re.Add(ebra);
bra.n = nbra; bra.n = nbra;
ebra.n = nbra; ebra.n = nbra;
...@@ -437,7 +437,7 @@ func (p *Parser) Closure() (start, end Inst) { ...@@ -437,7 +437,7 @@ func (p *Parser) Closure() (start, end Inst) {
switch p.c() { switch p.c() {
case '*': case '*':
// (start,end)*: // (start,end)*:
alt := new(*Alt); alt := new(Alt);
p.re.Add(alt); p.re.Add(alt);
end.SetNext(alt); // after end, do alt end.SetNext(alt); // after end, do alt
alt.left = start; // alternate brach: return to start alt.left = start; // alternate brach: return to start
...@@ -445,16 +445,16 @@ func (p *Parser) Closure() (start, end Inst) { ...@@ -445,16 +445,16 @@ func (p *Parser) Closure() (start, end Inst) {
end = alt; end = alt;
case '+': case '+':
// (start,end)+: // (start,end)+:
alt := new(*Alt); alt := new(Alt);
p.re.Add(alt); p.re.Add(alt);
end.SetNext(alt); // after end, do alt end.SetNext(alt); // after end, do alt
alt.left = start; // alternate brach: return to start alt.left = start; // alternate brach: return to start
end = alt; // start is unchanged; end is alt end = alt; // start is unchanged; end is alt
case '?': case '?':
// (start,end)?: // (start,end)?:
alt := new(*Alt); alt := new(Alt);
p.re.Add(alt); p.re.Add(alt);
nop := new(*Nop); nop := new(Nop);
p.re.Add(nop); p.re.Add(nop);
alt.left = start; // alternate branch is start alt.left = start; // alternate branch is start
alt.next = nop; // follow on to nop alt.next = nop; // follow on to nop
...@@ -478,7 +478,7 @@ func (p *Parser) Concatenation() (start, end Inst) { ...@@ -478,7 +478,7 @@ func (p *Parser) Concatenation() (start, end Inst) {
switch { switch {
case nstart == NULL: // end of this concatenation case nstart == NULL: // end of this concatenation
if start == NULL { // this is the empty string if start == NULL { // this is the empty string
nop := p.re.Add(new(*Nop)); nop := p.re.Add(new(Nop));
return nop, nop; return nop, nop;
} }
return; return;
...@@ -501,11 +501,11 @@ func (p *Parser) Regexp() (start, end Inst) { ...@@ -501,11 +501,11 @@ func (p *Parser) Regexp() (start, end Inst) {
case '|': case '|':
p.nextc(); p.nextc();
nstart, nend := p.Concatenation(); nstart, nend := p.Concatenation();
alt := new(*Alt); alt := new(Alt);
p.re.Add(alt); p.re.Add(alt);
alt.left = start; alt.left = start;
alt.next = nstart; alt.next = nstart;
nop := new(*Nop); nop := new(Nop);
p.re.Add(nop); p.re.Add(nop);
end.SetNext(nop); end.SetNext(nop);
nend.SetNext(nop); nend.SetNext(nop);
...@@ -550,12 +550,12 @@ func (re *RE) Dump() { ...@@ -550,12 +550,12 @@ func (re *RE) Dump() {
func (re *RE) DoParse() { func (re *RE) DoParse() {
parser := NewParser(re); parser := NewParser(re);
start := new(*Start); start := new(Start);
re.Add(start); re.Add(start);
s, e := parser.Regexp(); s, e := parser.Regexp();
start.next = s; start.next = s;
re.start = start; re.start = start;
e.SetNext(re.Add(new(*End))); e.SetNext(re.Add(new(End)));
if debug { if debug {
re.Dump(); re.Dump();
...@@ -572,7 +572,7 @@ func (re *RE) DoParse() { ...@@ -572,7 +572,7 @@ func (re *RE) DoParse() {
func Compiler(str string, ch chan *RE) { func Compiler(str string, ch chan *RE) {
re := new(*RE); re := new(RE);
re.expr = str; re.expr = str;
re.inst = array.New(0); re.inst = array.New(0);
re.ch = ch; re.ch = ch;
...@@ -589,7 +589,7 @@ export type Regexp interface { ...@@ -589,7 +589,7 @@ export type Regexp interface {
// Compile in separate goroutine; wait for result // Compile in separate goroutine; wait for result
export func Compile(str string) (regexp Regexp, error *os.Error) { export func Compile(str string) (regexp Regexp, error *os.Error) {
ch := new(chan *RE); ch := make(chan *RE);
go Compiler(str, ch); go Compiler(str, ch);
re := <-ch; re := <-ch;
return re, re.error return re, re.error
...@@ -615,7 +615,7 @@ func AddState(s []State, inst Inst, match []int) []State { ...@@ -615,7 +615,7 @@ func AddState(s []State, inst Inst, match []int) []State {
} }
} }
if l == cap(s) { if l == cap(s) {
s1 := new([]State, 2*l)[0:l]; s1 := make([]State, 2*l)[0:l];
for i := 0; i < l; i++ { for i := 0; i < l; i++ {
s1[i] = s[i]; s1[i] = s[i];
} }
...@@ -629,15 +629,15 @@ func AddState(s []State, inst Inst, match []int) []State { ...@@ -629,15 +629,15 @@ func AddState(s []State, inst Inst, match []int) []State {
func (re *RE) DoExecute(str string, pos int) []int { func (re *RE) DoExecute(str string, pos int) []int {
var s [2][]State; // TODO: use a vector when State values (not ptrs) can be vector elements var s [2][]State; // TODO: use a vector when State values (not ptrs) can be vector elements
s[0] = new([]State, 10)[0:0]; s[0] = make([]State, 10)[0:0];
s[1] = new([]State, 10)[0:0]; s[1] = make([]State, 10)[0:0];
in, out := 0, 1; in, out := 0, 1;
var final State; var final State;
found := false; found := false;
for pos <= len(str) { for pos <= len(str) {
if !found { if !found {
// prime the pump if we haven't seen a match yet // prime the pump if we haven't seen a match yet
match := new([]int, 2*(re.nbra+1)); match := make([]int, 2*(re.nbra+1));
for i := 0; i < len(match); i++ { for i := 0; i < len(match); i++ {
match[i] = -1; // no match seen; catches cases like "a(b)?c" on "ac" match[i] = -1; // no match seen; catches cases like "a(b)?c" on "ac"
} }
...@@ -689,7 +689,7 @@ func (re *RE) DoExecute(str string, pos int) []int { ...@@ -689,7 +689,7 @@ func (re *RE) DoExecute(str string, pos int) []int {
case ALT: case ALT:
s[in] = AddState(s[in], state.inst.(*Alt).left, state.match); s[in] = AddState(s[in], state.inst.(*Alt).left, state.match);
// give other branch a copy of this match vector // give other branch a copy of this match vector
s1 := new([]int, 2*(re.nbra+1)); s1 := make([]int, 2*(re.nbra+1));
for i := 0; i < len(s1); i++ { for i := 0; i < len(s1); i++ {
s1[i] = state.match[i] s1[i] = state.match[i]
} }
...@@ -729,7 +729,7 @@ func (re *RE) MatchStrings(s string) []string { ...@@ -729,7 +729,7 @@ func (re *RE) MatchStrings(s string) []string {
if r == nil { if r == nil {
return nil return nil
} }
a := new([]string, len(r)/2); a := make([]string, len(r)/2);
for i := 0; i < len(r); i += 2 { for i := 0; i < len(r); i += 2 {
a[i/2] = s[r[i] : r[i+1]] a[i/2] = s[r[i] : r[i+1]]
} }
......
...@@ -76,7 +76,7 @@ export func TestSortStrings(t *testing.T) { ...@@ -76,7 +76,7 @@ export func TestSortStrings(t *testing.T) {
} }
export func TestSortLargeRandom(t *testing.T) { export func TestSortLargeRandom(t *testing.T) {
data := new([]int, 1000000); data := make([]int, 1000000);
for i := 0; i < len(data); i++ { for i := 0; i < len(data); i++ {
data[i] = rand.rand() % 100; data[i] = rand.rand() % 100;
} }
......
...@@ -34,7 +34,7 @@ func StringToDecimal(s string) (neg bool, d *Decimal, trunc bool, ok bool) { ...@@ -34,7 +34,7 @@ func StringToDecimal(s string) (neg bool, d *Decimal, trunc bool, ok bool) {
} }
// digits // digits
b := new(*Decimal); b := new(Decimal);
sawdot := false; sawdot := false;
sawdigits := false; sawdigits := false;
for ; i < len(s); i++ { for ; i < len(s); i++ {
......
...@@ -39,7 +39,7 @@ func (a *Decimal) String() string { ...@@ -39,7 +39,7 @@ func (a *Decimal) String() string {
n += -a.dp; n += -a.dp;
} }
buf := new([]byte, n); buf := make([]byte, n);
w := 0; w := 0;
switch { switch {
case a.nd == 0: case a.nd == 0:
...@@ -120,7 +120,7 @@ func (a *Decimal) Assign(v uint64) { ...@@ -120,7 +120,7 @@ func (a *Decimal) Assign(v uint64) {
} }
package func NewDecimal(i uint64) *Decimal { package func NewDecimal(i uint64) *Decimal {
a := new(*Decimal); a := new(Decimal);
a.Assign(i); a.Assign(i);
return a; return a;
} }
......
...@@ -236,7 +236,7 @@ func RoundShortest(d *Decimal, mant uint64, exp int, flt *FloatInfo) { ...@@ -236,7 +236,7 @@ func RoundShortest(d *Decimal, mant uint64, exp int, flt *FloatInfo) {
// %e: -d.ddddde±dd // %e: -d.ddddde±dd
func FmtE(neg bool, d *Decimal, prec int) string { func FmtE(neg bool, d *Decimal, prec int) string {
buf := new([]byte, 3+Max(prec, 0)+30); // "-0." + prec digits + exp buf := make([]byte, 3+Max(prec, 0)+30); // "-0." + prec digits + exp
w := 0; // write index w := 0; // write index
// sign // sign
...@@ -306,7 +306,7 @@ func FmtE(neg bool, d *Decimal, prec int) string { ...@@ -306,7 +306,7 @@ func FmtE(neg bool, d *Decimal, prec int) string {
// %f: -ddddddd.ddddd // %f: -ddddddd.ddddd
func FmtF(neg bool, d *Decimal, prec int) string { func FmtF(neg bool, d *Decimal, prec int) string {
buf := new([]byte, 1+Max(d.dp, 1)+1+Max(prec, 0)); buf := make([]byte, 1+Max(d.dp, 1)+1+Max(prec, 0));
w := 0; w := 0;
// sign // sign
......
...@@ -8,7 +8,7 @@ import "utf8" ...@@ -8,7 +8,7 @@ import "utf8"
// Split string into array of UTF-8 sequences (still strings) // Split string into array of UTF-8 sequences (still strings)
export func explode(s string) []string { export func explode(s string) []string {
a := new([]string, utf8.RuneCountInString(s, 0, len(s))); a := make([]string, utf8.RuneCountInString(s, 0, len(s)));
j := 0; j := 0;
var size, rune int; var size, rune int;
for i := 0; i < len(a); i++ { for i := 0; i < len(a); i++ {
...@@ -57,7 +57,7 @@ export func split(s, sep string) []string { ...@@ -57,7 +57,7 @@ export func split(s, sep string) []string {
c := sep[0]; c := sep[0];
start := 0; start := 0;
n := count(s, sep)+1; n := count(s, sep)+1;
a := new([]string, n); a := make([]string, n);
na := 0; na := 0;
for i := 0; i+len(sep) <= len(s); i++ { for i := 0; i+len(sep) <= len(s); i++ {
if s[i] == c && (len(sep) == 1 || s[i:i+len(sep)] == sep) { if s[i] == c && (len(sep) == 1 || s[i:i+len(sep)] == sep) {
...@@ -84,7 +84,7 @@ export func join(a []string, sep string) string { ...@@ -84,7 +84,7 @@ export func join(a []string, sep string) string {
n += len(a[i]) n += len(a[i])
} }
b := new([]byte, n); b := make([]byte, n);
bp := 0; bp := 0;
for i := 0; i < len(a); i++ { for i := 0; i < len(a); i++ {
s := a[i]; s := a[i];
......
...@@ -20,9 +20,9 @@ func HammerSemaphore(s *int32, cdone chan bool) { ...@@ -20,9 +20,9 @@ func HammerSemaphore(s *int32, cdone chan bool) {
} }
export func TestSemaphore(t *testing.T) { export func TestSemaphore(t *testing.T) {
s := new(*int32); s := new(int32);
*s = 1; *s = 1;
c := new(chan bool); c := make(chan bool);
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
go HammerSemaphore(s, c); go HammerSemaphore(s, c);
} }
...@@ -41,8 +41,8 @@ func HammerMutex(m *Mutex, cdone chan bool) { ...@@ -41,8 +41,8 @@ func HammerMutex(m *Mutex, cdone chan bool) {
} }
export func TestMutex(t *testing.T) { export func TestMutex(t *testing.T) {
m := new(*Mutex); m := new(Mutex);
c := new(chan bool); c := make(chan bool);
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
go HammerMutex(m, c); go HammerMutex(m, c);
} }
......
...@@ -21,7 +21,7 @@ type ByteArray struct { ...@@ -21,7 +21,7 @@ type ByteArray struct {
func (b *ByteArray) Init(initial_size int) { func (b *ByteArray) Init(initial_size int) {
b.a = new([]byte, initial_size)[0 : 0]; b.a = make([]byte, initial_size)[0 : 0];
} }
...@@ -50,7 +50,7 @@ func (b *ByteArray) Append(s []byte) { ...@@ -50,7 +50,7 @@ func (b *ByteArray) Append(s []byte) {
if m > n2 { if m > n2 {
n2 = m; n2 = m;
} }
b := new([]byte, n2); b := make([]byte, n2);
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
b[i] = a[i]; b[i] = a[i];
} }
...@@ -446,5 +446,5 @@ func (b *Writer) Append(buf []byte) { ...@@ -446,5 +446,5 @@ func (b *Writer) Append(buf []byte) {
export func New(writer io.Write, cellwidth, padding int, padchar byte, align_left, filter_html bool) *Writer { export func New(writer io.Write, cellwidth, padding int, padchar byte, align_left, filter_html bool) *Writer {
return new(*Writer).Init(writer, cellwidth, padding, padchar, align_left, filter_html) return new(Writer).Init(writer, cellwidth, padding, padchar, align_left, filter_html)
} }
...@@ -18,7 +18,7 @@ type Buffer struct { ...@@ -18,7 +18,7 @@ type Buffer struct {
func (b *Buffer) Init(n int) { func (b *Buffer) Init(n int) {
b.a = new([]byte, n)[0 : 0]; b.a = make([]byte, n)[0 : 0];
} }
......
...@@ -92,8 +92,8 @@ export func Main(tests []Test) { ...@@ -92,8 +92,8 @@ export func Main(tests []Test) {
if chatty { if chatty {
println("=== RUN ", tests[i].name); println("=== RUN ", tests[i].name);
} }
t := new(*T); t := new(T);
t.ch = new(chan *T); t.ch = make(chan *T);
go TRunner(t, &tests[i]); go TRunner(t, &tests[i]);
<-t.ch; <-t.ch;
if t.failed { if t.failed {
......
...@@ -53,7 +53,7 @@ export func Tick(ns int64) chan int64 { ...@@ -53,7 +53,7 @@ export func Tick(ns int64) chan int64 {
if ns <= 0 { if ns <= 0 {
return nil return nil
} }
c := new(chan int64); c := make(chan int64);
go Ticker(ns, c); go Ticker(ns, c);
return c; return c;
} }
......
...@@ -71,7 +71,7 @@ const ( ...@@ -71,7 +71,7 @@ const (
) )
export func SecondsToUTC(sec int64) *Time { export func SecondsToUTC(sec int64) *Time {
t := new(*Time); t := new(Time);
// Split into time and day. // Split into time and day.
day := sec/SecondsPerDay; day := sec/SecondsPerDay;
...@@ -281,7 +281,7 @@ func AddString(buf []byte, bp int, s string) int { ...@@ -281,7 +281,7 @@ func AddString(buf []byte, bp int, s string) int {
// Just enough of strftime to implement the date formats below. // Just enough of strftime to implement the date formats below.
// Not exported. // Not exported.
func Format(t *Time, fmt string) string { func Format(t *Time, fmt string) string {
buf := new([]byte, 128); buf := make([]byte, 128);
bp := 0; bp := 0;
for i := 0; i < len(fmt); i++ { for i := 0; i < len(fmt); i++ {
......
...@@ -162,7 +162,7 @@ func ParseZoneinfo(bytes []byte) (zt []Zonetime, err *os.Error) { ...@@ -162,7 +162,7 @@ func ParseZoneinfo(bytes []byte) (zt []Zonetime, err *os.Error) {
// Now we can build up a useful data structure. // Now we can build up a useful data structure.
// First the zone information. // First the zone information.
// utcoff[4] isdst[1] nameindex[1] // utcoff[4] isdst[1] nameindex[1]
zone := new([]Zone, n[NZone]); zone := make([]Zone, n[NZone]);
for i := 0; i < len(zone); i++ { for i := 0; i < len(zone); i++ {
var ok bool; var ok bool;
var n uint32; var n uint32;
...@@ -182,7 +182,7 @@ func ParseZoneinfo(bytes []byte) (zt []Zonetime, err *os.Error) { ...@@ -182,7 +182,7 @@ func ParseZoneinfo(bytes []byte) (zt []Zonetime, err *os.Error) {
} }
// Now the transition time info. // Now the transition time info.
zt = new([]Zonetime, n[NTime]); zt = make([]Zonetime, n[NTime]);
for i := 0; i < len(zt); i++ { for i := 0; i < len(zt); i++ {
var ok bool; var ok bool;
var n uint32; var n uint32;
...@@ -209,7 +209,7 @@ func ReadFile(name string, max int) (p []byte, err *os.Error) { ...@@ -209,7 +209,7 @@ func ReadFile(name string, max int) (p []byte, err *os.Error) {
if e != nil { if e != nil {
return nil, e return nil, e
} }
p = new([]byte, max+1)[0:0]; p = make([]byte, max+1)[0:0];
n := 0; n := 0;
for len(p) < max { for len(p) < max {
nn, e := fd.Read(p[n:cap(p)]); nn, e := fd.Read(p[n:cap(p)]);
......
...@@ -52,11 +52,11 @@ time make ...@@ -52,11 +52,11 @@ time make
make smoketest make smoketest
) || exit $? ) || exit $?
(xcd ../usr/gri/gosrc # (xcd ../usr/gri/gosrc
make clean # make clean
time make # time make
# make test # # make test
) || exit $? # ) || exit $?
(xcd ../test (xcd ../test
./run ./run
......
...@@ -9,8 +9,8 @@ package main ...@@ -9,8 +9,8 @@ package main
type T chan uint64; type T chan uint64;
func M(f uint64) (in, out T) { func M(f uint64) (in, out T) {
in = new(T, 100); in = make(T, 100);
out = new(T, 100); out = make(T, 100);
go func(in, out T, f uint64) { go func(in, out T, f uint64) {
for { for {
out <- f * <-in; out <- f * <-in;
...@@ -44,9 +44,9 @@ func main() { ...@@ -44,9 +44,9 @@ func main() {
1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600 }; 1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600 };
x := uint64(1); x := uint64(1);
ins := new([]T, n); ins := make([]T, n);
outs := new([]T, n); outs := make([]T, n);
xs := new([]uint64, n); xs := make([]uint64, n);
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
ins[i], outs[i] = M(F[i]); ins[i], outs[i] = M(F[i]);
xs[i] = x; xs[i] = x;
......
...@@ -45,8 +45,8 @@ func SameArray(a, b []int) bool { ...@@ -45,8 +45,8 @@ func SameArray(a, b []int) bool {
} }
var t = T{1.5, 123, "hello", 255} var t = T{1.5, 123, "hello", 255}
var mt = new(map[int]T) var mt = make(map[int]T)
var ma = new(map[int][]int) var ma = make(map[int][]int)
func maptest() { func maptest() {
mt[0] = t; mt[0] = t;
...@@ -62,8 +62,8 @@ func maptest() { ...@@ -62,8 +62,8 @@ func maptest() {
} }
} }
var mt1 = new(map[T]int) var mt1 = make(map[T]int)
var ma1 = new(map[[]int] int) var ma1 = make(map[[]int] int)
func maptest2() { func maptest2() {
mt1[t] = 123; mt1[t] = 123;
...@@ -81,8 +81,8 @@ func maptest2() { ...@@ -81,8 +81,8 @@ func maptest2() {
} }
} }
var ct = new(chan T) var ct = make(chan T)
var ca = new(chan []int) var ca = make(chan []int)
func send() { func send() {
ct <- t; ct <- t;
...@@ -114,7 +114,7 @@ func interfacetest() { ...@@ -114,7 +114,7 @@ func interfacetest() {
if !SameArray(a, a1) { if !SameArray(a, a1) {
println("interface <-> []int", a, a1); println("interface <-> []int", a, a1);
} }
pa := new(*[]int); pa := new([]int);
*pa = a; *pa = a;
i = pa; i = pa;
a1 = *i.(*[]int); a1 = *i.(*[]int);
......
...@@ -21,5 +21,5 @@ func (s *S) g() {} ...@@ -21,5 +21,5 @@ func (s *S) g() {}
func (s *S) h() {} // here we can't write (s *S) T either func (s *S) h() {} // here we can't write (s *S) T either
func main() { func main() {
var i I = new(*S); var i I = new(S);
} }
...@@ -7,5 +7,5 @@ ...@@ -7,5 +7,5 @@
package main package main
func main() { func main() {
a := new([]int, 10, 20, 30, 40); // should allow at most 2 sizes a := make([]int, 10, 20, 30, 40); // should allow at most 2 sizes
} }
...@@ -14,7 +14,7 @@ func (p *S) send(c chan <- int) { c <- p.v } ...@@ -14,7 +14,7 @@ func (p *S) send(c chan <- int) { c <- p.v }
func main() { func main() {
s := S{0}; s := S{0};
var i I = &s; var i I = &s;
c := new(chan int); c := make(chan int);
go i.send(c); go i.send(c);
sys.exit(<-c); sys.exit(<-c);
} }
...@@ -11,7 +11,7 @@ package main ...@@ -11,7 +11,7 @@ package main
const N = 10 const N = 10
func AsynchFifo() { func AsynchFifo() {
ch := new(chan int, N); ch := make(chan int, N);
for i := 0; i < N; i++ { for i := 0; i < N; i++ {
ch <- i ch <- i
} }
...@@ -33,11 +33,11 @@ func Chain(ch <-chan int, val int, in <-chan int, out chan<- int) { ...@@ -33,11 +33,11 @@ func Chain(ch <-chan int, val int, in <-chan int, out chan<- int) {
// thread together a daisy chain to read the elements in sequence // thread together a daisy chain to read the elements in sequence
func SynchFifo() { func SynchFifo() {
ch := new(chan int); ch := make(chan int);
in := new(chan int); in := make(chan int);
start := in; start := in;
for i := 0; i < N; i++ { for i := 0; i < N; i++ {
out := new(chan int); out := make(chan int);
go Chain(ch, i, in, out); go Chain(ch, i, in, out);
in = out; in = out;
} }
......
...@@ -28,11 +28,11 @@ func main() { ...@@ -28,11 +28,11 @@ func main() {
sys.exit(1); sys.exit(1);
} }
} }
leftmost := new(chan int); leftmost := make(chan int);
right := leftmost; right := leftmost;
left := leftmost; left := leftmost;
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
right = new(chan int); right = make(chan int);
go f(left, right); go f(left, right);
left = right; left = right;
} }
......
...@@ -53,10 +53,10 @@ func main() { ...@@ -53,10 +53,10 @@ func main() {
var ok bool; var ok bool;
for buffer := 0; buffer < 2; buffer++ { for buffer := 0; buffer < 2; buffer++ {
c32 := new(chan int32, buffer); c32 := make(chan int32, buffer);
c64 := new(chan int64, buffer); c64 := make(chan int64, buffer);
cb := new(chan bool, buffer); cb := make(chan bool, buffer);
cs := new(chan string, buffer); cs := make(chan string, buffer);
i32, ok = <-c32; i32, ok = <-c32;
if ok { panic("blocked i32sender") } if ok { panic("blocked i32sender") }
......
...@@ -46,15 +46,15 @@ func Init(); ...@@ -46,15 +46,15 @@ func Init();
func mkdch() *dch { func mkdch() *dch {
c := chnameserial % len(chnames); c := chnameserial % len(chnames);
chnameserial++; chnameserial++;
d := new(*dch); d := new(dch);
d.req = new(chan int); d.req = make(chan int);
d.dat = new(chan item); d.dat = make(chan item);
d.nam = c; d.nam = c;
return d; return d;
} }
func mkdch2() *dch2 { func mkdch2() *dch2 {
d2 := new(*dch2); d2 := new(dch2);
d2[0] = mkdch(); d2[0] = mkdch();
d2[1] = mkdch(); d2[1] = mkdch();
return d2; return d2;
...@@ -93,7 +93,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){ ...@@ -93,7 +93,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){
seqno++; seqno++;
in.req <- seqno; in.req <- seqno;
release := new(chan int); release := make(chan int);
go dosplit(in, out, release); go dosplit(in, out, release);
dat := <-in.dat; dat := <-in.dat;
out[0].dat <- dat; out[0].dat <- dat;
...@@ -106,7 +106,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){ ...@@ -106,7 +106,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){
} }
func split(in *dch, out *dch2){ func split(in *dch, out *dch2){
release := new(chan int); release := make(chan int);
go dosplit(in, out, release); go dosplit(in, out, release);
release <- 0; release <- 0;
} }
...@@ -127,9 +127,9 @@ func get(in *dch) *rat { ...@@ -127,9 +127,9 @@ func get(in *dch) *rat {
func getn(in []*dch, n int) []item { func getn(in []*dch, n int) []item {
// BUG n:=len(in); // BUG n:=len(in);
if n != 2 { panic("bad n in getn") }; if n != 2 { panic("bad n in getn") };
req := new(*[2] chan int); req := new([2] chan int);
dat := new(*[2] chan item); dat := new([2] chan item);
out := new([]item, 2); out := make([]item, 2);
var i int; var i int;
var it item; var it item;
for i=0; i<n; i++ { for i=0; i<n; i++ {
...@@ -208,7 +208,7 @@ func gcd (u, v int64) int64{ ...@@ -208,7 +208,7 @@ func gcd (u, v int64) int64{
func i2tor(u, v int64) *rat{ func i2tor(u, v int64) *rat{
g := gcd(u,v); g := gcd(u,v);
r := new(*rat); r := new(rat);
if v > 0 { if v > 0 {
r.num = u/g; r.num = u/g;
r.den = v/g; r.den = v/g;
...@@ -246,7 +246,7 @@ func add(u, v *rat) *rat { ...@@ -246,7 +246,7 @@ func add(u, v *rat) *rat {
func mul(u, v *rat) *rat{ func mul(u, v *rat) *rat{
g1 := gcd(u.num,v.den); g1 := gcd(u.num,v.den);
g2 := gcd(u.den,v.num); g2 := gcd(u.den,v.num);
r := new(*rat); r := new(rat);
r.num =(u.num/g1)*(v.num/g2); r.num =(u.num/g1)*(v.num/g2);
r.den = (u.den/g2)*(v.den/g1); r.den = (u.den/g2)*(v.den/g1);
return r; return r;
...@@ -646,7 +646,7 @@ func main() { ...@@ -646,7 +646,7 @@ func main() {
check(Ones, one, 5, "Ones"); check(Ones, one, 5, "Ones");
check(Add(Ones, Ones), itor(2), 0, "Add Ones Ones"); // 1 1 1 1 1 check(Add(Ones, Ones), itor(2), 0, "Add Ones Ones"); // 1 1 1 1 1
check(Add(Ones, Twos), itor(3), 0, "Add Ones Twos"); // 3 3 3 3 3 check(Add(Ones, Twos), itor(3), 0, "Add Ones Twos"); // 3 3 3 3 3
a := new([] *rat, N); a := make([] *rat, N);
d := Diff(Ones); d := Diff(Ones);
// BUG: want array initializer // BUG: want array initializer
for i:=0; i < N; i++ { for i:=0; i < N; i++ {
......
...@@ -51,15 +51,15 @@ func Init(); ...@@ -51,15 +51,15 @@ func Init();
func mkdch() *dch { func mkdch() *dch {
c := chnameserial % len(chnames); c := chnameserial % len(chnames);
chnameserial++; chnameserial++;
d := new(*dch); d := new(dch);
d.req = new(chan int); d.req = make(chan int);
d.dat = new(chan item); d.dat = make(chan item);
d.nam = c; d.nam = c;
return d; return d;
} }
func mkdch2() *dch2 { func mkdch2() *dch2 {
d2 := new(*dch2); d2 := new(dch2);
d2[0] = mkdch(); d2[0] = mkdch();
d2[1] = mkdch(); d2[1] = mkdch();
return d2; return d2;
...@@ -98,7 +98,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){ ...@@ -98,7 +98,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){
seqno++; seqno++;
in.req <- seqno; in.req <- seqno;
release := new(chan int); release := make(chan int);
go dosplit(in, out, release); go dosplit(in, out, release);
dat := <-in.dat; dat := <-in.dat;
out[0].dat <- dat; out[0].dat <- dat;
...@@ -111,7 +111,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){ ...@@ -111,7 +111,7 @@ func dosplit(in *dch, out *dch2, wait chan int ){
} }
func split(in *dch, out *dch2){ func split(in *dch, out *dch2){
release := new(chan int); release := make(chan int);
go dosplit(in, out, release); go dosplit(in, out, release);
release <- 0; release <- 0;
} }
...@@ -132,9 +132,9 @@ func get(in *dch) *rat { ...@@ -132,9 +132,9 @@ func get(in *dch) *rat {
func getn(in []*dch, n int) []item { func getn(in []*dch, n int) []item {
// BUG n:=len(in); // BUG n:=len(in);
if n != 2 { panic("bad n in getn") }; if n != 2 { panic("bad n in getn") };
req := new([] chan int, 2); req := make([] chan int, 2);
dat := new([] chan item, 2); dat := make([] chan item, 2);
out := new([]item, 2); out := make([]item, 2);
var i int; var i int;
var it item; var it item;
for i=0; i<n; i++ { for i=0; i<n; i++ {
...@@ -213,7 +213,7 @@ func gcd (u, v int64) int64{ ...@@ -213,7 +213,7 @@ func gcd (u, v int64) int64{
func i2tor(u, v int64) *rat{ func i2tor(u, v int64) *rat{
g := gcd(u,v); g := gcd(u,v);
r := new(*rat); r := new(rat);
if v > 0 { if v > 0 {
r.num = u/g; r.num = u/g;
r.den = v/g; r.den = v/g;
...@@ -251,7 +251,7 @@ func add(u, v *rat) *rat { ...@@ -251,7 +251,7 @@ func add(u, v *rat) *rat {
func mul(u, v *rat) *rat{ func mul(u, v *rat) *rat{
g1 := gcd(u.num,v.den); g1 := gcd(u.num,v.den);
g2 := gcd(u.den,v.num); g2 := gcd(u.den,v.num);
r := new(*rat); r := new(rat);
r.num =(u.num/g1)*(v.num/g2); r.num =(u.num/g1)*(v.num/g2);
r.den = (u.den/g2)*(v.den/g1); r.den = (u.den/g2)*(v.den/g1);
return r; return r;
...@@ -651,7 +651,7 @@ func main() { ...@@ -651,7 +651,7 @@ func main() {
check(Ones, one, 5, "Ones"); check(Ones, one, 5, "Ones");
check(Add(Ones, Ones), itor(2), 0, "Add Ones Ones"); // 1 1 1 1 1 check(Add(Ones, Ones), itor(2), 0, "Add Ones Ones"); // 1 1 1 1 1
check(Add(Ones, Twos), itor(3), 0, "Add Ones Twos"); // 3 3 3 3 3 check(Add(Ones, Twos), itor(3), 0, "Add Ones Twos"); // 3 3 3 3 3
a := new([]*rat, N); a := make([]*rat, N);
d := Diff(Ones); d := Diff(Ones);
// BUG: want array initializer // BUG: want array initializer
for i:=0; i < N; i++ { for i:=0; i < N; i++ {
......
...@@ -34,8 +34,8 @@ func Send(a, b chan uint) int { ...@@ -34,8 +34,8 @@ func Send(a, b chan uint) int {
} }
func main() { func main() {
a := new(chan uint, 1); a := make(chan uint, 1);
b := new(chan uint, 1); b := make(chan uint, 1);
if v := Send(a, b); v != 2 { if v := Send(a, b); v != 2 {
panicln("Send returned", v, "!= 2"); panicln("Send returned", v, "!= 2");
} }
......
...@@ -29,19 +29,19 @@ func Filter(in <-chan int, out chan<- int, prime int) { ...@@ -29,19 +29,19 @@ func Filter(in <-chan int, out chan<- int, prime int) {
// The prime sieve: Daisy-chain Filter processes together. // The prime sieve: Daisy-chain Filter processes together.
func Sieve(primes chan<- int) { func Sieve(primes chan<- int) {
ch := new(chan int); // Create a new channel. ch := make(chan int); // Create a new channel.
go Generate(ch); // Start Generate() as a subprocess. go Generate(ch); // Start Generate() as a subprocess.
for { for {
prime := <-ch; prime := <-ch;
primes <- prime; primes <- prime;
ch1 := new(chan int); ch1 := make(chan int);
go Filter(ch, ch1, prime); go Filter(ch, ch1, prime);
ch = ch1 ch = ch1
} }
} }
func main() { func main() {
primes := new(chan int); primes := make(chan int);
go Sieve(primes); go Sieve(primes);
a := []int{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}; a := []int{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};
for i := 0; i < len(a); i++ { for i := 0; i < len(a); i++ {
......
...@@ -11,7 +11,7 @@ type T struct { i int; f float; s string; next *T } ...@@ -11,7 +11,7 @@ type T struct { i int; f float; s string; next *T }
type R struct { num int } type R struct { num int }
func itor(a int) *R { func itor(a int) *R {
r := new(*R); r := new(R);
r.num = a; r.num = a;
return r; return r;
} }
...@@ -48,7 +48,7 @@ func main() { ...@@ -48,7 +48,7 @@ func main() {
at := []*T{&t, &t, &t}; at := []*T{&t, &t, &t};
if len(at) != 3 { panic("at") } if len(at) != 3 { panic("at") }
c := new(chan int); c := make(chan int);
ac := []chan int{c, c, c}; ac := []chan int{c, c, c};
if len(ac) != 3 { panic("ac") } if len(ac) != 3 { panic("ac") }
......
...@@ -16,7 +16,7 @@ func (t *T) m(a int, b float) int { ...@@ -16,7 +16,7 @@ func (t *T) m(a int, b float) int {
} }
func main() { func main() {
var t *T = new(*T); var t *T = new(T);
t.x = 1; t.x = 1;
t.y = 2; t.y = 2;
r10 := t.m(1, 3.0); r10 := t.m(1, 3.0);
......
...@@ -18,8 +18,8 @@ func (v *Vector) Insert(i int, e Element) { ...@@ -18,8 +18,8 @@ func (v *Vector) Insert(i int, e Element) {
func main() { func main() {
type I struct { val int; }; // BUG: can't be local; works if global type I struct { val int; }; // BUG: can't be local; works if global
v := new(*Vector); v := new(Vector);
v.Insert(0, new(*I)); v.Insert(0, new(I));
} }
/* /*
check: main_sigs_I: not defined check: main_sigs_I: not defined
......
...@@ -15,9 +15,9 @@ type Vector struct { ...@@ -15,9 +15,9 @@ type Vector struct {
} }
func New() *Vector { func New() *Vector {
v := new(*Vector); v := new(Vector);
v.nelem = 0; v.nelem = 0;
v.elem = new([]Element, 10); v.elem = make([]Element, 10);
return v; return v;
} }
...@@ -32,11 +32,11 @@ func (v *Vector) Insert(e Element) { ...@@ -32,11 +32,11 @@ func (v *Vector) Insert(e Element) {
func main() { func main() {
type I struct { val int; }; type I struct { val int; };
i0 := new(*I); i0.val = 0; i0 := new(I); i0.val = 0;
i1 := new(*I); i1.val = 11; i1 := new(I); i1.val = 11;
i2 := new(*I); i2.val = 222; i2 := new(I); i2.val = 222;
i3 := new(*I); i3.val = 3333; i3 := new(I); i3.val = 3333;
i4 := new(*I); i4.val = 44444; i4 := new(I); i4.val = 44444;
v := New(); v := New();
print("hi\n"); print("hi\n");
v.Insert(i4); v.Insert(i4);
......
...@@ -9,5 +9,5 @@ package main ...@@ -9,5 +9,5 @@ package main
func main() { func main() {
var z [3]byte; var z [3]byte;
z := new(*[3]byte); // BUG redeclaration z := new([3]byte); // BUG redeclaration
} }
...@@ -13,7 +13,7 @@ type T struct { ...@@ -13,7 +13,7 @@ type T struct {
func main() { func main() {
var ta []*T; var ta []*T;
ta = *new(*[1]*T); // TODO: the first * shouldn't be necessary ta = *new([1]*T); // TODO: the first * shouldn't be necessary
ta[0] = nil; ta[0] = nil;
} }
/* /*
......
...@@ -30,12 +30,12 @@ func (s *TStruct) field(i int) *TStruct { ...@@ -30,12 +30,12 @@ func (s *TStruct) field(i int) *TStruct {
} }
func main() { func main() {
v := new(*Vector); v := new(Vector);
v.elem = new([]Element, 10); v.elem = make([]Element, 10);
t := new(*TStruct); t := new(TStruct);
t.name = "hi"; t.name = "hi";
v.elem[0] = t; v.elem[0] = t;
s := new(*TStruct); s := new(TStruct);
s.name = "foo"; s.name = "foo";
s.fields = v; s.fields = v;
if s.field(0).name != "hi" { if s.field(0).name != "hi" {
......
...@@ -10,7 +10,7 @@ type Box struct {}; ...@@ -10,7 +10,7 @@ type Box struct {};
var m map[string] *Box; var m map[string] *Box;
func main() { func main() {
m := new(map[string] *Box); m := make(map[string] *Box);
s := "foo"; s := "foo";
var x *Box = nil; var x *Box = nil;
m[s] = x; m[s] = x;
......
...@@ -19,11 +19,11 @@ func P(a []string) string { ...@@ -19,11 +19,11 @@ func P(a []string) string {
} }
func main() { func main() {
m := new(map[string] []string); m := make(map[string] []string);
as := new([2]string); as := new([2]string);
as[0] = "0"; as[0] = "0";
as[1] = "1"; as[1] = "1";
m["0"] = as; m["0"] = *as;
a := m["0"]; a := m["0"];
a[0] = "x"; a[0] = "x";
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
package main package main
func main() { func main() {
m := new(map[int]int); m := make(map[int]int);
m[0] = 0; m[0] = 0;
m[0]++; m[0]++;
if m[0] != 1 { if m[0] != 1 {
......
...@@ -9,7 +9,7 @@ package main ...@@ -9,7 +9,7 @@ package main
var c chan int var c chan int
func main() { func main() {
c = new(chan int); c = make(chan int);
go func() { print("ok\n"); c <- 0 } (); go func() { print("ok\n"); c <- 0 } ();
<-c <-c
} }
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
package main package main
func main(){ func main(){
c := new(chan int); c := make(chan int);
ok := false; ok := false;
i := 0; i := 0;
i, ok = <-c; // works i, ok = <-c; // works
ca := new(*[2]chan int); ca := new([2]chan int);
i, ok = <-(ca[0]); // fails: c.go:11: bad shape across assignment - cr=1 cl=2 i, ok = <-(ca[0]); // fails: c.go:11: bad shape across assignment - cr=1 cl=2
} }
...@@ -8,8 +8,8 @@ package main ...@@ -8,8 +8,8 @@ package main
type T struct { m map[int]int } type T struct { m map[int]int }
func main() { func main() {
t := new(*T); t := new(T);
t.m = new(map[int]int); t.m = make(map[int]int);
var x int; var x int;
var ok bool; var ok bool;
x, ok = t.m[0]; //bug075.go:11: bad shape across assignment - cr=1 cl=2 x, ok = t.m[0]; //bug075.go:11: bad shape across assignment - cr=1 cl=2
......
...@@ -17,7 +17,7 @@ func (s *Service) Serve(a int64) { ...@@ -17,7 +17,7 @@ func (s *Service) Serve(a int64) {
var arith Service var arith Service
func main() { func main() {
c := new(chan string); c := make(chan string);
a := new(*Service); a := new(Service);
go a.Serve(1234); go a.Serve(1234);
} }
...@@ -18,7 +18,7 @@ func (s *S) F() int { return 1 } ...@@ -18,7 +18,7 @@ func (s *S) F() int { return 1 }
// if you take it out (and the 0s below) // if you take it out (and the 0s below)
// then the bug goes away. // then the bug goes away.
func NewI(i int) I { func NewI(i int) I {
return new(*S) return new(S)
} }
// Uses interface method. // Uses interface method.
......
...@@ -16,7 +16,7 @@ func main() { ...@@ -16,7 +16,7 @@ func main() {
if string(b1) != "hello" { if string(b1) != "hello" {
panic("bad convert 1") panic("bad convert 1")
} }
var b2 = new([]byte, 5); var b2 = make([]byte, 5);
for i := 0; i < 5; i++ { b2[i] = b1[i] } for i := 0; i < 5; i++ { b2[i] = b1[i] }
if string(b2) != "hello" { if string(b2) != "hello" {
panic("bad convert 2") panic("bad convert 2")
......
...@@ -22,7 +22,7 @@ func (s *Stucky) Me() Iffy { ...@@ -22,7 +22,7 @@ func (s *Stucky) Me() Iffy {
} }
func main() { func main() {
s := new(*Stucky); s := new(Stucky);
i := s.Me(); i := s.Me();
j := i.Me(); j := i.Me();
j.Me(); j.Me();
......
...@@ -81,7 +81,7 @@ func main() { ...@@ -81,7 +81,7 @@ func main() {
r9, s9 := f9(1); r9, s9 := f9(1);
assertequal(r9, 9, "r9"); assertequal(r9, 9, "r9");
assertequal(int(s9), 9, "s9"); assertequal(int(s9), 9, "s9");
var t *T = new(*T); var t *T = new(T);
t.x = 1; t.x = 1;
t.y = 2; t.y = 2;
r10 := t.m10(1, 3.0); r10 := t.m10(1, 3.0);
......
...@@ -111,12 +111,6 @@ bugs/bug087.go:8: illegal combination of literals LEN 9 ...@@ -111,12 +111,6 @@ bugs/bug087.go:8: illegal combination of literals LEN 9
bugs/bug087.go:8: illegal combination of literals LEN 9 bugs/bug087.go:8: illegal combination of literals LEN 9
BUG: fails incorrectly BUG: fails incorrectly
=========== bugs/bug098.go
bugs/bug098.go:10: illegal types for operand: AS
*M
**M
BUG should compile
=========== bugs/bug105.go =========== bugs/bug105.go
bugs/bug105.go:8: P: undefined bugs/bug105.go:8: P: undefined
bugs/bug105.go:8: illegal types for operand: RETURN bugs/bug105.go:8: illegal types for operand: RETURN
......
...@@ -64,7 +64,7 @@ func (m *HashMap) Clear() { ...@@ -64,7 +64,7 @@ func (m *HashMap) Clear() {
func (m *HashMap) Initialize (initial_log2_capacity uint32) { func (m *HashMap) Initialize (initial_log2_capacity uint32) {
m.log2_capacity_ = initial_log2_capacity; m.log2_capacity_ = initial_log2_capacity;
m.map_ = new(*[1024] Entry); m.map_ = new([1024] Entry);
m.Clear(); m.Clear();
} }
...@@ -157,7 +157,7 @@ func (n *Number) Match(other *KeyType) bool { ...@@ -157,7 +157,7 @@ func (n *Number) Match(other *KeyType) bool {
func MakeNumber (x uint32) *Number { func MakeNumber (x uint32) *Number {
var n *Number = new(*Number); var n *Number = new(Number);
n.x = x; n.x = x;
return n; return n;
} }
...@@ -168,7 +168,7 @@ func main() { ...@@ -168,7 +168,7 @@ func main() {
//print "HashMap - gri 2/8/2008\n"; //print "HashMap - gri 2/8/2008\n";
var hmap *HashMap = new(*HashMap); var hmap *HashMap = new(HashMap);
hmap.Initialize(0); hmap.Initialize(0);
var x1 *Number = MakeNumber(1001); var x1 *Number = MakeNumber(1001);
......
...@@ -47,10 +47,10 @@ func (a *Matrix) set(i, j int, x *Big.Rational) { ...@@ -47,10 +47,10 @@ func (a *Matrix) set(i, j int, x *Big.Rational) {
func NewMatrix(n, m int) *Matrix { func NewMatrix(n, m int) *Matrix {
assert(0 <= n && 0 <= m); assert(0 <= n && 0 <= m);
a := new(*Matrix); a := new(Matrix);
a.n = n; a.n = n;
a.m = m; a.m = m;
a.a = new([]*Big.Rational, n*m); a.a = make([]*Big.Rational, n*m);
return a; return a;
} }
......
...@@ -28,8 +28,8 @@ func AddInst(Inst) *Inst { ...@@ -28,8 +28,8 @@ func AddInst(Inst) *Inst {
} }
func main() { func main() {
re := new(*Regexp); re := new(Regexp);
print("call addinst\n"); print("call addinst\n");
var x Inst = AddInst(new(*Start)); // ERROR "illegal|incompatible" var x Inst = AddInst(new(Start)); // ERROR "illegal|incompatible"
print("return from addinst\n"); print("return from addinst\n");
} }
...@@ -66,7 +66,7 @@ res(t int, lb, hb int) ...@@ -66,7 +66,7 @@ res(t int, lb, hb int)
func func
testpdpd() testpdpd()
{ {
a := new([]int, 10, 100); a := make([]int, 10, 100);
if len(a) != 10 && cap(a) != 100 { if len(a) != 10 && cap(a) != 100 {
panic("len and cap from new: ", len(a), " ", cap(a), "\n"); panic("len and cap from new: ", len(a), " ", cap(a), "\n");
} }
...@@ -95,7 +95,7 @@ testpfpf() ...@@ -95,7 +95,7 @@ testpfpf()
func func
testpdpf1() testpdpf1()
{ {
a := new(*[40]int); a := new([40]int);
setpd(*a); setpd(*a);
res(sumpd(*a), 0, 40); res(sumpd(*a), 0, 40);
...@@ -117,7 +117,7 @@ testpdpf2() ...@@ -117,7 +117,7 @@ testpdpf2()
func func
testpdfault() testpdfault()
{ {
a := new([]int, 100); a := make([]int, 100);
print("good\n"); print("good\n");
for i:=0; i<100; i++ { for i:=0; i<100; i++ {
......
...@@ -38,17 +38,17 @@ var ...@@ -38,17 +38,17 @@ var
func func
init() init()
{ {
nc = new(*Chan); nc = new(Chan);
} }
func func
mkchan(c,n int) []*Chan mkchan(c,n int) []*Chan
{ {
ca := new([]*Chan, n); ca := make([]*Chan, n);
for i:=0; i<n; i++ { for i:=0; i<n; i++ {
cval = cval+100; cval = cval+100;
ch := new(*Chan); ch := new(Chan);
ch.sc = new(chan int, c); ch.sc = make(chan int, c);
ch.rc = ch.sc; ch.rc = ch.sc;
ch.sv = cval; ch.sv = cval;
ch.rv = cval; ch.rv = cval;
......
...@@ -166,10 +166,10 @@ main() ...@@ -166,10 +166,10 @@ main()
var s *S; var s *S;
// allocate // allocate
s = new(*S); s = new(S);
s.Subp = new(*Subp); s.Subp = new(Subp);
s.Sub.SubSubp = new(*SubSubp); s.Sub.SubSubp = new(SubSubp);
s.Subp.SubpSubp = new(*SubpSubp); s.Subp.SubpSubp = new(SubpSubp);
// explicit assignment // explicit assignment
s.a = 1; s.a = 1;
......
...@@ -40,7 +40,7 @@ main() ...@@ -40,7 +40,7 @@ main()
var i2 I2; var i2 I2;
var g *S; var g *S;
s := new(*S); s := new(S);
s.a = 5; s.a = 5;
s.b = 6; s.b = 6;
......
...@@ -58,9 +58,9 @@ puts(s string) ...@@ -58,9 +58,9 @@ puts(s string)
func func
main() main()
{ {
p := new(*Print); p := new(Print);
b := new(*Bio); b := new(Bio);
f := new(*File); f := new(File);
p.whoami = 1; p.whoami = 1;
p.put = b; p.put = b;
......
...@@ -27,7 +27,7 @@ main() ...@@ -27,7 +27,7 @@ main()
var v int; var v int;
var c *C; var c *C;
c = new(*C); c = new(C);
c.a = 6; c.a = 6;
c.x = &g; c.x = &g;
......
...@@ -21,8 +21,8 @@ f(k int) byte ...@@ -21,8 +21,8 @@ f(k int) byte
func func
init() init()
{ {
p = new([]byte, size); p = make([]byte, size);
m = new(map[int]byte); m = make(map[int]byte);
for k:=0; k<size; k++ { for k:=0; k<size; k++ {
v := f(k); v := f(k);
a[k] = v; a[k] = v;
......
...@@ -31,7 +31,7 @@ Init() ...@@ -31,7 +31,7 @@ Init()
func (list *List) func (list *List)
Insert(i Item) Insert(i Item)
{ {
item := new(*ListItem); item := new(ListItem);
item.item = i; item.item = i;
item.next = list.head; item.next = list.head;
list.head = item; list.head = item;
...@@ -69,10 +69,10 @@ Print() ...@@ -69,10 +69,10 @@ Print()
func func
main() main()
{ {
list := new(*List); list := new(List);
list.Init(); list.Init();
for i := 0; i < 10; i = i + 1 { for i := 0; i < 10; i = i + 1 {
integer := new(*Integer); integer := new(Integer);
integer.Init(i); integer.Init(i);
list.Insert(integer); list.Insert(integer);
} }
......
...@@ -213,7 +213,7 @@ func ParseList() *Slist ...@@ -213,7 +213,7 @@ func ParseList() *Slist
{ {
var slist, retval *Slist; var slist, retval *Slist;
slist = new(*Slist); slist = new(Slist);
slist.list.car = nil; slist.list.car = nil;
slist.list.cdr = nil; slist.list.cdr = nil;
slist.isatom = false; slist.isatom = false;
...@@ -225,7 +225,7 @@ func ParseList() *Slist ...@@ -225,7 +225,7 @@ func ParseList() *Slist
if token == ')' || token == EOF { // empty cdr if token == ')' || token == EOF { // empty cdr
break; break;
} }
slist.list.cdr = new(*Slist); slist.list.cdr = new(Slist);
slist = slist.list.cdr; slist = slist.list.cdr;
} }
return retval; return retval;
...@@ -236,7 +236,7 @@ func atom(i int) *Slist // BUG: uses tokenbuf; should take argument ...@@ -236,7 +236,7 @@ func atom(i int) *Slist // BUG: uses tokenbuf; should take argument
var h, length int; var h, length int;
var slist, tail *Slist; var slist, tail *Slist;
slist = new(*Slist); slist = new(Slist);
if token == '0' { if token == '0' {
slist.atom.integer = i; slist.atom.integer = i;
slist.isstring = false; slist.isstring = false;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment