add a match arena to regexp to avoid generating garbage.
simple regexps run 20x faster.
the regex-dna benchmark goes 3x faster.

R=rsc
CC=golang-dev
https://golang.org/cl/156108
diff --git a/src/pkg/regexp/all_test.go b/src/pkg/regexp/all_test.go
index 5223248..fb6f3a0 100644
--- a/src/pkg/regexp/all_test.go
+++ b/src/pkg/regexp/all_test.go
@@ -60,6 +60,7 @@
 }
 
 var matches = []tester{
+	tester{`^abcdefg`, "abcdefg", vec{0, 7}},
 	tester{`a+`, "baaab", vec{1, 4}},
 	tester{"abcd..", "abcdef", vec{0, 6}},
 	tester{``, "", vec{0, 0}},
@@ -450,3 +451,29 @@
 		}
 	}
 }
+
+func BenchmarkLiteral(b *testing.B) {
+	x := strings.Repeat("x", 50);
+	b.StopTimer();
+	re, _ := Compile(x);
+	b.StartTimer();
+	for i := 0; i < b.N; i++ {
+		if !re.MatchString(x) {
+			println("no match!");
+			break;
+		}
+	}
+}
+
+func BenchmarkNotLiteral(b *testing.B) {
+	x := strings.Repeat("x", 49);
+	b.StopTimer();
+	re, _ := Compile("^" + x);
+	b.StartTimer();
+	for i := 0; i < b.N; i++ {
+		if !re.MatchString(x) {
+			println("no match!");
+			break;
+		}
+	}
+}