mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 05:00:16 +03:00
Get rid of DMC workaround for the dll_cxx dshell test
This commit is contained in:
parent
01c9c22f3f
commit
0127c72cb8
3 changed files with 2 additions and 70 deletions
|
@ -53,7 +53,7 @@ int main()
|
|||
// The arguments have to be passed as an array, because run would replace '/' with '\\' otherwise.
|
||||
run(dllCmd);
|
||||
|
||||
run(`$DMD -m$MODEL -I$SRC -g -od=$OUTPUT_BASE -of=$EXE_NAME $SRC/testdll.d $SRC/cppnew.d ` ~ mainExtra);
|
||||
run(`$DMD -m$MODEL -g -od=$OUTPUT_BASE -of=$EXE_NAME $SRC/testdll.d ` ~ mainExtra);
|
||||
|
||||
run(`$EXE_NAME`, stdout, stderr, [`LD_LIBRARY_PATH`: Vars.OUTPUT_BASE]);
|
||||
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
module cppnew;
|
||||
|
||||
/* This module contains copies from core.stdcpp.new_.d, but with
|
||||
* modifications for DMC. */
|
||||
|
||||
T* cpp_new(T, Args...)(auto ref Args args) if (!is(T == class))
|
||||
{
|
||||
import core.lifetime : emplace, forward;
|
||||
|
||||
T* mem = cast(T*)__cpp_new(T.sizeof);
|
||||
return mem.emplace(forward!args);
|
||||
}
|
||||
|
||||
T cpp_new(T, Args...)(auto ref Args args) if (is(T == class))
|
||||
{
|
||||
import core.lifetime : emplace, forward;
|
||||
|
||||
T mem = cast(T)__cpp_new(__traits(classInstanceSize, T));
|
||||
return mem.emplace(forward!args);
|
||||
}
|
||||
|
||||
void cpp_delete(T)(T* ptr) if (!is(T == class))
|
||||
{
|
||||
destroy!false(*ptr);
|
||||
__cpp_delete(ptr);
|
||||
}
|
||||
|
||||
void cpp_delete(T)(T instance) if (is(T == class))
|
||||
{
|
||||
destroy!false(instance);
|
||||
__cpp_delete(cast(void*) instance);
|
||||
}
|
||||
|
||||
/// Binding for ::operator new(std::size_t count)
|
||||
pragma(mangle, __new_mangle)
|
||||
extern(C++) void* __cpp_new(size_t count);
|
||||
|
||||
/// Binding for ::operator delete(void* ptr)
|
||||
pragma(mangle, __delete_mangle)
|
||||
extern(C++) void __cpp_delete(void* ptr);
|
||||
|
||||
// we have to hard-code the mangling for the global new/delete operators
|
||||
version (CppRuntime_Microsoft)
|
||||
{
|
||||
version (D_LP64)
|
||||
{
|
||||
enum __new_mangle = "??2@YAPEAX_K@Z";
|
||||
enum __delete_mangle = "??3@YAXPEAX@Z";
|
||||
}
|
||||
else
|
||||
{
|
||||
enum __new_mangle = "??2@YAPAXI@Z";
|
||||
enum __delete_mangle = "??3@YAXPAX@Z";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
version (D_LP64)
|
||||
{
|
||||
enum __new_mangle = "_Znwm";
|
||||
enum __delete_mangle = "_ZdlPv";
|
||||
}
|
||||
else
|
||||
{
|
||||
enum __new_mangle = "_Znwj";
|
||||
enum __delete_mangle = "_ZdlPv";
|
||||
}
|
||||
}
|
|
@ -24,7 +24,7 @@ extern(C++) struct S22323
|
|||
|
||||
void test22323()
|
||||
{
|
||||
import cppnew;
|
||||
import core.stdcpp.new_;
|
||||
|
||||
assert(C22323.ctorCount == 0);
|
||||
assert(C22323.dtorCount == 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue