Pull OutBuffer into dmd.common and use it from both frontend and backend

This commit is contained in:
Andrei Alexandrescu 2021-07-07 16:46:12 -04:00
parent 0a73713b93
commit a7ab922b28
71 changed files with 107 additions and 79 deletions

View file

@ -10,7 +10,7 @@ dependency ":frontend" version="*"
subPackage {
name "root"
targetType "library"
sourcePaths "src/dmd/root"
sourcePaths "src/dmd/common" "src/dmd/root"
}
subPackage {
@ -86,6 +86,7 @@ subPackage {
excludedSourceFiles "src/dmd/backend/*"
excludedSourceFiles "src/dmd/root/*"
excludedSourceFiles "src/dmd/common/*"
excludedSourceFiles "src/dmd/{\
astbase,\
console,\

View file

@ -1367,9 +1367,9 @@ auto sourceFiles()
statement.h staticassert.h target.h template.h tokens.h version.h visitor.h
"),
lexer: fileArray(env["D"], "
console.d entity.d errors.d filecache.d globals.d id.d identifier.d lexer.d tokens.d utf.d
console.d entity.d errors.d filecache.d globals.d id.d identifier.d lexer.d tokens.d utf.d common/outbuffer.d
") ~ fileArray(env["ROOT"], "
array.d bitarray.d ctfloat.d file.d filename.d hash.d outbuffer.d port.d region.d rmem.d
array.d bitarray.d ctfloat.d file.d filename.d hash.d port.d region.d rmem.d
rootobject.d stringtable.d
"),
root: fileArray(env["ROOT"], "
@ -1377,7 +1377,7 @@ auto sourceFiles()
"),
rootHeaders: fileArray(env["ROOT"], "
array.h bitarray.h ctfloat.h dcompat.h dsystem.h file.h filename.h longdouble.h
object.h outbuffer.h port.h rmem.h
object.h ../common/outbuffer.h port.h rmem.h root.h
"),
backend: fileArray(env["C"], "
backend.d bcomplex.d evalu8.d divcoeff.d dvec.d go.d gsroa.d glocal.d gdag.d gother.d gflow.d

View file

@ -26,7 +26,7 @@ import dmd.globals;
import dmd.id;
import dmd.identifier;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.statement;
import dmd.tokens;
import dmd.visitor;

View file

@ -25,7 +25,7 @@ struct ASTBase
import dmd.root.filename;
import dmd.root.array;
import dmd.root.rootobject;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.ctfloat;
import dmd.root.rmem;
import dmd.root.string : toDString;

View file

@ -42,7 +42,7 @@ import dmd.id;
import dmd.identifier;
import dmd.mtype;
import dmd.objc; // for objc.addSymbols
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.target; // for target.systemLinkage
import dmd.tokens;
import dmd.visitor;

View file

@ -9,7 +9,7 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/root/outbuffer.d
*/
module dmd.root.outbuffer;
module dmd.common.outbuffer;
import core.stdc.stdarg;
import core.stdc.stdio;
@ -63,7 +63,7 @@ struct OutBuffer
/**
Frees resources associated automatically.
*/
extern (C++) ~this() pure nothrow
extern (C++) ~this() pure nothrow @trusted
{
if (fileMapping)
{
@ -199,6 +199,32 @@ struct OutBuffer
offset += buf.length;
}
/**
* Writes a 16 bit value, no reserve check.
*/
// @trusted
// void write16n(int v)
// {
// assert(0);
// }
/**
* Writes a 16 bit value.
*/
void write16(int v) nothrow
{
auto u = cast(ushort) v;
write(&u, u.sizeof);
}
/**
* Writes a 32 bit int.
*/
@trusted void write32(int v) nothrow
{
write(&v, v.sizeof);
}
extern (C++) void writestring(const(char)* string) pure nothrow
{
write(string.toDString);

View file

@ -4,14 +4,14 @@
* http://www.digitalmars.com
* Distributed under the Boost Software License, Version 1.0.
* http://www.boost.org/LICENSE_1_0.txt
* https://github.com/dlang/dmd/blob/master/src/dmd/root/outbuffer.h
* https://github.com/dlang/dmd/blob/master/src/dmd/common/outbuffer.h
*/
#pragma once
#include "dsystem.h"
#include "dcompat.h"
#include "rmem.h"
#include "root/dsystem.h"
#include "root/dcompat.h"
#include "root/rmem.h"
class RootObject;

View file

@ -28,7 +28,7 @@ import dmd.globals;
import dmd.identifier;
import dmd.mtype;
import dmd.typesem;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.tokens;

View file

@ -23,7 +23,7 @@ import dmd.lexer;
import dmd.parse;
import dmd.errors;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.root.string;

View file

@ -41,7 +41,7 @@ import dmd.identifier;
import dmd.mtype;
import dmd.nspace;
import dmd.root.array;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.target;

View file

@ -30,7 +30,7 @@ import dmd.globals;
import dmd.id;
import dmd.identifier;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.target;
import dmd.tokens;

View file

@ -37,7 +37,7 @@ import dmd.intrange;
import dmd.mtype;
import dmd.opover;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.tokens;
import dmd.typesem;

View file

@ -35,7 +35,7 @@ import dmd.init;
import dmd.initsem;
import dmd.intrange;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.target;
import dmd.tokens;

View file

@ -23,7 +23,7 @@ import dmd.errors;
import dmd.globals;
import dmd.root.rmem;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.string;
import dmd.root.stringtable;

View file

@ -16,7 +16,7 @@ import core.stdc.string;
import dmd.doc;
import dmd.errors;
import dmd.globals;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
extern (C++) struct MacroTable

View file

@ -139,7 +139,7 @@ import dmd.id;
import dmd.identifier;
import dmd.mtype;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.aav;
import dmd.root.string;
import dmd.root.stringtable;

View file

@ -39,7 +39,7 @@ import dmd.cparse;
import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.rootobject;

View file

@ -45,7 +45,7 @@ import dmd.mtype;
import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -33,7 +33,7 @@ import dmd.func;
import dmd.globals;
import dmd.id;
import dmd.identifier;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.speller;
import dmd.statement;

View file

@ -56,7 +56,7 @@ import dmd.objc;
import dmd.opover;
import dmd.parse;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.semantic2;

View file

@ -67,7 +67,7 @@ import dmd.initsem;
import dmd.mtype;
import dmd.opover;
import dmd.root.array;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.semantic2;
import dmd.semantic3;

View file

@ -26,7 +26,7 @@ import dmd.root.filename;
import dmd.visitor;
import dmd.tokens;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.utils;
//debug = Debug_DtoH;

View file

@ -22,7 +22,7 @@ import dmd.dsymbol;
import dmd.dsymbolsem;
import dmd.globals;
import dmd.identifier;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.visitor;
/***********************************************************

View file

@ -226,7 +226,7 @@ Symbol *toStringSymbol(const(char)* str, size_t len, size_t sz)
* But the checksum algorithm is unknown. Just invent our own.
*/
import dmd.root.outbuffer : OutBuffer;
import dmd.common.outbuffer : OutBuffer;
OutBuffer buf;
buf.writestring("__");

View file

@ -16,7 +16,7 @@ import core.stdc.stdio;
import core.stdc.stdlib;
import core.stdc.string;
import dmd.globals;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.string;
import dmd.console;

View file

@ -59,7 +59,7 @@ import dmd.opover;
import dmd.optimize;
import dmd.root.ctfloat;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.root.string;

View file

@ -63,7 +63,7 @@ import dmd.printast;
import dmd.root.ctfloat;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.semantic2;

View file

@ -445,7 +445,7 @@ Returns:
*/
string prettyPrint(Module m)
{
import dmd.root.outbuffer: OutBuffer;
import dmd.common.outbuffer: OutBuffer;
import dmd.hdrgen : HdrGenState, moduleToBuffer2;
auto buf = OutBuffer();

View file

@ -46,7 +46,7 @@ import dmd.init;
import dmd.mtype;
import dmd.objc;
import dmd.root.aav;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.root.stringtable;

View file

@ -14,7 +14,7 @@ module dmd.globals;
import core.stdc.stdint;
import dmd.root.array;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.identifier;
/// Defines a setting for how compiler warnings and deprecations are handled

View file

@ -12,7 +12,7 @@
#include "root/dcompat.h"
#include "root/ctfloat.h"
#include "root/outbuffer.h"
#include "common/outbuffer.h"
#include "root/filename.h"
#include "compiler.h"

View file

@ -18,7 +18,7 @@ import core.stdc.stdlib;
import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -44,7 +44,7 @@ import dmd.mtype;
import dmd.nspace;
import dmd.parse;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.statement;

View file

@ -37,7 +37,7 @@ import dmd.target;
import dmd.tokens;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;

View file

@ -16,7 +16,7 @@ import core.stdc.stdio;
import core.stdc.string;
import dmd.globals;
import dmd.id;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.root.stringtable;

View file

@ -23,7 +23,7 @@ import dmd.globals;
import dmd.hdrgen;
import dmd.identifier;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.tokens;
import dmd.visitor;

View file

@ -33,7 +33,7 @@ import dmd.hdrgen;
import dmd.id;
import dmd.identifier;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.target;

View file

@ -27,7 +27,7 @@ import dmd.expression;
import dmd.func;
import dmd.dmangle;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.stringtable;
import dmd.dscope;

View file

@ -28,7 +28,7 @@ import dmd.id;
import dmd.identifier;
import dmd.root.array;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -20,7 +20,7 @@ import dmd.errors;
import dmd.target;
import dmd.utils;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.string;

View file

@ -32,7 +32,7 @@ import dmd.utils;
import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -34,7 +34,7 @@ import dmd.utils;
import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -34,7 +34,7 @@ import dmd.utils;
import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -24,7 +24,7 @@ import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.rmem;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.string;
import dmd.root.stringtable;

View file

@ -25,7 +25,7 @@ import dmd.globals;
import dmd.mars;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.string;
import dmd.utils;

View file

@ -57,7 +57,7 @@ import dmd.root.array;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.man;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.response;
import dmd.root.rmem;
import dmd.root.string;

View file

@ -43,7 +43,7 @@ import dmd.identifier;
import dmd.init;
import dmd.opover;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.root.stringtable;

View file

@ -43,7 +43,7 @@ import dmd.tokens;
import dmd.visitor;
import dmd.root.bitarray;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
/**********************************
* Perform ownership/borrowing checks for funcdecl.

View file

@ -38,7 +38,7 @@ import dmd.id;
import dmd.identifier;
import dmd.mtype;
import dmd.root.array;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.stringtable;
import dmd.target;
import dmd.tokens;

View file

@ -22,7 +22,7 @@ import dmd.identifier;
import dmd.lexer;
import dmd.errors;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.root.string;

View file

@ -59,7 +59,7 @@ extern (C++) final class PrintASTVisitor : Visitor
printIndent(indent);
import dmd.hdrgen : floatToBuffer;
import dmd.root.outbuffer : OutBuffer;
import dmd.common.outbuffer : OutBuffer;
OutBuffer buf;
floatToBuffer(e.type, e.value, &buf, false);
printf("Real %s %s\n", buf.peekChars(), e.type ? e.type.toChars() : "");

View file

@ -16,7 +16,7 @@ import core.stdc.errno;
import core.stdc.string;
import dmd.root.array;
import dmd.root.file;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.port;
import dmd.root.rmem;
import dmd.root.rootobject;

View file

@ -13,7 +13,7 @@ module dmd.root.rootobject;
import core.stdc.stdio;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
/***********************************************************
*/

View file

@ -15,7 +15,7 @@ import core.stdc.string;
import core.stdc.stdlib;
import dmd.globals;
import dmd.root.rmem;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.string;
import dmd.arraytypes;
import dmd.errors;

View file

@ -53,7 +53,7 @@ import dmd.objc;
import dmd.opover;
import dmd.parse;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.sideeffect;

View file

@ -55,7 +55,7 @@ import dmd.objc;
import dmd.opover;
import dmd.parse;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;
import dmd.sideeffect;

View file

@ -39,7 +39,8 @@ import dmd.id;
import dmd.identifier;
import dmd.dinterpret;
import dmd.mtype;
import dmd.root.outbuffer;
import dmd.parse;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.sapply;
import dmd.sideeffect;

View file

@ -54,7 +54,7 @@ import dmd.nogc;
import dmd.opover;
import dmd.parse;
import dmd.printast;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.string;
import dmd.semantic2;
import dmd.sideeffect;

View file

@ -22,7 +22,7 @@ import dmd.globals;
import dmd.identifier;
import dmd.mtype;
import dmd.root.array;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.tokens;

View file

@ -69,7 +69,7 @@ Symbol *toSymbolX(Dsymbol ds, const(char)* prefix, int sclass, type *t, const(ch
{
//printf("Dsymbol::toSymbolX('%s')\n", prefix);
import core.stdc.stdlib : malloc, free;
import dmd.root.outbuffer : OutBuffer;
import dmd.common.outbuffer : OutBuffer;
OutBuffer buf;
mangleToBuffer(ds, &buf);
@ -139,7 +139,7 @@ Symbol *toSymbol(Dsymbol s)
assert(!vd.needThis());
const(char)[] id;
import dmd.root.outbuffer : OutBuffer;
import dmd.common.outbuffer : OutBuffer;
OutBuffer buf;
bool isNRVO = false;
if (vd.isDataseg())

View file

@ -17,7 +17,7 @@ import core.stdc.string;
import core.stdc.stdlib;
import dmd.root.array;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.backend.cdef;

View file

@ -19,7 +19,7 @@ import core.stdc.string;
import dmd.globals;
import dmd.identifier;
import dmd.root.ctfloat;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.utf;

View file

@ -17,7 +17,7 @@ import core.stdc.string;
import core.stdc.time;
import dmd.root.array;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.rootobject;

View file

@ -49,7 +49,7 @@ import dmd.tokens;
import dmd.typesem;
import dmd.visitor;
import dmd.root.rootobject;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.string;
enum LOGSEMANTIC = false;

View file

@ -54,7 +54,7 @@ import dmd.opover;
import dmd.parse;
import dmd.root.ctfloat;
import dmd.root.rmem;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rootobject;
import dmd.root.string;
import dmd.root.stringtable;

View file

@ -16,7 +16,7 @@ import dmd.errors;
import dmd.globals;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.string;

View file

@ -23,7 +23,7 @@ import core.sys.windows.winreg;
import dmd.env;
import dmd.root.file;
import dmd.root.filename;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.root.rmem;
import dmd.root.string : toDString;

View file

@ -17,7 +17,7 @@
#include "root/filename.h"
#include "root/longdouble.h"
#include "root/object.h"
#include "root/outbuffer.h"
#include "common/outbuffer.h"
#include "root/port.h"
#include "root/rmem.h"

View file

@ -7,7 +7,7 @@ import dmd.permissivevisitor;
import dmd.transitivevisitor;
import dmd.tokens;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import core.stdc.stdio;

View file

@ -185,7 +185,7 @@ unittest
import dmd.frontend;
import dmd.globals : Loc;
import dmd.root.outbuffer;
import dmd.common.outbuffer;
import dmd.console : Color;
string[] diagnosticMessages;

View file

@ -134,7 +134,7 @@ const struct Diagnostic
string toString() nothrow
{
import dmd.root.outbuffer : OutBuffer;
import dmd.common.outbuffer : OutBuffer;
auto buffer = OutBuffer();
buffer.printf("%s: %.*s", location.toChars(true),
@ -168,7 +168,7 @@ struct DiagnosticCollector
{
import std.array : replace;
import std.string : strip;
import dmd.root.outbuffer : OutBuffer;
import dmd.common.outbuffer : OutBuffer;
auto buffer = OutBuffer();