changeset 889:b3da1b510a19

div. memory management
author thomask
date Mon, 06 Mar 2006 08:01:27 +0000
parents a995eae8e75c
children 0a283929df11
files nocompile/d/delete_13_A.d run/d/delete_12_A.d run/d/delete_12_B.d run/d/delete_12_C.d run/d/delete_12_D.d run/d/delete_13_B.d run/n/new_04_B.d run/new_04.d run/new_06.d run/new_07.d run/new_08.d run/new_09.d run/new_10.d run/new_11.d run/new_12.d run/new_13.d
diffstat 16 files changed, 138 insertions(+), 82 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/d/delete_13_A.d	Mon Mar 06 08:01:27 2006 +0000
@@ -0,0 +1,14 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// Porting: C++
+
+// __DSTRESS_ELINE__ 13
+
+module dstess.nocompile.d.delete_13_A;
+
+void main(){
+	int* i = new int[3];
+	delete[] i;
+}
--- a/run/d/delete_12_A.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/d/delete_12_A.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,25 +6,16 @@
 // @date@	2006-02-15
 // @uri@	news:dsv036$qlt$1@digitaldaemon.com
 
-// @WARNING@	direct use of Phobos
-
 module dstress.run.d.delete_12_A;
 
-import std.c.stdlib;
-import std.outofmemory;
-
 int status;
 
 class Foo{
 	new(size_t sz){
 		void* p;
 
-		p = malloc(sz);
+		p = (new byte[sz]).ptr;
     
-		if (!p){
-			throw new OutOfMemoryException();
-		}
-		
 		if(status++ != 1){
 			assert(0);
 		}
--- a/run/d/delete_12_B.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/d/delete_12_B.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,13 +6,8 @@
 // @date@	2006-02-15
 // @uri@	news:dsv036$qlt$1@digitaldaemon.com
 
-// @WARNING@	direct use of Phobos
-
 module dstress.run.d.delete_12_B;
 
-import std.c.stdlib;
-import std.outofmemory;
-
 int status;
 
 class Foo{
@@ -21,12 +16,8 @@
 	new(size_t sz){
 		void* p;
 
-		p = malloc(sz);
+		p = (new byte[sz]).ptr;
     
-		if (!p){
-			throw new OutOfMemoryException();
-		}
-		
 		if(status++ != 1){
 			assert(0);
 		}
--- a/run/d/delete_12_C.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/d/delete_12_C.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,14 +6,8 @@
 // @date@	2006-02-15
 // @uri@	news:dsv036$qlt$1@digitaldaemon.com
 
-// @WARNING@	direct use of Phobos
-
 module dstress.run.d.delete_12_C;
 
-import std.c.stdlib;
-import std.outofmemory;
-import std.gc;
-
 int status;
 
 class Foo{
@@ -22,12 +16,8 @@
 	new(size_t sz){
 		void* p;
 
-		p = malloc(sz);
+		p = (new byte[sz]).ptr;
     
-		if (!p){
-			throw new OutOfMemoryException();
-		}
-		
 		if(status++ != 1){
 			assert(0);
 		}
--- a/run/d/delete_12_D.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/d/delete_12_D.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,14 +6,8 @@
 // @date@	2006-02-15
 // @uri@	news:dsv036$qlt$1@digitaldaemon.com
 
-// @WARNING@	direct use of Phobos
-
 module dstress.run.d.delete_12_D;
 
-import std.c.stdlib;
-import std.outofmemory;
-import std.gc;
-
 int status;
 
 class Foo{
@@ -22,11 +16,7 @@
 	new(size_t sz){
 		void* p;
 
-		p = malloc(sz);
-    
-		if (!p){
-			throw new OutOfMemoryException();
-		}
+		p = (new byte[sz]).ptr;
 		
 		if(status++ != 1){
 			assert(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/d/delete_13_B.d	Mon Mar 06 08:01:27 2006 +0000
@@ -0,0 +1,11 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstess.run.d.delete_13_B;
+
+int main(){
+	int* i = new int[3];
+	delete i;
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/n/new_04_B.d	Mon Mar 06 08:01:27 2006 +0000
@@ -0,0 +1,55 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.n.new_04_B;
+
+char[] status;
+int count;
+
+struct S{
+	int dummy;
+
+	new (size_t i, char[] msg){
+		status = msg;
+		count++;
+
+		return (new ubyte[i]).ptr;
+	}
+}
+
+int main(){
+	if(status.length != 0){
+		assert(0);
+	}
+
+	S s;
+	
+	if(status.length != 0){
+		assert(0);
+	}
+
+	if(count != 0){
+		assert(0);
+	}
+
+	if(&s is null){
+		assert(0);
+	}
+
+	S* p = new("abc") S;
+
+	if(status != "abc"){
+		assert(0);
+	}
+
+	if(count != 1){
+		assert(0);
+	}
+	
+	if(p is null){
+		assert(0);
+	}
+
+	return 0;
+}
--- a/run/new_04.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_04.d	Mon Mar 06 08:01:27 2006 +0000
@@ -4,30 +4,60 @@
 
 module dstress.run.new_04;
 
-extern(C) void* malloc(size_t);
+char[] status;
+int count;
 
-byte a;
-
-class MyClass{
+class C{
 	byte b;
 
 	this(byte c){
-		b=c;
+		b = c;
 	}
 
-	new(size_t size, byte blah){
-		void* v=malloc(size);
-		if(v is null){
-			throw new Exception(null);
-		}
-		a=blah;
-		return v;
+	new (size_t i, char[] msg){
+		status = msg;
+		count++;
+
+		return (new ubyte[i]).ptr;
 	}
 }
 
 int main(){
-	MyClass m = new(21) MyClass(12);
-	assert(m.b==12);
-	assert(a==21);
+	if(status.length != 0){
+		assert(0);
+	}
+
+	C c;
+	
+	if(status.length != 0){
+		assert(0);
+	}
+
+	if(count != 0){
+		assert(0);
+	}
+
+	if(c !is null){
+		assert(0);
+	}
+
+	c = new("abc") C(-4);
+
+	if(status != "abc"){
+		assert(0);
+	}
+
+	if(count != 1){
+		assert(0);
+	}
+	
+	if(c is null){
+		assert(0);
+	}
+
+	if(c.b != -4){
+		assert(0);
+	}
+
 	return 0;
 }
--- a/run/new_06.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_06.d	Mon Mar 06 08:01:27 2006 +0000
@@ -4,14 +4,12 @@
 
 module dstress.run.new_06;
 
-extern(C)  void *malloc(size_t size);
-
 int counter;
 
 class MyClass{
 	new(size_t size){
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}
 }
 
--- a/run/new_07.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_07.d	Mon Mar 06 08:01:27 2006 +0000
@@ -4,14 +4,12 @@
 
 module dstress.run.new_07;
 
-extern(C)  void *malloc(size_t size);
-
 int counter;
 
 class Parent{
 	new(size_t size){
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}
 }
 
--- a/run/new_08.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_08.d	Mon Mar 06 08:01:27 2006 +0000
@@ -4,22 +4,20 @@
 
 module dstress.run.new_08;
 
-extern(C)  void *malloc(size_t size);
-
 int counter;
 int counter2;
 
 class Parent{
 	new(size_t size){
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}
 }
 
 class Child : Parent{
 	new(size_t size){
 		counter2++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}
 }
 
--- a/run/new_09.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_09.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,8 +6,6 @@
 
 int counter;
 
-extern(C) void* malloc(size_t size);
-
 class MyClass{
 	this(){
 		assert(counter==1);
@@ -17,7 +15,7 @@
 	new(size_t size){
 		assert(counter==0);
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}			
 }
 
--- a/run/new_10.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_10.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,8 +6,6 @@
 
 int counter;
 
-extern(C) void* malloc(size_t size);
-
 class MyClass{
 	this(){
 		assert(counter==0);
@@ -15,7 +13,7 @@
 	}
 
 	new(size_t size){
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}			
 }
 
--- a/run/new_11.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_11.d	Mon Mar 06 08:01:27 2006 +0000
@@ -6,8 +6,6 @@
 
 int counter;
 
-extern(C) void* malloc(size_t size);
-
 class MyClass{
 	this(){
 	}
@@ -15,7 +13,7 @@
 	new(size_t size){
 		assert(counter==0);
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}			
 }
 
--- a/run/new_12.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_12.d	Mon Mar 06 08:01:27 2006 +0000
@@ -4,8 +4,6 @@
 
 module dstress.run.new_12;
 
-extern(C) void* malloc(size_t size);
-
 int counter;
 
 struct MyStruct{
@@ -13,7 +11,7 @@
 
 	new(size_t size){
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}
 }
 
--- a/run/new_13.d	Sun Mar 05 21:57:33 2006 +0000
+++ b/run/new_13.d	Mon Mar 06 08:01:27 2006 +0000
@@ -4,8 +4,6 @@
 
 module dstress.run.new_13;
 
-extern(C) void* malloc(size_t size);
-
 int counter;
 
 union MyUnion{
@@ -13,7 +11,7 @@
 
 	new(size_t size){
 		counter++;
-		return malloc(size);
+		return (new byte[size]).ptr;
 	}
 }