Skip to content

Commit

Permalink
Split interfaces to the glue layer and backend into different files
Browse files Browse the repository at this point in the history
  • Loading branch information
yebblies committed Oct 11, 2015
1 parent d2c607f commit be9c324
Show file tree
Hide file tree
Showing 21 changed files with 166 additions and 127 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -3,6 +3,7 @@
src/cdxxx.c
src/debtab.c
src/dmd
src/dmd_frontend
src/ddmd
src/dmd.conf
src/elxxx.c
Expand All @@ -18,6 +19,7 @@ test/test_results
*.obj
src/idgen.exe
src/dmd.exe
src/dmd_frontend.exe
src/optabgen.exe
src/verstr.h
*.map
Expand Down
2 changes: 1 addition & 1 deletion src/aggregate.d
Expand Up @@ -11,7 +11,7 @@ module ddmd.aggregate;
import core.stdc.stdio;
import ddmd.access;
import ddmd.arraytypes;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.clone;
import ddmd.dclass;
import ddmd.declaration;
Expand Down
2 changes: 1 addition & 1 deletion src/arraytypes.d
Expand Up @@ -9,7 +9,7 @@
module ddmd.arraytypes;

import ddmd.aggregate;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.dclass;
import ddmd.declaration;
import ddmd.dmodule;
Expand Down
19 changes: 0 additions & 19 deletions src/backend.d
Expand Up @@ -8,33 +8,14 @@

module ddmd.backend;

import ddmd.aggregate;
import ddmd.dmodule;
import ddmd.dscope;
import ddmd.expression;
import ddmd.lib;
import ddmd.mtype;
import ddmd.root.file;

struct Symbol;
struct code;
struct block;
struct Blockx;
struct elem;

extern extern (C++) void backend_init();
extern extern (C++) void backend_term();
extern extern (C++) void obj_start(char* srcfile);
extern extern (C++) void obj_end(Library library, File* objfile);
extern extern (C++) void obj_write_deferred(Library library);

extern extern (C++) void genObjFile(Module m, bool multiobj);

extern extern (C++) Symbol* toInitializer(AggregateDeclaration sd);

// type.h


alias tym_t = uint;
alias mangle_t = ubyte;
alias targ_size_t = ulong;
Expand Down
2 changes: 1 addition & 1 deletion src/dclass.d
Expand Up @@ -11,7 +11,7 @@ module ddmd.dclass;
import core.stdc.string;
import ddmd.aggregate;
import ddmd.arraytypes;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.clone;
import ddmd.declaration;
import ddmd.dmodule;
Expand Down
2 changes: 1 addition & 1 deletion src/denum.d
Expand Up @@ -10,7 +10,7 @@ module ddmd.denum;

import core.stdc.stdio;
import ddmd.access;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.declaration;
import ddmd.dmodule;
import ddmd.doc;
Expand Down
2 changes: 1 addition & 1 deletion src/dmodule.d
Expand Up @@ -13,7 +13,7 @@ import core.stdc.stdlib;
import core.stdc.string;
import ddmd.aggregate;
import ddmd.arraytypes;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.dimport;
import ddmd.dmacro;
import ddmd.doc;
Expand Down
2 changes: 1 addition & 1 deletion src/dstruct.d
Expand Up @@ -11,7 +11,7 @@ module ddmd.dstruct;
import ddmd.aggregate;
import ddmd.argtypes;
import ddmd.arraytypes;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.clone;
import ddmd.declaration;
import ddmd.dmodule;
Expand Down
2 changes: 1 addition & 1 deletion src/dsymbol.d
Expand Up @@ -15,7 +15,7 @@ import ddmd.aggregate;
import ddmd.aliasthis;
import ddmd.arraytypes;
import ddmd.attrib;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.dclass;
import ddmd.declaration;
import ddmd.denum;
Expand Down
2 changes: 1 addition & 1 deletion src/dtemplate.d
Expand Up @@ -15,7 +15,7 @@ import ddmd.aggregate;
import ddmd.aliasthis;
import ddmd.arraytypes;
import ddmd.attrib;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.dcast;
import ddmd.dclass;
import ddmd.declaration;
Expand Down
2 changes: 1 addition & 1 deletion src/expression.d
Expand Up @@ -19,7 +19,7 @@ import ddmd.argtypes;
import ddmd.arrayop;
import ddmd.arraytypes;
import ddmd.attrib;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.canthrow;
import ddmd.clone;
import ddmd.complex;
Expand Down
4 changes: 1 addition & 3 deletions src/func.d
Expand Up @@ -13,7 +13,7 @@ import core.stdc.string;
import ddmd.aggregate;
import ddmd.arraytypes;
import ddmd.attrib;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.builtin;
import ddmd.ctfeexpr;
import ddmd.dclass;
Expand Down Expand Up @@ -48,8 +48,6 @@ import ddmd.target;
import ddmd.tokens;
import ddmd.visitor;

extern extern (C++) RET retStyle(TypeFunction tf);

enum ILS : int
{
ILSuninitialized, // not computed yet
Expand Down
121 changes: 121 additions & 0 deletions src/gluelayer.d
@@ -0,0 +1,121 @@
// Compiler implementation of the D programming language
// Copyright (c) 1999-2015 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// http://www.digitalmars.com
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt

module ddmd.gluelayer;

import ddmd.aggregate;
import ddmd.dmodule;
import ddmd.dscope;
import ddmd.dsymbol;
import ddmd.expression;
import ddmd.lib;
import ddmd.mtype;
import ddmd.statement;
import ddmd.root.file;

version (NoBackend)
{
struct Symbol;
struct code;
struct block;
struct Blockx;
struct elem;
struct TYPE;
alias type = TYPE;

// tocsym

extern (C++) Symbol* toInitializer(AggregateDeclaration ad)
{
return null;
}

// glue

extern (C++) void obj_write_deferred(Library library)
{
}

extern (C++) void obj_start(char* srcfile)
{
}

extern (C++) void obj_end(Library library, File* objfile)
{
}

extern (C++) void genObjFile(Module m, bool multiobj)
{
}

// msc

extern (C++) void backend_init()
{
}

extern (C++) void backend_term()
{
}

// iasm

extern (C++) Statement asmSemantic(AsmStatement s, Scope* sc)
{
assert(0);
}

// toir

extern (C++) RET retStyle(TypeFunction tf)
{
return RETregs;
}

extern (C++) void toObjFile(Dsymbol ds, bool multiobj)
{
}

version (OSX)
{
extern(C++) void objc_initSymbols()
{
}
}
}
else
{
import ddmd.backend;

alias Symbol = ddmd.backend.Symbol;
alias code = ddmd.backend.code;
alias block = ddmd.backend.block;
alias Blockx = ddmd.backend.Blockx;
alias elem = ddmd.backend.elem;
alias type = ddmd.backend.type;

extern extern (C++) Symbol* toInitializer(AggregateDeclaration sd);

extern extern (C++) void obj_write_deferred(Library library);
extern extern (C++) void obj_start(char* srcfile);
extern extern (C++) void obj_end(Library library, File* objfile);
extern extern (C++) void genObjFile(Module m, bool multiobj);

extern extern (C++) void backend_init();
extern extern (C++) void backend_term();

extern extern (C++) Statement asmSemantic(AsmStatement s, Scope* sc);

extern extern (C++) RET retStyle(TypeFunction tf);
extern extern (C++) void toObjFile(Dsymbol ds, bool multiobj);

version (OSX)
{
extern(C++) void objc_initSymbols();
}
}
73 changes: 0 additions & 73 deletions src/gluestub.d

This file was deleted.

2 changes: 1 addition & 1 deletion src/mars.d
Expand Up @@ -16,7 +16,7 @@ import core.stdc.stdio;
import core.stdc.stdlib;
import core.stdc.string;
import ddmd.arraytypes;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.builtin;
import ddmd.cond;
import ddmd.dinifile;
Expand Down
2 changes: 1 addition & 1 deletion src/mtype.d
Expand Up @@ -22,7 +22,7 @@ import ddmd.aliasthis;
import ddmd.argtypes;
import ddmd.arraytypes;
import ddmd.attrib;
import ddmd.backend;
import ddmd.gluelayer;
import ddmd.complex;
import ddmd.ctfeexpr;
import ddmd.dcast;
Expand Down
3 changes: 1 addition & 2 deletions src/objc.d
Expand Up @@ -18,14 +18,13 @@ import ddmd.dstruct;
import ddmd.expression;
import ddmd.func;
import ddmd.globals;
import ddmd.gluelayer;
import ddmd.id;
import ddmd.identifier;
import ddmd.mtype;
import ddmd.root.outbuffer;
import ddmd.root.stringtable;

extern(C++) void objc_initSymbols();

struct ObjcSelector
{
// MARK: Selector
Expand Down

0 comments on commit be9c324

Please sign in to comment.