Mercurial > projects > dstress
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; } }