Multifile/IDE mode (#2725)

This commit is contained in:
Patrick Quist
2021-08-26 21:57:07 +02:00
committed by GitHub
parent 6e33f7a61e
commit 5e5e60159a
66 changed files with 24478 additions and 10942 deletions

View File

@@ -0,0 +1,5 @@
project(default)
add_compile_options(-Werror -Wall -Wextra -g)
add_executable(output.s example.cpp)

View File

@@ -299,6 +299,7 @@ export class AsmParser extends AsmRegex {
let keepInlineCode = false; let keepInlineCode = false;
let lastOwnSource = null; let lastOwnSource = null;
const dontMaskFilenames = filters.dontMaskFilenames;
function maybeAddBlank() { function maybeAddBlank() {
const lastBlank = asm.length === 0 || asm[asm.length - 1].text === ''; const lastBlank = asm.length === 0 || asm[asm.length - 1].text === '';
@@ -309,13 +310,21 @@ export class AsmParser extends AsmRegex {
function handleSource(line) { function handleSource(line) {
let match = line.match(sourceTag); let match = line.match(sourceTag);
if (match) { if (match) {
const file = files[parseInt(match[1])]; const file = utils.maskRootdir(files[parseInt(match[1])]);
const sourceLine = parseInt(match[2]); const sourceLine = parseInt(match[2]);
if (file) { if (file) {
source = { if (dontMaskFilenames) {
file: !stdInLooking.test(file) ? file : null, source = {
line: sourceLine, file: file,
}; line: sourceLine,
mainsource: !!stdInLooking.test(file),
};
} else {
source = {
file: !stdInLooking.test(file) ? file : null,
line: sourceLine,
};
}
const sourceCol = parseInt(match[3]); const sourceCol = parseInt(match[3]);
if (!isNaN(sourceCol) && sourceCol !== 0) { if (!isNaN(sourceCol) && sourceCol !== 0) {
source.column = sourceCol; source.column = sourceCol;
@@ -354,12 +363,20 @@ export class AsmParser extends AsmRegex {
function handle6502(line) { function handle6502(line) {
const match = line.match(source6502Dbg); const match = line.match(source6502Dbg);
if (match) { if (match) {
const file = match[1]; const file = utils.maskRootdir(match[1]);
const sourceLine = parseInt(match[2]); const sourceLine = parseInt(match[2]);
source = { if (dontMaskFilenames) {
file: !stdInLooking.test(file) ? file : null, source = {
line: sourceLine, file: file,
}; line: sourceLine,
mainsource: !!stdInLooking.test(file),
};
} else {
source = {
file: !stdInLooking.test(file) ? file : null,
line: sourceLine,
};
}
} else if (source6502DbgEnd.test(line)) { } else if (source6502DbgEnd.test(line)) {
source = null; source = null;
} }
@@ -398,7 +415,7 @@ export class AsmParser extends AsmRegex {
lastOwnSource = null; lastOwnSource = null;
} }
if (filters.libraryCode && !lastOwnSource && source && source.file !== null) { if (filters.libraryCode && !lastOwnSource && source && (source.file !== null) && !source.mainsource) {
if (mayRemovePreviousLabel && asm.length > 0) { if (mayRemovePreviousLabel && asm.length > 0) {
const lastLine = asm[asm.length - 1]; const lastLine = asm[asm.length - 1];
@@ -512,6 +529,7 @@ export class AsmParser extends AsmRegex {
const startTime = process.hrtime.bigint(); const startTime = process.hrtime.bigint();
const asm = []; const asm = [];
const labelDefinitions = {}; const labelDefinitions = {};
const dontMaskFilenames = filters.dontMaskFilenames;
let asmLines = asmResult.split('\n'); let asmLines = asmResult.split('\n');
const startingLineCount = asmLines.length; const startingLineCount = asmLines.length;
@@ -545,7 +563,15 @@ export class AsmParser extends AsmRegex {
} }
let match = line.match(this.lineRe); let match = line.match(this.lineRe);
if (match) { if (match) {
source = {file: null, line: parseInt(match.groups.line)}; if (dontMaskFilenames) {
source = {
file: utils.maskRootdir(match[1]),
line: parseInt(match.groups.line),
mainsource: true,
};
} else {
source = {file: null, line: parseInt(match.groups.line), mainsource: true};
}
continue; continue;
} }
@@ -565,7 +591,11 @@ export class AsmParser extends AsmRegex {
if (!func || !this.isUserFunction(func)) continue; if (!func || !this.isUserFunction(func)) continue;
if (filters.libraryCode && source && source.file !== null) { // note: normally the source.file will be null if it's code from example.ext
// but with filters.dontMaskFilenames it will be filled with the actual filename
// instead we can test source.mainsource in that situation
const isMainsource = source && ((source.file === null) || source.mainsource);
if (filters.libraryCode && !isMainsource) {
if (mayRemovePreviousLabel && asm.length > 0) { if (mayRemovePreviousLabel && asm.length > 0) {
const lastLine = asm[asm.length - 1]; const lastLine = asm[asm.length - 1];
if (lastLine.text && this.labelDef.test(lastLine.text)) { if (lastLine.text && this.labelDef.test(lastLine.text)) {

View File

@@ -244,11 +244,17 @@ export class BaseCompiler {
async objdump(outputFilename, result, maxSize, intelAsm, demangle) { async objdump(outputFilename, result, maxSize, intelAsm, demangle) {
outputFilename = this.getObjdumpOutputFilename(outputFilename); outputFilename = this.getObjdumpOutputFilename(outputFilename);
if (!await utils.fileExists(outputFilename)) {
result.asm = '<No output file ' + outputFilename + '>';
return result;
}
const objdumper = new this.objdumperClass(); const objdumper = new this.objdumperClass();
const args = ['-d', outputFilename, '-l', ...objdumper.widthOptions]; const args = ['-d', outputFilename, '-l', ...objdumper.widthOptions];
if (demangle) args.push('-C'); if (demangle) args.push('-C');
if (intelAsm) args.push(...objdumper.intelAsmOptions); if (intelAsm) args.push(...objdumper.intelAsmOptions);
const execOptions = {maxOutput: maxSize, customCwd: path.dirname(outputFilename)}; const execOptions = {maxOutput: maxSize, customCwd: result.dirPath || path.dirname(outputFilename)};
const objResult = await this.exec(this.compiler.objdumper, args, execOptions); const objResult = await this.exec(this.compiler.objdumper, args, execOptions);
if (objResult.code !== 0) { if (objResult.code !== 0) {
@@ -271,6 +277,7 @@ export class BaseCompiler {
input: executeParameters.stdin, input: executeParameters.stdin,
env: executeParameters.env, env: executeParameters.env,
customCwd: homeDir, customCwd: homeDir,
appHome: homeDir,
}); });
execResult.stdout = utils.parseOutput(execResult.stdout); execResult.stdout = utils.parseOutput(execResult.stdout);
execResult.stderr = utils.parseOutput(execResult.stderr); execResult.stderr = utils.parseOutput(execResult.stderr);
@@ -429,7 +436,7 @@ export class BaseCompiler {
})); }));
} }
getSharedLibraryPathsAsArguments(libraries) { getSharedLibraryPathsAsArguments(libraries, libDownloadPath) {
const pathFlag = this.compiler.rpathFlag || '-Wl,-rpath,'; const pathFlag = this.compiler.rpathFlag || '-Wl,-rpath,';
const libPathFlag = this.compiler.libpathFlag || '-L'; const libPathFlag = this.compiler.libpathFlag || '-L';
@@ -441,9 +448,13 @@ export class BaseCompiler {
]; ];
} }
if (!libDownloadPath) {
libDownloadPath = '.';
}
return _.union( return _.union(
[libPathFlag + '.'], [libPathFlag + libDownloadPath],
[pathFlag + '.'], [pathFlag + libDownloadPath],
this.compiler.libPath.map(path => pathFlag + path), this.compiler.libPath.map(path => pathFlag + path),
toolchainLibraryPaths.map(path => pathFlag + path), toolchainLibraryPaths.map(path => pathFlag + path),
this.getSharedLibraryPaths(libraries).map(path => pathFlag + path), this.getSharedLibraryPaths(libraries).map(path => pathFlag + path),
@@ -604,13 +615,23 @@ export class BaseCompiler {
return inputFilename.replace(path.extname(inputFilename), '.mir'); return inputFilename.replace(path.extname(inputFilename), '.mir');
} }
getOutputFilename(dirPath, outputFilebase) { getOutputFilename(dirPath, outputFilebase, key) {
// NB keep lower case as ldc compiler `tolower`s the output name let filename;
return path.join(dirPath, `${outputFilebase}.s`); if (key && key.backendOptions && key.backendOptions.customOutputFilename) {
filename = key.backendOptions.customOutputFilename;
} else {
filename = `${outputFilebase}.s`;
}
if (dirPath) {
return path.join(dirPath, filename);
} else {
return filename;
}
} }
getExecutableFilename(dirPath, outputFilebase) { getExecutableFilename(dirPath, outputFilebase, key) {
return this.getOutputFilename(dirPath, outputFilebase); return this.getOutputFilename(dirPath, outputFilebase, key);
} }
async generateGccDump(inputFilename, options, gccDumpOptions) { async generateGccDump(inputFilename, options, gccDumpOptions) {
@@ -727,6 +748,17 @@ export class BaseCompiler {
} }
} }
async writeMultipleFiles(files, dirPath) {
const filesToWrite = [];
for (let file of files) {
const fullpath = this.getExtraFilepath(dirPath, file.filename);
filesToWrite.push(fs.outputFile(fullpath, file.contents));
}
return Promise.all(filesToWrite);
}
async buildExecutableInFolder(key, dirPath) { async buildExecutableInFolder(key, dirPath) {
const buildEnvironment = this.setupBuildEnvironment(key, dirPath); const buildEnvironment = this.setupBuildEnvironment(key, dirPath);
@@ -734,12 +766,10 @@ export class BaseCompiler {
const writerOfSource = fs.writeFile(inputFilename, key.source); const writerOfSource = fs.writeFile(inputFilename, key.source);
if (key.files) { if (key.files) {
for (let file of key.files) { await this.writeMultipleFiles(key.files, dirPath);
await fs.writeFile(this.getExtraFilepath(dirPath, file.filename), file.contents);
}
} }
const outputFilename = this.getExecutableFilename(dirPath, this.outputFilebase); const outputFilename = this.getExecutableFilename(dirPath, this.outputFilebase, key);
const buildFilters = Object.assign({}, key.filters); const buildFilters = Object.assign({}, key.filters);
buildFilters.binary = true; buildFilters.binary = true;
@@ -778,6 +808,10 @@ export class BaseCompiler {
await this.storePackageWithExecutable(key, dirPath, compilationResult); await this.storePackageWithExecutable(key, dirPath, compilationResult);
if (!compilationResult.dirPath) {
compilationResult.dirPath = dirPath;
}
return compilationResult; return compilationResult;
} }
@@ -795,7 +829,7 @@ export class BaseCompiler {
code: 0, code: 0,
inputFilename: path.join(dirPath, this.compileFilename), inputFilename: path.join(dirPath, this.compileFilename),
dirPath: dirPath, dirPath: dirPath,
executableFilename: this.getExecutableFilename(dirPath, this.outputFilebase), executableFilename: this.getExecutableFilename(dirPath, this.outputFilebase, key),
packageDownloadAndUnzipTime: ((endTime - startTime) / BigInt(1000000)).toString(), packageDownloadAndUnzipTime: ((endTime - startTime) / BigInt(1000000)).toString(),
}); });
} }
@@ -889,7 +923,7 @@ export class BaseCompiler {
} }
executeParameters.ldPath = this.getSharedLibraryPathsAsLdLibraryPathsForExecution(key.libraries); executeParameters.ldPath = this.getSharedLibraryPathsAsLdLibraryPathsForExecution(key.libraries);
const result = await this.runExecutable(buildResult.executableFilename, executeParameters); const result = await this.runExecutable(buildResult.executableFilename, executeParameters, buildResult.dirPath);
result.didExecute = true; result.didExecute = true;
result.buildResult = buildResult; result.buildResult = buildResult;
return result; return result;
@@ -912,10 +946,12 @@ export class BaseCompiler {
return cacheKey; return cacheKey;
} }
getCompilationInfo(key, result) { getCompilationInfo(key, result, customBuildPath) {
const compilationinfo = Object.assign({}, key, result); const compilationinfo = Object.assign({}, key, result);
compilationinfo.outputFilename = this.getOutputFilename(result.dirPath, this.outputFilebase); compilationinfo.outputFilename = this.getOutputFilename(
compilationinfo.executableFilename = this.getExecutableFilename(result.dirPath, this.outputFilebase); customBuildPath || result.dirPath, this.outputFilebase, key);
compilationinfo.executableFilename = this.getExecutableFilename(
customBuildPath || result.dirPath, this.outputFilebase, key);
compilationinfo.asmParser = this.asm; compilationinfo.asmParser = this.asm;
return compilationinfo; return compilationinfo;
} }
@@ -952,7 +988,8 @@ export class BaseCompiler {
} }
const inputFilenameSafe = this.filename(inputFilename); const inputFilenameSafe = this.filename(inputFilename);
const outputFilename = this.getOutputFilename(dirPath, this.outputFilebase);
const outputFilename = this.getOutputFilename(dirPath, this.outputFilebase, key);
options = _.compact( options = _.compact(
this.prepareArguments(options, filters, backendOptions, inputFilename, outputFilename, libraries), this.prepareArguments(options, filters, backendOptions, inputFilename, outputFilename, libraries),
@@ -1029,7 +1066,7 @@ export class BaseCompiler {
if (this.lang.id === 'c++') { if (this.lang.id === 'c++') {
return { ...this.cmakeBaseEnv, CXXFLAGS: compilerflags }; return { ...this.cmakeBaseEnv, CXXFLAGS: compilerflags };
} else { } else {
return { ...this.cmakeBaseEnv, CCFLAGS: compilerflags }; return { ...this.cmakeBaseEnv, CFLAGS: compilerflags };
} }
} }
@@ -1058,7 +1095,8 @@ export class BaseCompiler {
cmakeExecParams.env.LD_LIBRARY_PATH = dirPath; cmakeExecParams.env.LD_LIBRARY_PATH = dirPath;
const libPaths = this.getSharedLibraryPathsAsArguments(libsAndOptions.libraries); // todo: if we don't use nsjail, the path should not be /app but dirPath
const libPaths = this.getSharedLibraryPathsAsArguments(libsAndOptions.libraries, '/app');
cmakeExecParams.env.LDFLAGS = libPaths.join(' '); cmakeExecParams.env.LDFLAGS = libPaths.join(' ');
return cmakeExecParams; return cmakeExecParams;
@@ -1090,6 +1128,7 @@ export class BaseCompiler {
_.defaults(key.filters, this.getDefaultFilters()); _.defaults(key.filters, this.getDefaultFilters());
key.filters.binary = true; key.filters.binary = true;
key.filters.dontMaskFilenames = true;
const libsAndOptions = this.createLibsAndOptions(key); const libsAndOptions = this.createLibsAndOptions(key);
@@ -1103,39 +1142,64 @@ export class BaseCompiler {
const cacheKey = this.getCmakeCacheKey(key, files); const cacheKey = this.getCmakeCacheKey(key, files);
const dirPath = await this.newTempDir(); const dirPath = await this.newTempDir();
const outputFilename = this.getExecutableFilename(dirPath, this.outputFilebase);
const outputFilename = this.getExecutableFilename(path.join(dirPath, 'build'), this.outputFilebase, key);
let fullResult = await this.loadPackageWithExecutable(cacheKey, dirPath); let fullResult = await this.loadPackageWithExecutable(cacheKey, dirPath);
if (!fullResult) { if (!fullResult) {
const filesToWrite = []; await fs.writeFile(path.join(dirPath, 'CMakeLists.txt'), cacheKey.source);
filesToWrite.push(fs.writeFile(path.join(dirPath, 'CMakeLists.txt'), cacheKey.source)); const filesToWrite = this.writeMultipleFiles(files, dirPath);
for (let file of files) {
filesToWrite.push(fs.writeFile(this.getExtraFilepath(dirPath, file.filename), file.contents));
}
const execParams = this.getDefaultExecOptions(); const execParams = this.getDefaultExecOptions();
execParams.customCwd = dirPath; //path.join(dirPath, 'build'); execParams.appHome = dirPath;
execParams.customCwd = path.join(dirPath, 'build');
await fs.mkdir(execParams.customCwd);
const makeExecParams = this.createCmakeExecParams(execParams, dirPath, libsAndOptions); const makeExecParams = this.createCmakeExecParams(execParams, dirPath, libsAndOptions);
await Promise.all(filesToWrite); await filesToWrite;
fullResult = { fullResult = {
buildsteps: [], buildsteps: [],
}; };
await this.setupBuildEnvironment(cacheKey, dirPath); fullResult.downloads = await this.setupBuildEnvironment(cacheKey, dirPath);
let toolchainparam = ''; let toolchainparam = '';
if (this.toolchainPath) { if (this.toolchainPath) {
toolchainparam = `-DCMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN=${this.toolchainPath}`; toolchainparam = `-DCMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN=${this.toolchainPath}`;
} }
await this.doBuildstepAndAddToResult(fullResult, 'cmake', this.env.ceProps('cmake'), const cmakeArgs = utils.splitArguments(key.backendOptions.cmakeArgs);
[toolchainparam, '.'], makeExecParams); const fullArgs = [toolchainparam, ...cmakeArgs, '..'];
await this.doBuildstepAndAddToResult(fullResult, 'make', this.env.ceProps('make'),
const cmakeStepResult = await this.doBuildstepAndAddToResult(fullResult, 'cmake', this.env.ceProps('cmake'),
fullArgs, makeExecParams);
if (cmakeStepResult.code !== 0) {
fullResult.result = {
dirPath,
okToCache: false,
code: cmakeStepResult.code,
asm: [{text: '<Build failed>'}],
};
return fullResult;
}
const makeStepResult = await this.doBuildstepAndAddToResult(fullResult, 'make', this.env.ceProps('make'),
[], execParams); [], execParams);
if (makeStepResult.code !== 0) {
fullResult.result = {
dirPath,
okToCache: false,
code: makeStepResult.code,
asm: [{text: '<Build failed>'}],
};
return fullResult;
}
fullResult.result = { fullResult.result = {
dirPath, dirPath,
okToCache: true, okToCache: true,
@@ -1145,24 +1209,38 @@ export class BaseCompiler {
fullResult.result, outputFilename, cacheKey.filters); fullResult.result, outputFilename, cacheKey.filters);
fullResult.result = asmResult; fullResult.result = asmResult;
if (this.lang.id === 'c++') {
fullResult.result.compilationOptions = makeExecParams.env.CXXFLAGS.split(' ');
} else {
fullResult.result.compilationOptions = makeExecParams.env.CFLAGS.split(' ');
}
fullResult.code = 0;
_.each(fullResult.buildsteps, function (step) {
fullResult.code += step.code;
});
await this.storePackageWithExecutable(cacheKey, dirPath, fullResult); await this.storePackageWithExecutable(cacheKey, dirPath, fullResult);
} else { } else {
fullResult.fetchedFromCache = true; fullResult.fetchedFromCache = true;
delete fullResult.code;
delete fullResult.inputFilename; delete fullResult.inputFilename;
delete fullResult.dirPath;
delete fullResult.executableFilename; delete fullResult.executableFilename;
delete fullResult.dirPath;
}
fullResult.result.dirPath = dirPath;
if (this.compiler.supportsExecute && doExecute) {
fullResult.execResult = await this.runExecutable(outputFilename, executeParameters, dirPath);
fullResult.didExecute = true;
} }
const optOutput = undefined; const optOutput = undefined;
await this.afterCompilation(fullResult.result, false, cacheKey, [], cacheKey.tools, cacheKey.backendOptions, await this.afterCompilation(fullResult.result, false, cacheKey, [], key.tools, cacheKey.backendOptions,
cacheKey.filters, libsAndOptions.options, optOutput); cacheKey.filters, libsAndOptions.options, optOutput, path.join(dirPath, 'build'));
if (this.compiler.supportsExecute && doExecute) { delete fullResult.result.dirPath;
fullResult.execResult = await this.runExecutable(outputFilename, executeParameters);
fullResult.didExecute = true;
}
return fullResult; return fullResult;
} }
@@ -1171,23 +1249,18 @@ export class BaseCompiler {
// note: it's vitally important that the resulting path does not escape dirPath // note: it's vitally important that the resulting path does not escape dirPath
// (filename is user input and thus unsafe) // (filename is user input and thus unsafe)
const sanere = /^[\s\w.-]+$/i; const joined = path.join(dirPath, filename);
if (sanere.test(filename)) { const normalized = path.normalize(joined);
const joined = path.join(dirPath, filename); if (process.platform === 'win32') {
const normalized = path.normalize(joined); if (!normalized.replace(/\\/g, '/').startsWith(
if (process.platform === 'win32') { dirPath.replace(/\\/g, '/'))
if (!normalized.replace(/\\/g, '/').startsWith( ) {
dirPath.replace(/\\/g, '/')) throw new Error('Invalid filename');
) {
throw new Error('Invalid filename');
}
} else {
if (!normalized.startsWith(dirPath)) throw new Error('Invalid filename');
} }
return normalized;
} else { } else {
throw new Error('Invalid filename'); if (!normalized.startsWith(dirPath)) throw new Error('Invalid filename');
} }
return normalized;
} }
async compile(source, options, backendOptions, filters, bypassCache, tools, executionParameters, libraries, files) { async compile(source, options, backendOptions, filters, bypassCache, tools, executionParameters, libraries, files) {
@@ -1253,9 +1326,9 @@ export class BaseCompiler {
await fs.writeFile(inputFilename, source); await fs.writeFile(inputFilename, source);
if (files) { if (files) {
for (let file of files) { filters.dontMaskFilenames = true;
await fs.writeFile(this.getExtraFilepath(dirPath, file.filename), file.contents);
} await this.writeMultipleFiles(files, dirPath);
} }
// TODO make const when I can // TODO make const when I can
@@ -1268,7 +1341,7 @@ export class BaseCompiler {
} }
async afterCompilation(result, doExecute, key, executeParameters, tools, backendOptions, filters, options, async afterCompilation(result, doExecute, key, executeParameters, tools, backendOptions, filters, options,
optOutput) { optOutput, customBuildPath) {
// Start the execution as soon as we can, but only await it at the end. // Start the execution as soon as we can, but only await it at the end.
const execPromise = doExecute ? this.handleExecution(key, executeParameters) : null; const execPromise = doExecute ? this.handleExecution(key, executeParameters) : null;
@@ -1277,7 +1350,7 @@ export class BaseCompiler {
result.optOutput = optOutput; result.optOutput = optOutput;
} }
result.tools = _.union(result.tools, await Promise.all(this.runToolsOfType(tools, 'postcompilation', result.tools = _.union(result.tools, await Promise.all(this.runToolsOfType(tools, 'postcompilation',
this.getCompilationInfo(key, result)))); this.getCompilationInfo(key, result, customBuildPath))));
result = this.extractDeviceCode(result, filters); result = this.extractDeviceCode(result, filters);

View File

@@ -32,9 +32,12 @@ import {
export class ClientStateNormalizer { export class ClientStateNormalizer {
constructor() { constructor() {
this.normalized = new ClientState(); this.normalized = new ClientState();
this.rootContent = null;
} }
fromGoldenLayoutContent(content) { fromGoldenLayoutContent(content) {
if (!this.rootContent) this.rootContent = content;
for (const component of content) { for (const component of content) {
this.fromGoldenLayoutComponent(component); this.fromGoldenLayoutComponent(component);
} }
@@ -42,6 +45,7 @@ export class ClientStateNormalizer {
setFilterSettingsFromComponent(compiler, component) { setFilterSettingsFromComponent(compiler, component) {
compiler.filters.binary = component.componentState.filters.binary; compiler.filters.binary = component.componentState.filters.binary;
compiler.filters.execute = component.componentState.filters.execute;
compiler.filters.labels = component.componentState.filters.labels; compiler.filters.labels = component.componentState.filters.labels;
compiler.filters.directives = component.componentState.filters.directives; compiler.filters.directives = component.componentState.filters.directives;
compiler.filters.commentOnly = component.componentState.filters.commentOnly; compiler.filters.commentOnly = component.componentState.filters.commentOnly;
@@ -50,24 +54,121 @@ export class ClientStateNormalizer {
compiler.filters.demangle = component.componentState.filters.demangle; compiler.filters.demangle = component.componentState.filters.demangle;
} }
findCompilerInGoldenLayout(content, id) {
let result;
for (const component of content) {
if (component.componentName === 'compiler') {
if (component.componentState.id === id) {
return component;
}
} else if (component.content && component.content.length > 0) {
result = this.findCompilerInGoldenLayout(component.content, id);
if (result) break;
}
}
return result;
}
findOrCreateSessionFromEditorOrCompiler(editorId, compilerId) {
let session;
if (editorId) {
session = this.normalized.findOrCreateSession(editorId);
} else {
const glCompiler = this.findCompilerInGoldenLayout(this.rootContent, compilerId);
if (glCompiler) {
if (glCompiler.componentState.source) {
session = this.normalized.findOrCreateSession(glCompiler.componentState.source);
}
}
}
return session;
}
addSpecialOutputToCompiler(compilerId, name, editorId) {
const glCompiler = this.findCompilerInGoldenLayout(this.rootContent, compilerId);
if (glCompiler) {
let compiler;
if (glCompiler.componentState.source) {
const session = this.normalized.findOrCreateSession(glCompiler.componentState.source);
compiler = session.findOrCreateCompiler(compilerId);
} else if (glCompiler.componentState.tree) {
const tree = this.normalized.findOrCreateTree(glCompiler.componentState.tree);
compiler = tree.findOrCreateCompiler(compilerId);
}
compiler.specialoutputs.push(name);
} else if (editorId) {
const session = this.normalized.findOrCreateSession(editorId);
const compiler = session.findOrCreateCompiler(compilerId);
compiler.specialoutputs.push(name);
}
}
addToolToCompiler(compilerId, editorId, toolId, args, stdin) {
const glCompiler = this.findCompilerInGoldenLayout(this.rootContent, compilerId);
if (glCompiler) {
let compiler;
if (glCompiler.componentState.source) {
const session = this.normalized.findOrCreateSession(glCompiler.componentState.source);
compiler = session.findOrCreateCompiler(compilerId);
} else if (glCompiler.componentState.tree) {
const tree = this.normalized.findOrCreateTree(glCompiler.componentState.tree);
compiler = tree.findOrCreateCompiler(compilerId);
}
compiler.tools.push({
id: toolId,
args: args,
stdin: stdin,
});
}
}
fromGoldenLayoutComponent(component) { fromGoldenLayoutComponent(component) {
if (component.componentName === 'codeEditor') { if (component.componentName === 'tree') {
const tree = this.normalized.findOrCreateTree(component.componentState.id);
tree.fromJsonData(component.componentState);
} else if (component.componentName === 'codeEditor') {
const session = this.normalized.findOrCreateSession(component.componentState.id); const session = this.normalized.findOrCreateSession(component.componentState.id);
session.language = component.componentState.lang; session.language = component.componentState.lang;
session.source = component.componentState.source; session.source = component.componentState.source;
if (component.componentState.filename)
session.filename = component.componentState.filename;
} else if (component.componentName === 'compiler') { } else if (component.componentName === 'compiler') {
const session = this.normalized.findOrCreateSession(component.componentState.source); let compiler;
if (component.componentState.id) {
if (component.componentState.source) {
const session = this.normalized.findOrCreateSession(component.componentState.source);
compiler = session.findOrCreateCompiler(component.componentState.id);
} else if (component.componentState.tree) {
const tree = this.normalized.findOrCreateTree(component.componentState.tree);
compiler = tree.findOrCreateCompiler(component.componentState.id);
} else {
return;
}
} else {
compiler = new ClientStateCompiler();
if (component.componentState.source) {
const session = this.normalized.findOrCreateSession(component.componentState.source);
session.compilers.push(compiler);
this.normalized.numberCompilersIfNeeded(session, this.normalized.getNextCompilerId());
} else if (component.componentState.tree) {
const tree = this.normalized.findOrCreateTree(component.componentState.tree);
tree.compilers.push(compiler);
} else {
return;
}
}
const compiler = new ClientStateCompiler();
compiler.id = component.componentState.compiler; compiler.id = component.componentState.compiler;
compiler.options = component.componentState.options; compiler.options = component.componentState.options;
compiler.libs = component.componentState.libs; compiler.libs = component.componentState.libs;
this.setFilterSettingsFromComponent(compiler, component); this.setFilterSettingsFromComponent(compiler, component);
session.compilers.push(compiler);
} else if (component.componentName === 'executor') { } else if (component.componentName === 'executor') {
const session = this.normalized.findOrCreateSession(component.componentState.source);
const executor = new ClientStateExecutor(); const executor = new ClientStateExecutor();
executor.compiler.id = component.componentState.compiler; executor.compiler.id = component.componentState.compiler;
executor.compiler.options = component.componentState.options; executor.compiler.options = component.componentState.options;
@@ -81,49 +182,63 @@ export class ClientStateNormalizer {
if (component.componentState.wrap) if (component.componentState.wrap)
executor.wrap = true; executor.wrap = true;
session.executors.push(executor); if (component.componentState.source) {
const session = this.normalized.findOrCreateSession(component.componentState.source);
session.executors.push(executor);
} else if (component.componentState.tree) {
const tree = this.normalized.findOrCreateTree(component.componentState.tree);
tree.executors.push(executor);
}
} else if (component.componentName === 'ast') { } else if (component.componentName === 'ast') {
const session = this.normalized.findOrCreateSession(component.componentState.editorid); this.addSpecialOutputToCompiler(component.componentState.id, 'ast',
const compiler = session.findOrCreateCompiler(component.componentState.id); component.componentState.editorid);
compiler.specialoutputs.push('ast');
} else if (component.componentName === 'opt') { } else if (component.componentName === 'opt') {
const session = this.normalized.findOrCreateSession(component.componentState.editorid); this.addSpecialOutputToCompiler(component.componentState.id, 'opt',
const compiler = session.findOrCreateCompiler(component.componentState.id); component.componentState.editorid);
compiler.specialoutputs.push('opt');
} else if (component.componentName === 'cfg') { } else if (component.componentName === 'cfg') {
const session = this.normalized.findOrCreateSession(component.componentState.editorid); this.addSpecialOutputToCompiler(component.componentState.id, 'cfg',
const compiler = session.findOrCreateCompiler(component.componentState.id); component.componentState.editorid);
compiler.specialoutputs.push('cfg');
} else if (component.componentName === 'gccdump') { } else if (component.componentName === 'gccdump') {
const session = this.normalized.findOrCreateSession(component.componentState._editorid); this.addSpecialOutputToCompiler(component.componentState._compilerid, 'gccdump',
const compiler = session.findOrCreateCompiler(component.componentState._compilerid); component.componentState._editorid);
compiler.specialoutputs.push('gccdump');
} else if (component.componentName === 'output') { } else if (component.componentName === 'output') {
const session = this.normalized.findOrCreateSession(component.componentState.editor); this.addSpecialOutputToCompiler(component.componentState.compiler, 'compilerOutput',
const compiler = session.findOrCreateCompiler(component.componentState.compiler); component.componentState.editor);
compiler.specialoutputs.push('compilerOutput');
} else if (component.componentName === 'conformance') { } else if (component.componentName === 'conformance') {
const session = this.normalized.findOrCreateSession(component.componentState.editorid); const session = this.normalized.findOrCreateSession(component.componentState.editorid);
session.conformanceview = new ClientStateConformanceView(component.componentState); session.conformanceview = new ClientStateConformanceView(component.componentState);
} else if (component.componentName === 'tool') { } else if (component.componentName === 'tool') {
const session = this.normalized.findOrCreateSession(component.componentState.editor); this.addToolToCompiler(component.componentState.compiler, component.componentState.editor,
const compiler = session.findOrCreateCompiler(component.componentState.compiler); component.componentState.toolId, component.componentState.args,
component.componentState.stdin);
compiler.tools.push({
id: component.componentState.toolId,
args: component.componentState.args,
});
} else if (component.content) { } else if (component.content) {
this.fromGoldenLayoutContent(component.content); this.fromGoldenLayoutContent(component.content);
} }
this.fixFilesInTrees();
}
fixFilesInTrees() {
for (const tree of this.normalized.trees) {
tree.files = tree.files.filter((file) => file.isIncluded);
for (const file of tree.files) {
if (file.editorId) {
const session = this.normalized.findSessionById(file.editorId);
if (session) {
file.content = session.source;
file.filename = session.filename;
}
}
}
}
} }
fromGoldenLayout(globj) { fromGoldenLayout(globj) {
this.rootContent = globj.content;
if (globj.content) { if (globj.content) {
this.fromGoldenLayoutContent(globj.content); this.fromGoldenLayoutContent(globj.content);
} }
@@ -132,7 +247,7 @@ export class ClientStateNormalizer {
class GoldenLayoutComponents { class GoldenLayoutComponents {
createSourceComponent(session, customSessionId) { createSourceComponent(session, customSessionId) {
return { const editor = {
type: 'component', type: 'component',
componentName: 'codeEditor', componentName: 'codeEditor',
componentState: { componentState: {
@@ -143,6 +258,37 @@ class GoldenLayoutComponents {
isClosable: true, isClosable: true,
reorderEnabled: true, reorderEnabled: true,
}; };
if (session.filename) {
editor.title = session.filename;
editor.componentState.filename = session.filename;
}
return editor;
}
createTreeComponent(tree, customTreeId) {
const treeComponent = {
type: 'component',
componentName: 'tree',
componentState: {
id: tree.id,
cmakeArgs: tree.cmakeArgs,
customOutputFilename: tree.customOutputFilename,
isCMakeProject: tree.isCMakeProject,
compilerLanguageId: tree.compilerLanguageId,
files: tree.files,
newFileId: tree.newFileId,
},
isClosable: true,
reorderEnabled: true,
};
if (customTreeId) {
treeComponent.componentState.id = customTreeId;
}
return treeComponent;
} }
createAstComponent(session, compilerIndex, customSessionId) { createAstComponent(session, compilerIndex, customSessionId) {
@@ -151,7 +297,7 @@ class GoldenLayoutComponents {
componentName: 'ast', componentName: 'ast',
componentState: { componentState: {
id: compilerIndex, id: compilerIndex,
editorid: customSessionId ? customSessionId : session.id, editorid: customSessionId ? customSessionId : (session ? session.id : undefined),
}, },
isClosable: true, isClosable: true,
reorderEnabled: true, reorderEnabled: true,
@@ -164,7 +310,7 @@ class GoldenLayoutComponents {
componentName: 'opt', componentName: 'opt',
componentState: { componentState: {
id: compilerIndex, id: compilerIndex,
editorid: customSessionId ? customSessionId : session.id, editorid: customSessionId ? customSessionId : (session ? session.id : undefined),
}, },
isClosable: true, isClosable: true,
reorderEnabled: true, reorderEnabled: true,
@@ -177,7 +323,7 @@ class GoldenLayoutComponents {
componentName: 'opt', componentName: 'opt',
componentState: { componentState: {
id: compilerIndex, id: compilerIndex,
editorid: customSessionId ? customSessionId : session.id, editorid: customSessionId ? customSessionId : (session ? session.id : undefined),
options: { options: {
navigation: false, navigation: false,
physics: false, physics: false,
@@ -194,7 +340,7 @@ class GoldenLayoutComponents {
componentName: 'gccdump', componentName: 'gccdump',
componentState: { componentState: {
_compilerid: compilerIndex, _compilerid: compilerIndex,
_editorid: customSessionId ? customSessionId : session.id, _editorid: customSessionId ? customSessionId : (session ? session.id : undefined),
}, },
isClosable: true, isClosable: true,
reorderEnabled: true, reorderEnabled: true,
@@ -207,7 +353,7 @@ class GoldenLayoutComponents {
componentName: 'output', componentName: 'output',
componentState: { componentState: {
compiler: compilerIndex, compiler: compilerIndex,
editor: customSessionId ? customSessionId : session.id, editor: customSessionId ? customSessionId : (session ? session.id : undefined),
wrap: false, wrap: false,
fontScale: 14, fontScale: 14,
}, },
@@ -216,15 +362,16 @@ class GoldenLayoutComponents {
}; };
} }
createToolComponent(session, compilerIndex, toolId, args, customSessionId) { createToolComponent(session, compilerIndex, toolId, args, stdin, customSessionId) {
return { return {
type: 'component', type: 'component',
componentName: 'tool', componentName: 'tool',
componentState: { componentState: {
editor: customSessionId ? customSessionId : session.id, editor: customSessionId ? customSessionId : (session ? session.id : undefined),
compiler: compilerIndex, compiler: compilerIndex,
toolId: toolId, toolId: toolId,
args: args, args: args,
stdin: stdin,
}, },
isClosable: true, isClosable: true,
reorderEnabled: true, reorderEnabled: true,
@@ -246,24 +393,20 @@ class GoldenLayoutComponents {
}; };
} }
createCompilerComponent(session, compiler, customSessionId) { copyCompilerFilters(filters) {
return {...filters};
}
createCompilerComponent(session, compiler, customSessionId, idxCompiler) {
return { return {
type: 'component', type: 'component',
componentName: 'compiler', componentName: 'compiler',
componentState: { componentState: {
id: idxCompiler,
compiler: compiler.id, compiler: compiler.id,
source: customSessionId ? customSessionId : session.id, source: customSessionId ? customSessionId : session.id,
options: compiler.options, options: compiler.options,
filters: { filters: this.copyCompilerFilters(compiler.filters),
binary: compiler.filters.binary,
execute: compiler.filters.execute,
labels: compiler.filters.labels,
directives: compiler.filters.directives,
commentOnly: compiler.filters.commentOnly,
trim: compiler.filters.trim,
intel: compiler.filters.intel,
demangle: compiler.filters.demangle,
},
libs: compiler.libs, libs: compiler.libs,
lang: session.language, lang: session.language,
}, },
@@ -272,6 +415,25 @@ class GoldenLayoutComponents {
}; };
} }
createCompilerComponentForTree(tree, compiler, customTreeId, idxCompiler) {
return {
type: 'component',
componentName: 'compiler',
componentState: {
id: idxCompiler,
compiler: compiler.id,
source: undefined,
tree: customTreeId ? customTreeId : tree.id,
options: compiler.options,
filters: this.copyCompilerFilters(compiler.filters),
libs: compiler.libs,
lang: tree.compilerLanguageId,
},
isClosable: true,
reorderEnabled: true,
};
}
createExecutorComponent(session, executor, customSessionId) { createExecutorComponent(session, executor, customSessionId) {
return { return {
type: 'component', type: 'component',
@@ -295,6 +457,30 @@ class GoldenLayoutComponents {
}; };
} }
createExecutorComponentForTree(tree, executor, customTreeId) {
return {
type: 'component',
componentName: 'executor',
componentState: {
compiler: executor.compiler.id,
source: undefined,
tree: customTreeId ? customTreeId : tree.id,
options: executor.compiler.options,
execArgs: executor.arguments,
execStdin: executor.stdin,
libs: executor.compiler.libs,
lang: tree.compilerLanguageId,
compilationPanelShown: executor.compilerVisible,
compilerOutShown: executor.compilerOutputVisible,
argsPanelShown: executor.argumentsVisible,
stdinPanelShown: executor.stdinVisible,
wrap: executor.wrap,
},
isClosable: true,
reorderEnabled: true,
};
}
createDiffComponent(left, right) { createDiffComponent(left, right) {
return { return {
type: 'component', type: 'component',
@@ -325,6 +511,39 @@ class GoldenLayoutComponents {
return component; return component;
} }
createSpecialOutputComponentForTreeCompiler(viewtype, idxCompiler) {
let component = null;
if (viewtype === 'ast') {
component = this.createAstComponent(null, idxCompiler + 1, false);
} else if (viewtype === 'opt') {
component = this.createOptComponent(null, idxCompiler + 1, false);
} else if (viewtype === 'cfg') {
component = this.createCfgComponent(null, idxCompiler + 1, false);
} else if (viewtype === 'gccdump') {
component = this.createGccDumpComponent(null, idxCompiler + 1, false);
} else if (viewtype === 'compilerOutput') {
component = this.createCompilerOutComponent(null, idxCompiler + 1, false);
}
return component;
}
createToolComponentForTreeCompiler(tree, compilerIndex, toolId, args, stdin, customTreeId) {
return {
type: 'component',
componentName: 'tool',
componentState: {
tree: customTreeId ? customTreeId : (tree ? tree.id : undefined),
compiler: compilerIndex,
toolId: toolId,
args: args,
stdin: stdin,
},
isClosable: true,
reorderEnabled: true,
};
}
} }
export class ClientStateGoldenifier extends GoldenLayoutComponents { export class ClientStateGoldenifier extends GoldenLayoutComponents {
@@ -333,6 +552,14 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
this.golden = {}; this.golden = {};
} }
newEmptyStack(width) {
return {
type: 'stack',
width: width,
content: [],
};
}
newStackWithOneComponent(width, component) { newStackWithOneComponent(width, component) {
return { return {
type: 'stack', type: 'stack',
@@ -341,6 +568,12 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
}; };
} }
newTreeFromTree(tree, width) {
return this.newStackWithOneComponent(width,
this.createTreeComponent(tree),
);
}
newSourceStackFromSession(session, width) { newSourceStackFromSession(session, width) {
return this.newStackWithOneComponent(width, return this.newStackWithOneComponent(width,
this.createSourceComponent(session), this.createSourceComponent(session),
@@ -377,9 +610,9 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
); );
} }
newToolStackFromCompiler(session, compilerIndex, toolId, args, width) { newToolStackFromCompiler(session, compilerIndex, toolId, args, stdin, width) {
return this.newStackWithOneComponent(width, return this.newStackWithOneComponent(width,
this.createToolComponent(session, compilerIndex, toolId, args), this.createToolComponent(session, compilerIndex, toolId, args, stdin),
); );
} }
@@ -402,7 +635,7 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
newCompilerStackFromSession(session, compiler, width) { newCompilerStackFromSession(session, compiler, width) {
return this.newStackWithOneComponent(width, return this.newStackWithOneComponent(width,
this.createCompilerComponent(session, compiler), this.createCompilerComponent(session, compiler, false, compiler._internalId),
); );
} }
@@ -479,6 +712,75 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
return gl; return gl;
} }
closeAllEditors(tree) {
for (const file of tree.files) {
file.editorId = -1;
file.isOpen = false;
}
}
getPresentationModeLayoutForTree(state, left) {
const gl = this.getPresentationModeEmptyLayout();
const tree = state.trees[left.tree];
const customTreeId = 1;
this.closeAllEditors(tree);
gl.content[0].content = [
{
type: 'column',
width: 100,
content: [
{
type: 'row',
height: 50,
content: [this.createTreeComponent(tree, customTreeId)],
},
{
type: 'row',
height: 50,
content: [
{
type: 'stack',
width: 100,
content: [],
},
],
},
],
}];
let stack = gl.content[0].content[0].content[1].content[0];
for (let idxCompiler = 0; idxCompiler < tree.compilers.length; idxCompiler++) {
const compiler = tree.compilers[idxCompiler];
stack.content.push(
this.createCompilerComponentForTree(tree, compiler, customTreeId, idxCompiler + 1),
);
for (const viewtype of compiler.specialoutputs) {
stack.content.push(
this.createSpecialOutputComponentForTreeCompiler(viewtype, idxCompiler),
);
}
for (const tool of compiler.tools) {
stack.content.push(
this.createToolComponentForTreeCompiler(tree, idxCompiler + 1, tool.id,
tool.args, tool.stdin),
);
}
}
for (let idxExecutor = 0; idxExecutor < tree.executors.length; idxExecutor++) {
stack.content.push(
this.createExecutorComponentForTree(tree, tree.executors[idxExecutor], customTreeId),
);
}
return gl;
}
getPresentationModeLayoutForComparisonSlide(state, left, right) { getPresentationModeLayoutForComparisonSlide(state, left, right) {
const gl = this.getPresentationModeEmptyLayout(); const gl = this.getPresentationModeEmptyLayout();
gl.content[0].content = [ gl.content[0].content = [
@@ -529,7 +831,7 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
for (const tool of compiler.tools) { for (const tool of compiler.tools) {
stack.content.push( stack.content.push(
this.createToolComponent(session, idxCompiler + 1, tool.id, tool.args, customSessionId), this.createToolComponent(false, idxCompiler + 1, tool.id, tool.args, tool.stdin, customSessionId),
); );
} }
} }
@@ -546,6 +848,17 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
generatePresentationModeMobileViewerSlides(state) { generatePresentationModeMobileViewerSlides(state) {
const slides = []; const slides = [];
if (state.trees.length > 0) {
for (var idxTree = 0; idxTree < state.trees.length; idxTree++) {
const gl = this.getPresentationModeLayoutForTree(state, {
tree: idxTree,
});
slides.push(gl);
}
return slides;
}
for (var idxSession = 0; idxSession < state.sessions.length; idxSession++) { for (var idxSession = 0; idxSession < state.sessions.length; idxSession++) {
const gl = this.getPresentationModeLayoutForSource(state, { const gl = this.getPresentationModeLayoutForSource(state, {
session: idxSession, session: idxSession,
@@ -557,6 +870,29 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
return slides; return slides;
} }
treeLayoutFromClientstate(state) {
const firstTree = state.trees[0];
const leftSide = this.newTreeFromTree(firstTree, 25);
const middle = this.newEmptyStack(40);
for (const session of state.sessions) {
middle.content.push(this.createSourceComponent(session));
}
const rightSide = this.newEmptyStack(40);
let idxCompiler = 0;
for (const compiler of firstTree.compilers) {
rightSide.content.push(this.createCompilerComponentForTree(firstTree, compiler));
for (const specialOutput of compiler.specialoutputs) {
rightSide.content.push(this.createSpecialOutputComponentForTreeCompiler(specialOutput, idxCompiler));
}
idxCompiler++;
}
this.golden.content[0].content.push(leftSide, middle, rightSide);
}
fromClientState(state) { fromClientState(state) {
this.golden = { this.golden = {
settings: { settings: {
@@ -600,6 +936,11 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
], ],
}; };
if (state.trees.length > 0) {
this.treeLayoutFromClientstate(state);
return;
}
if (state.sessions.length > 1) { if (state.sessions.length > 1) {
const sessionWidth = 100 / state.sessions.length; const sessionWidth = 100 / state.sessions.length;
@@ -651,7 +992,7 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
for (const tool of compiler.tools) { for (const tool of compiler.tools) {
let stack = this.newToolStackFromCompiler(session, idxCompiler + 1, let stack = this.newToolStackFromCompiler(session, idxCompiler + 1,
tool.id, tool.args, compilerWidth); tool.id, tool.args, tool.stdin, compilerWidth);
this.golden.content[0].content[idxSession].content[1].content.push(stack); this.golden.content[0].content[idxSession].content[1].content.push(stack);
} }
} }
@@ -694,7 +1035,7 @@ export class ClientStateGoldenifier extends GoldenLayoutComponents {
for (const tool of compiler.tools) { for (const tool of compiler.tools) {
let stack = this.newToolStackFromCompiler(session, compiler, idxCompiler + 1, let stack = this.newToolStackFromCompiler(session, compiler, idxCompiler + 1,
tool.id, tool.args, width); tool.id, tool.args, tool.stdin, width);
this.golden.content[0].content.push(stack); this.golden.content[0].content.push(stack);
} }
} }

View File

@@ -50,6 +50,8 @@ export class ClientStateCompilerOptions {
export class ClientStateCompiler { export class ClientStateCompiler {
constructor(jsondata) { constructor(jsondata) {
this._internalid = undefined;
if (jsondata) { if (jsondata) {
this.fromJsonData(jsondata); this.fromJsonData(jsondata);
} else { } else {
@@ -63,6 +65,10 @@ export class ClientStateCompiler {
} }
fromJsonData(jsondata) { fromJsonData(jsondata) {
if (typeof jsondata._internalid !== undefined) {
this._internalid = jsondata._internalid;
}
if (typeof jsondata.id !== 'undefined') { if (typeof jsondata.id !== 'undefined') {
this.id = jsondata.id; this.id = jsondata.id;
} else if (typeof jsondata.compilerId !== 'undefined') { } else if (typeof jsondata.compilerId !== 'undefined') {
@@ -107,6 +113,8 @@ export class ClientStateExecutor {
this.compiler = new ClientStateCompiler(); this.compiler = new ClientStateCompiler();
this.wrap = false; this.wrap = false;
} }
delete this.compiler._internalid;
} }
fromJsonData(jsondata) { fromJsonData(jsondata) {
@@ -140,11 +148,115 @@ export class ClientStateConformanceView {
fromJsonData(jsondata) { fromJsonData(jsondata) {
this.libs = jsondata.libs; this.libs = jsondata.libs;
for (const compilerdata of jsondata.compilers) { for (const compilerdata of jsondata.compilers) {
this.compilers.push(new ClientStateCompiler(compilerdata)); const compiler = new ClientStateCompiler(compilerdata);
delete compiler._internalid;
this.compilers.push(compiler);
} }
} }
} }
export class MultifileFile {
constructor(jsondata) {
this.fileId = 0;
this.isIncluded = false;
this.isOpen = false;
this.isMainSource = false;
this.filename = '';
this.content = '';
this.editorId = -1;
this.langId = 'c++';
if (jsondata) this.fromJsonData(jsondata);
}
fromJsonData(jsondata) {
this.fileId = jsondata.fileId;
this.isIncluded = jsondata.isIncluded;
this.isOpen = jsondata.isOpen;
this.isMainSource = jsondata.isMainSource;
this.filename = jsondata.filename;
this.content = jsondata.content;
this.editorId = jsondata.editorId;
this.langId = jsondata.langId;
}
}
export class ClientStateTree {
constructor(jsondata) {
this.id = 1;
this.cmakeArgs = '';
this.customOutputFilename = '';
this.isCMakeProject = false;
this.compilerLanguageId = 'c++';
this.files = [];
this.newFileId = 1;
this.compilers = [];
this.executors = [];
if (jsondata) this.fromJsonData(jsondata);
}
fromJsonData(jsondata) {
this.id = jsondata.id;
this.cmakeArgs = jsondata.cmakeArgs;
this.customOutputFilename = jsondata.customOutputFilename;
this.isCMakeProject = jsondata.isCMakeProject;
this.compilerLanguageId = jsondata.compilerLanguageId;
let requiresFix = typeof jsondata.newFileId === 'undefined';
for (const file of jsondata.files) {
const newFile = new MultifileFile(file);
this.files.push(newFile);
if (this.newFileId <= newFile.id) {
requiresFix = true;
}
}
if (requiresFix) {
this.newFileId = 1;
for (const file of this.files) {
if (file.id > this.newFileId) {
this.newFileId = file.id + 1;
}
}
} else {
this.newFileId = jsondata.newFileId;
}
if (typeof jsondata.compilers !== 'undefined') {
for (const compilerdata of jsondata.compilers) {
const compiler = new ClientStateCompiler(compilerdata);
if (compiler.id) {
this.compilers.push(compiler);
}
}
}
if (typeof jsondata.executors !== 'undefined') {
for (const executor of jsondata.executors) {
this.executors.push(new ClientStateExecutor(executor));
}
}
}
findOrCreateCompiler(id) {
let foundCompiler;
for (let compiler of this.compilers) {
if (compiler._internalid === id) {
foundCompiler = compiler;
}
}
if (!foundCompiler) {
foundCompiler = new ClientStateCompiler();
foundCompiler._internalid = id;
this.compilers.push(foundCompiler);
}
return foundCompiler;
}
}
export class ClientStateSession { export class ClientStateSession {
constructor(jsondata) { constructor(jsondata) {
this.id = false; this.id = false;
@@ -153,6 +265,7 @@ export class ClientStateSession {
this.conformanceview = false; this.conformanceview = false;
this.compilers = []; this.compilers = [];
this.executors = []; this.executors = [];
this.filename = undefined;
if (jsondata) this.fromJsonData(jsondata); if (jsondata) this.fromJsonData(jsondata);
} }
@@ -181,21 +294,27 @@ export class ClientStateSession {
this.executors.push(new ClientStateExecutor(executor)); this.executors.push(new ClientStateExecutor(executor));
} }
} }
if (typeof jsondata.filename !== 'undefined') {
this.filename = jsondata.filename;
}
} }
findOrCreateCompiler(id) { findOrCreateCompiler(id) {
let compiler = null; let foundCompiler;
if (id <= this.compilers.length) { for (let compiler of this.compilers) {
compiler = this.compilers[id - 1]; if (compiler._internalid === id) {
return compiler; foundCompiler = compiler;
}
} }
for (let idx = this.compilers.length; idx < id; idx++) { if (!foundCompiler) {
compiler = new ClientStateCompiler(); foundCompiler = new ClientStateCompiler();
this.compilers.push(compiler); foundCompiler._internalid = id;
this.compilers.push(foundCompiler);
} }
return compiler; return foundCompiler;
} }
countNumberOfSpecialOutputsAndTools() { countNumberOfSpecialOutputsAndTools() {
@@ -215,21 +334,63 @@ export class ClientStateSession {
export class ClientState { export class ClientState {
constructor(jsondata) { constructor(jsondata) {
this.sessions = []; this.sessions = [];
this.trees = [];
if (jsondata) this.fromJsonData(jsondata); if (jsondata) this.fromJsonData(jsondata);
} }
fromJsonData(jsondata) { fromJsonData(jsondata) {
for (const sessiondata of jsondata.sessions) { for (const sessiondata of jsondata.sessions) {
this.sessions.push(new ClientStateSession(sessiondata)); const session = new ClientStateSession(sessiondata);
this.numberCompilersIfNeeded(session);
this.sessions.push(session);
}
if (jsondata.trees) {
for (const treedata of jsondata.trees) {
this.trees.push(new ClientStateTree(treedata));
}
}
}
getNextCompilerId() {
let nextId = 1;
for (const session of this.sessions) {
for (const compiler of session.compilers) {
if (compiler._internalid && compiler._internalid >= nextId) {
nextId = compiler._internalid + 1;
}
}
}
return nextId;
}
numberCompilersIfNeeded(session, startAt) {
let id = startAt;
let someIdsNeedNumbering = false;
for (const compiler of session.compilers) {
if (compiler._internalid) {
if (compiler._internalid >= id) {
id = compiler._internalid + 1;
}
} else {
someIdsNeedNumbering = true;
}
}
if (someIdsNeedNumbering) {
for (const compiler of session.compilers) {
if (!compiler._internalid) {
compiler._internalid = id;
id++;
}
}
} }
} }
findSessionById(id) { findSessionById(id) {
let session = null; for (const session of this.sessions) {
for (let idxSession = 0; idxSession < this.sessions.length; idxSession++) {
session = this.sessions[idxSession];
if (session.id === id) { if (session.id === id) {
return session; return session;
} }
@@ -238,6 +399,19 @@ export class ClientState {
return false; return false;
} }
findTreeById(id) {
let tree = null;
for (let idxTree = 0; idxTree < this.trees.length; idxTree++) {
tree = this.trees[idxTree];
if (tree.id === id) {
return tree;
}
}
return false;
}
findOrCreateSession(id) { findOrCreateSession(id) {
let session = this.findSessionById(id); let session = this.findSessionById(id);
if (session) return session; if (session) return session;
@@ -248,4 +422,15 @@ export class ClientState {
return session; return session;
} }
findOrCreateTree(id) {
let tree = this.findTreeById(id);
if (tree) return tree;
tree = new ClientStateTree();
tree.id = id;
this.trees.push(tree);
return tree;
}
} }

View File

@@ -43,11 +43,14 @@ export class OCamlCompiler extends BaseCompiler {
return options; return options;
} }
getOutputFilename(dirPath) { getOutputFilename(dirPath, outputFilebase, key) {
return path.join(dirPath, `${path.basename(this.compileFilename, this.lang.extensions[0])}.s`); const filename = key.backendOptions.customOutputFilename ||
`${path.basename(this.compileFilename, this.lang.extensions[0])}.s`;
return path.join(dirPath, filename);
} }
getExecutableFilename(dirPath, outputFilebase) { getExecutableFilename(dirPath, outputFilebase, key) {
return path.join(dirPath, outputFilebase); const filename = key.backendOptions.customOutputFilename || outputFilebase;
return path.join(dirPath, filename);
} }
} }

View File

@@ -183,10 +183,19 @@ export function getNsJailOptions(configName, command, args, options) {
const homeDir = '/app'; const homeDir = '/app';
let filenameTransform; let filenameTransform;
if (options.customCwd) { if (options.customCwd) {
jailingOptions.push( if (options.appHome) {
'--cwd', homeDir, const relativeCwd = path.join(homeDir, path.relative(options.appHome, options.customCwd));
'--bindmount', `${options.customCwd}:${homeDir}`, jailingOptions.push(
); '--cwd', relativeCwd,
'--bindmount', `${options.appHome}:${homeDir}`,
);
} else {
jailingOptions.push(
'--cwd', homeDir,
'--bindmount', `${options.customCwd}:${homeDir}`,
);
}
const replacement = options.customCwd; const replacement = options.customCwd;
filenameTransform = opt => opt.replace(replacement, '/app'); filenameTransform = opt => opt.replace(replacement, '/app');
args = args.map(filenameTransform); args = args.map(filenameTransform);
@@ -213,16 +222,27 @@ export function getNsJailOptions(configName, command, args, options) {
}; };
} }
export function getSandboxNsjailOptions(command, args, options) {
// If we already had a custom cwd, use that.
if (options.customCwd) {
let relativeCommand = command;
if (command.startsWith(options.customCwd)) {
relativeCommand = path.relative(options.customCwd, command);
if (path.dirname(relativeCommand) === '.') {
relativeCommand = `./${relativeCommand}`;
}
}
return getNsJailOptions('sandbox', relativeCommand, args, options);
}
// Else, assume the executable should be run as `./exec` and run it from its directory.
options = {...options, customCwd: path.dirname(command)};
return getNsJailOptions('sandbox', `./${path.basename(command)}`, args, options);
}
function sandboxNsjail(command, args, options) { function sandboxNsjail(command, args, options) {
logger.info('Sandbox execution via nsjail', {command, args}); logger.info('Sandbox execution via nsjail', {command, args});
const nsOpts = (() => { const nsOpts = getSandboxNsjailOptions(command, args, options);
// If we already had a custom cwd, use that.
if (options.customCwd)
return getNsJailOptions('sandbox', command, args, options);
// Else, assume the executable should be run as `./exec` and run it from its directory.
options = {...options, customCwd: path.dirname(command)};
return getNsJailOptions('sandbox', `./${path.basename(command)}`, args, options);
})();
return executeDirect( return executeDirect(
execProps('nsjail'), execProps('nsjail'),
nsOpts.args, nsOpts.args,

View File

@@ -53,7 +53,7 @@ export const languages = {
'c++': { 'c++': {
name: 'C++', name: 'C++',
monaco: 'cppp', monaco: 'cppp',
extensions: ['.cpp', '.cxx', '.h', '.hpp', '.hxx', '.c'], extensions: ['.cpp', '.cxx', '.h', '.hpp', '.hxx', '.c', '.cc'],
alias: ['gcc', 'cpp'], alias: ['gcc', 'cpp'],
previewFilter: /^\s*#include/, previewFilter: /^\s*#include/,
formatter: 'clangformat', formatter: 'clangformat',
@@ -245,6 +245,12 @@ export const languages = {
alias: [], alias: [],
monacoDisassembly: 'asmruby', monacoDisassembly: 'asmruby',
}, },
cmake: {
name: 'CMake',
monaco: 'cmake',
extensions: ['.txt'],
alias: [],
},
}; };
_.each(languages, (lang, key) => { _.each(languages, (lang, key) => {

View File

@@ -77,6 +77,15 @@ export function expandTabs(line) {
}); });
} }
export function maskRootdir(filepath) {
if (filepath) {
// todo: make this compatible with local installations and windows etc
return filepath.replace(/^\/tmp\/compiler-explorer-compiler[\w\d-.]*\//, '/app/').replace(/^\/app\//, '');
} else {
return filepath;
}
}
/*** /***
* @typedef {Object} lineTag * @typedef {Object} lineTag
* @property {string} text * @property {string} text
@@ -116,18 +125,33 @@ function _parseOutputLine(line, inputFilename, pathPrefix) {
*/ */
export function parseOutput(lines, inputFilename, pathPrefix) { export function parseOutput(lines, inputFilename, pathPrefix) {
const re = /^\s*<source>[(:](\d+)(:?,?(\d+):?)?[):]*\s*(.*)/; const re = /^\s*<source>[(:](\d+)(:?,?(\d+):?)?[):]*\s*(.*)/;
const reWithFilename = /^\s*([\w.]*)[(:](\d+)(:?,?(\d+):?)?[):]*\s*(.*)/;
const result = []; const result = [];
eachLine(lines, line => { eachLine(lines, line => {
line = _parseOutputLine(line, inputFilename, pathPrefix); line = _parseOutputLine(line, inputFilename, pathPrefix);
if (!inputFilename) {
line = maskRootdir(line);
}
if (line !== null) { if (line !== null) {
const lineObj = {text: line}; const lineObj = {text: line};
const match = line.replace(ansiColoursRe, '').match(re); const filteredline = line.replace(ansiColoursRe, '');
let match = filteredline.match(re);
if (match) { if (match) {
lineObj.tag = { lineObj.tag = {
line: parseInt(match[1]), line: parseInt(match[1]),
column: parseInt(match[3] || '0'), column: parseInt(match[3] || '0'),
text: match[4].trim(), text: match[4].trim(),
}; };
} else {
match = filteredline.match(reWithFilename);
if (match) {
lineObj.tag = {
file: match[1],
line: parseInt(match[2]),
column: parseInt(match[4] || '0'),
text: match[5].trim(),
};
}
} }
result.push(lineObj); result.push(lineObj);
} }
@@ -422,3 +446,12 @@ export async function fileExists(filename) {
return false; return false;
} }
} }
export async function dirExists(dir) {
try {
const stat = await fs.stat(dir);
return stat.isDirectory();
} catch {
return false;
}
}

641
package-lock.json generated
View File

@@ -43,106 +43,18 @@
"source-map": "^0.5.0" "source-map": "^0.5.0"
}, },
"dependencies": { "dependencies": {
"@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.10.4"
}
},
"@babel/generator": {
"version": "7.11.6",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz",
"integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==",
"dev": true,
"requires": {
"@babel/types": "^7.11.5",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
"integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
"dev": true,
"requires": {
"@babel/helper-get-function-arity": "^7.10.4",
"@babel/template": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/helper-get-function-arity": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
"integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
"dev": true,
"requires": {
"@babel/types": "^7.10.4"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.11.0",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
"integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
"dev": true,
"requires": {
"@babel/types": "^7.11.0"
}
},
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
"integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
"dev": true "dev": true
}, },
"@babel/highlight": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": { "@babel/parser": {
"version": "7.11.5", "version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz",
"integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==",
"dev": true "dev": true
}, },
"@babel/template": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
"integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/parser": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/traverse": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz",
"integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/generator": "^7.11.5",
"@babel/helper-function-name": "^7.10.4",
"@babel/helper-split-export-declaration": "^7.11.0",
"@babel/parser": "^7.11.5",
"@babel/types": "^7.11.5",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": { "@babel/types": {
"version": "7.11.5", "version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
@@ -183,12 +95,6 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true "dev": true
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -347,12 +253,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -381,12 +281,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -405,58 +299,12 @@
"lodash": "^4.17.19" "lodash": "^4.17.19"
}, },
"dependencies": { "dependencies": {
"@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.10.4"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.11.0",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
"integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
"dev": true,
"requires": {
"@babel/types": "^7.11.0"
}
},
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
"integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
"dev": true "dev": true
}, },
"@babel/highlight": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz",
"integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==",
"dev": true
},
"@babel/template": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
"integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/parser": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/types": { "@babel/types": {
"version": "7.11.5", "version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
@@ -467,12 +315,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -501,12 +343,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -522,106 +358,12 @@
"@babel/types": "^7.10.4" "@babel/types": "^7.10.4"
}, },
"dependencies": { "dependencies": {
"@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.10.4"
}
},
"@babel/generator": {
"version": "7.11.6",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz",
"integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==",
"dev": true,
"requires": {
"@babel/types": "^7.11.5",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
"integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
"dev": true,
"requires": {
"@babel/helper-get-function-arity": "^7.10.4",
"@babel/template": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/helper-get-function-arity": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
"integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
"dev": true,
"requires": {
"@babel/types": "^7.10.4"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.11.0",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
"integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
"dev": true,
"requires": {
"@babel/types": "^7.11.0"
}
},
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
"integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
"dev": true "dev": true
}, },
"@babel/highlight": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz",
"integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==",
"dev": true
},
"@babel/template": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
"integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/parser": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/traverse": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz",
"integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/generator": "^7.11.5",
"@babel/helper-function-name": "^7.10.4",
"@babel/helper-split-export-declaration": "^7.11.0",
"@babel/parser": "^7.11.5",
"@babel/types": "^7.11.5",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": { "@babel/types": {
"version": "7.11.5", "version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
@@ -632,27 +374,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"debug": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -666,49 +387,12 @@
"@babel/types": "^7.10.4" "@babel/types": "^7.10.4"
}, },
"dependencies": { "dependencies": {
"@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.10.4"
}
},
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
"integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
"dev": true "dev": true
}, },
"@babel/highlight": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz",
"integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==",
"dev": true
},
"@babel/template": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
"integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/parser": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/types": { "@babel/types": {
"version": "7.11.5", "version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
@@ -719,12 +403,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -777,106 +455,12 @@
"@babel/types": "^7.10.4" "@babel/types": "^7.10.4"
}, },
"dependencies": { "dependencies": {
"@babel/code-frame": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.10.4"
}
},
"@babel/generator": {
"version": "7.11.6",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz",
"integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==",
"dev": true,
"requires": {
"@babel/types": "^7.11.5",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
"integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
"dev": true,
"requires": {
"@babel/helper-get-function-arity": "^7.10.4",
"@babel/template": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/helper-get-function-arity": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
"integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
"dev": true,
"requires": {
"@babel/types": "^7.10.4"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.11.0",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
"integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
"dev": true,
"requires": {
"@babel/types": "^7.11.0"
}
},
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
"integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
"dev": true "dev": true
}, },
"@babel/highlight": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz",
"integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==",
"dev": true
},
"@babel/template": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
"integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/parser": "^7.10.4",
"@babel/types": "^7.10.4"
}
},
"@babel/traverse": {
"version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz",
"integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/generator": "^7.11.5",
"@babel/helper-function-name": "^7.10.4",
"@babel/helper-split-export-declaration": "^7.11.0",
"@babel/parser": "^7.11.5",
"@babel/types": "^7.11.5",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.19"
}
},
"@babel/types": { "@babel/types": {
"version": "7.11.5", "version": "7.11.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
@@ -887,27 +471,6 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
},
"debug": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
} }
} }
}, },
@@ -1033,13 +596,6 @@
"@babel/helper-validator-identifier": "^7.9.5", "@babel/helper-validator-identifier": "^7.9.5",
"lodash": "^4.17.13", "lodash": "^4.17.13",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
},
"dependencies": {
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
}
} }
}, },
"@dabh/diagnostics": { "@dabh/diagnostics": {
@@ -2369,12 +1925,6 @@
"argparse": "^2.0.1" "argparse": "^2.0.1"
} }
}, },
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"mkdirp": { "mkdirp": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -2389,27 +1939,6 @@
"requires": { "requires": {
"has-flag": "^4.0.0" "has-flag": "^4.0.0"
} }
},
"temp": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz",
"integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==",
"dev": true,
"requires": {
"mkdirp": "^0.5.1",
"rimraf": "~2.6.2"
},
"dependencies": {
"mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
}
}
}
} }
} }
}, },
@@ -2771,9 +2300,9 @@
"dev": true "dev": true
}, },
"aws-sdk": { "aws-sdk": {
"version": "2.917.0", "version": "2.918.0",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.917.0.tgz", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.918.0.tgz",
"integrity": "sha512-9dYbmj2X6AcBOVrjajJbfNTTzQUJ88ZJZ0qpg/nTGn12BDAEEDY0h+woOkz5vF7+ZEHnAPxQHdsyOApFLqeiXQ==", "integrity": "sha512-ZjWanOA1Zo664EyWLCnbUlkwCjoRPmSIMx529W4gk1418qo3oCEcvUy1HeibGGIClYnZZ7J4FMQvVDm2+JtHLQ==",
"requires": { "requires": {
"buffer": "4.9.2", "buffer": "4.9.2",
"events": "1.1.1", "events": "1.1.1",
@@ -4949,13 +4478,13 @@
} }
}, },
"deep-equal-in-any-order": { "deep-equal-in-any-order": {
"version": "1.1.4", "version": "1.1.6",
"resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-1.1.4.tgz", "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-1.1.6.tgz",
"integrity": "sha512-yigFzn8ynCxq7ECTXiH/sS3as0QZaXDeSY6QmXPA67C+TwfilSh2AkNMrmmCYp+dh/UcA7UHTmpC7qwT4zEOLA==", "integrity": "sha512-8/mJXBxWouNzoEUxwHt27tf0UpldfV6TSmcVJqwxcyg6HsO6m68TzoRON53dQSvp4HrjrRF3N8Sot7ZJG9a7Ug==",
"dev": true, "dev": true,
"requires": { "requires": {
"lodash.mapvalues": "^4.6.0", "lodash.mapvalues": "^4.6.0",
"sort-any": "^1.2.2" "sort-any": "^1.2.3"
} }
}, },
"deep-extend": { "deep-extend": {
@@ -5690,42 +5219,6 @@
"@babel/highlight": "^7.10.4" "@babel/highlight": "^7.10.4"
} }
}, },
"@babel/helper-validator-identifier": {
"version": "7.14.0",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
"integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==",
"dev": true
},
"@babel/highlight": {
"version": "7.14.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
"integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.0",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
},
"dependencies": {
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
}
}
},
"chalk": { "chalk": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
@@ -5899,12 +5392,6 @@
"supports-hyperlinks": "^2.0.0" "supports-hyperlinks": "^2.0.0"
}, },
"dependencies": { "dependencies": {
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
"ansi-styles": { "ansi-styles": {
"version": "4.2.1", "version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
@@ -5969,15 +5456,6 @@
"strip-ansi": "^6.0.0" "strip-ansi": "^6.0.0"
} }
}, },
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.0"
}
},
"supports-color": { "supports-color": {
"version": "7.1.0", "version": "7.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
@@ -6107,23 +5585,6 @@
"requires": { "requires": {
"eslint-utils": "^2.0.0", "eslint-utils": "^2.0.0",
"regexpp": "^3.0.0" "regexpp": "^3.0.0"
},
"dependencies": {
"eslint-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
"dev": true,
"requires": {
"eslint-visitor-keys": "^1.1.0"
}
},
"regexpp": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
"integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
"dev": true
}
} }
}, },
"eslint-plugin-header": { "eslint-plugin-header": {
@@ -6132,9 +5593,9 @@
"integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==" "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg=="
}, },
"eslint-plugin-import": { "eslint-plugin-import": {
"version": "2.23.3", "version": "2.23.4",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.3.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz",
"integrity": "sha512-wDxdYbSB55F7T5CC7ucDjY641VvKmlRwT0Vxh7PkY1mI4rclVRFWYfsrjDgZvwYYDZ5ee0ZtfFKXowWjqvEoRQ==", "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"array-includes": "^3.1.3", "array-includes": "^3.1.3",
@@ -6311,15 +5772,6 @@
"semver": "^6.1.0" "semver": "^6.1.0"
}, },
"dependencies": { "dependencies": {
"eslint-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
"dev": true,
"requires": {
"eslint-visitor-keys": "^1.1.0"
}
},
"ignore": { "ignore": {
"version": "5.1.8", "version": "5.1.8",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
@@ -7410,11 +6862,6 @@
"universalify": "^2.0.0" "universalify": "^2.0.0"
}, },
"dependencies": { "dependencies": {
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
},
"jsonfile": { "jsonfile": {
"version": "6.1.0", "version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -7757,10 +7204,9 @@
} }
}, },
"graceful-fs": { "graceful-fs": {
"version": "4.1.15", "version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
"dev": true
}, },
"growl": { "growl": {
"version": "1.10.5", "version": "1.10.5",
@@ -8248,6 +7694,11 @@
"minimatch": "^3.0.4" "minimatch": "^3.0.4"
} }
}, },
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"import-fresh": { "import-fresh": {
"version": "3.3.0", "version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -9086,6 +8537,17 @@
"promise": "^7.0.1" "promise": "^7.0.1"
} }
}, },
"jszip": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz",
"integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==",
"requires": {
"lie": "~3.3.0",
"pako": "~1.0.2",
"readable-stream": "~2.3.6",
"set-immediate-shim": "~1.0.1"
}
},
"just-extend": { "just-extend": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz",
@@ -9164,6 +8626,14 @@
"type-check": "~0.4.0" "type-check": "~0.4.0"
} }
}, },
"lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"requires": {
"immediate": "~3.0.5"
}
},
"lines-and-columns": { "lines-and-columns": {
"version": "1.1.6", "version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -9993,9 +9463,9 @@
} }
}, },
"monaco-vim": { "monaco-vim": {
"version": "0.1.14", "version": "0.1.15",
"resolved": "https://registry.npmjs.org/monaco-vim/-/monaco-vim-0.1.14.tgz", "resolved": "https://registry.npmjs.org/monaco-vim/-/monaco-vim-0.1.15.tgz",
"integrity": "sha512-siSYnbUZ8jcrB3mHoRWJUbfdLxh39pXz0heD4ERC81/ZAx1KNgfchM22pQN/pRTsDU+2bRn5h3v+vdVa6dpn1A==" "integrity": "sha512-n8pcRikICk67y90tYHiHfsE/eHHjDsZUZ5xiDjPfsgis+AoXiNC6Gc2JQWyig5/c2m94X0oCr9/J5Sp1mupT1A=="
}, },
"morgan": { "morgan": {
"version": "1.10.0", "version": "1.10.0",
@@ -11157,8 +10627,7 @@
"pako": { "pako": {
"version": "1.0.11", "version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
"dev": true
}, },
"parallel-transform": { "parallel-transform": {
"version": "1.2.0", "version": "1.2.0",
@@ -13205,6 +12674,11 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
}, },
"set-immediate-shim": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
"integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
},
"set-value": { "set-value": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -13584,9 +13058,9 @@
} }
}, },
"sort-any": { "sort-any": {
"version": "1.2.3", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/sort-any/-/sort-any-1.2.3.tgz", "resolved": "https://registry.npmjs.org/sort-any/-/sort-any-1.2.5.tgz",
"integrity": "sha512-yJLpmCgDOu7Z6XS6ofzcKRy/Id8yfGB8KkzC7oKAk1F7P3jPWEU8GMxBJWDo5fKp71JYY1bJ8tmaHBfoTx+y8w==", "integrity": "sha512-Dac7ma4LV1oS3vefzbaqxVVae7n4LcOP4SDY2tECBOJT2BoQFB9XC7IgC33P+gYsJH6HUhRNyQGdB/f2KNKW+g==",
"dev": true, "dev": true,
"requires": { "requires": {
"lodash": "^4.17.21" "lodash": "^4.17.21"
@@ -14562,12 +14036,6 @@
"path-is-absolute": "^1.0.0" "path-is-absolute": "^1.0.0"
} }
}, },
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
"locate-path": { "locate-path": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -16404,17 +15872,6 @@
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true "dev": true
}, },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": { "strip-ansi": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",

View File

@@ -43,6 +43,7 @@
"http-proxy": "^1.18.1", "http-proxy": "^1.18.1",
"jquery": "^3.6.0", "jquery": "^3.6.0",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"jszip": "^3.6.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lodash.clonedeep": "^4.5.0", "lodash.clonedeep": "^4.5.0",
"lru-cache": "^5.1.1", "lru-cache": "^5.1.1",

View File

@@ -206,6 +206,43 @@ CompilerService.prototype.submit = function (request) {
}, this)); }, this));
}; };
CompilerService.prototype.submitCMake = function (request) {
request.allowStoreCodeDebug = this.allowStoreCodeDebug;
var jsonRequest = JSON.stringify(request);
if (options.doCache) {
var cachedResult = this.cache.get(jsonRequest);
if (cachedResult) {
return Promise.resolve({
request: request,
result: cachedResult,
localCacheHit: true,
});
}
}
return new Promise(_.bind(function (resolve, reject) {
var bindHandler = _.partial(handleRequestError, request, reject);
var compilerId = encodeURIComponent(request.compiler);
$.ajax({
type: 'POST',
url: window.location.origin + this.base + 'api/compiler/' + compilerId + '/cmake',
dataType: 'json',
contentType: 'application/json',
data: jsonRequest,
success: _.bind(function (result) {
if (result && result.okToCache && options.doCache) {
this.cache.set(jsonRequest, result);
}
resolve({
request: request,
result: result,
localCacheHit: false,
});
}, this),
error: bindHandler,
});
}, this));
};
CompilerService.prototype.requestPopularArguments = function (compilerId, options) { CompilerService.prototype.requestPopularArguments = function (compilerId, options) {
return new Promise(_.bind(function (resolve, reject) { return new Promise(_.bind(function (resolve, reject) {
var bindHandler = _.partial(handleRequestError, compilerId, reject); var bindHandler = _.partial(handleRequestError, compilerId, reject);

View File

@@ -46,6 +46,13 @@ module.exports = {
}, },
}; };
}, },
getCompilerForTree: function (treeId, lang) {
return {
type: 'component',
componentName: 'compiler',
componentState: {tree: treeId, lang: lang},
};
},
getExecutor: function (editorId, lang) { getExecutor: function (editorId, lang) {
return { return {
type: 'component', type: 'component',
@@ -53,12 +60,13 @@ module.exports = {
componentState: {source: editorId, lang: lang}, componentState: {source: editorId, lang: lang},
}; };
}, },
getExecutorWith: function (editorId, lang, compilerId, libraries, compilerArgs) { getExecutorWith: function (editorId, lang, compilerId, libraries, compilerArgs, treeId) {
return { return {
type: 'component', type: 'component',
componentName: 'executor', componentName: 'executor',
componentState: { componentState: {
source: editorId, source: editorId,
tree: treeId,
lang: lang, lang: lang,
compiler: compilerId, compiler: compilerId,
libs: libraries, libs: libraries,
@@ -66,6 +74,13 @@ module.exports = {
}, },
}; };
}, },
getExecutorForTree: function (treeId, lang) {
return {
type: 'component',
componentName: 'executor',
componentState: {tree: treeId, lang: lang},
};
},
getEditor: function (id, langId) { getEditor: function (id, langId) {
return { return {
type: 'component', type: 'component',
@@ -80,14 +95,21 @@ module.exports = {
componentState: {id: id, source: source, options: options}, componentState: {id: id, source: source, options: options},
}; };
}, },
getOutput: function (compiler, editor) { getTree: function (id) {
return {
type: 'component',
componentName: 'tree',
componentState: {id: id},
};
},
getOutput: function (compiler, editor, tree) {
return { return {
type: 'component', type: 'component',
componentName: 'output', componentName: 'output',
componentState: {compiler: compiler, editor: editor}, componentState: {compiler: compiler, editor: editor, tree: tree},
}; };
}, },
getToolViewWith: function (compiler, editor, toolId, args, monacoStdin) { getToolViewWith: function (compiler, editor, toolId, args, monacoStdin, tree) {
return { return {
type: 'component', type: 'component',
componentName: 'tool', componentName: 'tool',
@@ -96,6 +118,7 @@ module.exports = {
editor: editor, editor: editor,
toolId: toolId, toolId: toolId,
args: args, args: args,
tree: tree,
monacoStdin: monacoStdin, monacoStdin: monacoStdin,
}, },
}; };

View File

@@ -801,3 +801,25 @@ html[data-theme=dark] {
.status-icon { .status-icon {
border: none; border: none;
} }
.tree-editor-file {
cursor: pointer;
line-height: 14px;
padding: 0px 0px 0px 5px;
}
.tree-editor-file span {
font-family: inherit;
float: left;
margin-top: 6px;
}
.tree-editor-file button {
float: right;
padding: 4px 10px 4px 0px;
}
.mainbar .cmake-project {
margin-top: 2px;
}
.v-scroll {
overflow-y: scroll;
}

View File

@@ -28,6 +28,7 @@ var _ = require('underscore');
var Sentry = require('@sentry/browser'); var Sentry = require('@sentry/browser');
var editor = require('./panes/editor'); var editor = require('./panes/editor');
var compiler = require('./panes/compiler'); var compiler = require('./panes/compiler');
var tree = require('./panes/tree');
var executor = require('./panes/executor'); var executor = require('./panes/executor');
var output = require('./panes/output'); var output = require('./panes/output');
var tool = require('./panes/tool'); var tool = require('./panes/tool');
@@ -72,6 +73,9 @@ function Hub(layout, subLangId, defaultLangId) {
this.editorIds = new Ids(); this.editorIds = new Ids();
this.compilerIds = new Ids(); this.compilerIds = new Ids();
this.executorIds = new Ids(); this.executorIds = new Ids();
this.treeIds = new Ids();
this.trees = [];
this.editors = [];
this.compilerService = new CompilerService(layout.eventHub); this.compilerService = new CompilerService(layout.eventHub);
this.deferred = true; this.deferred = true;
this.deferredEmissions = []; this.deferredEmissions = [];
@@ -91,6 +95,10 @@ function Hub(layout, subLangId, defaultLangId) {
function (container, state) { function (container, state) {
return self.compilerFactory(container, state); return self.compilerFactory(container, state);
}); });
layout.registerComponent(Components.getTree().componentName,
function (container, state) {
return self.treeFactory(container, state);
});
layout.registerComponent(Components.getExecutor().componentName, layout.registerComponent(Components.getExecutor().componentName,
function (container, state) { function (container, state) {
return self.executorFactory(container, state); return self.executorFactory(container, state);
@@ -160,6 +168,12 @@ function Hub(layout, subLangId, defaultLangId) {
layout.eventHub.on('compilerClose', function (id) { layout.eventHub.on('compilerClose', function (id) {
this.compilerIds.remove(id); this.compilerIds.remove(id);
}, this); }, this);
layout.eventHub.on('treeOpen', function (id) {
this.treeIds.add(id);
}, this);
layout.eventHub.on('treeClose', function (id) {
this.treeIds.remove(id);
}, this);
layout.eventHub.on('executorOpen', function (id) { layout.eventHub.on('executorOpen', function (id) {
this.executorIds.add(id); this.executorIds.add(id);
}, this); }, this);
@@ -177,12 +191,32 @@ function Hub(layout, subLangId, defaultLangId) {
Hub.prototype.undefer = function () { Hub.prototype.undefer = function () {
this.deferred = false; this.deferred = false;
var eventHub = this.layout.eventHub; var eventHub = this.layout.eventHub;
var compilerEmissions = [];
var nonCompilerEmissions = [];
_.each(this.deferredEmissions, function (args) { _.each(this.deferredEmissions, function (args) {
if (args[0] === 'compiler') {
compilerEmissions.push(args);
} else {
nonCompilerEmissions.push(args);
}
});
_.each(nonCompilerEmissions, function (args) {
eventHub.emit.apply(eventHub, args); eventHub.emit.apply(eventHub, args);
}); });
_.each(compilerEmissions, function (args) {
eventHub.emit.apply(eventHub, args);
});
this.deferredEmissions = []; this.deferredEmissions = [];
}; };
Hub.prototype.nextTreeId = function () {
return this.treeIds.next();
};
Hub.prototype.nextEditorId = function () { Hub.prototype.nextEditorId = function () {
return this.editorIds.next(); return this.editorIds.next();
}; };
@@ -200,7 +234,39 @@ Hub.prototype.codeEditorFactory = function (container, state) {
// NB there doesn't seem to be a better way to do this than reach into the config and rely on the fact nothing // NB there doesn't seem to be a better way to do this than reach into the config and rely on the fact nothing
// has used it yet. // has used it yet.
container.parent.config.isClosable = true; container.parent.config.isClosable = true;
return new editor.Editor(this, state, container); var editorObj = new editor.Editor(this, state, container);
this.editors.push(editorObj);
};
Hub.prototype.treeFactory = function (container, state) {
var treeObj = new tree.Tree(this, state, container);
this.trees.push(treeObj);
return treeObj;
};
Hub.prototype.getTreeById = function (treeId) {
return _.find(this.trees, function (treeObj) {
return treeObj.id === treeId;
});
};
Hub.prototype.removeTree = function (treeId) {
this.trees = _.filter(this.trees, function (treeObj) {
return treeObj.id !== treeId;
});
};
Hub.prototype.getEditorById = function (editorId) {
return _.find(this.editors, function (editorObj) {
return editorObj.id === editorId;
});
};
Hub.prototype.removeEditor = function (editorId) {
this.editors = _.filter(this.editors, function (editorObj) {
return editorObj.id !== editorId;
});
}; };
Hub.prototype.compilerFactory = function (container, state) { Hub.prototype.compilerFactory = function (container, state) {
@@ -330,6 +396,61 @@ Hub.prototype.findParentRowOrColumn = function (elem) {
return elem; return elem;
}; };
Hub.prototype.findParentRowOrColumnOrStack = function (elem) {
while (elem) {
if (elem.isRow || elem.isColumn || elem.isStack) return elem;
elem = elem.parent;
}
return elem;
};
Hub.prototype.hasTree = function () {
return (this.trees.length > 0);
};
Hub.prototype.getTreesWithEditorId = function (editorId) {
return _.filter(this.trees, function (tree) {
return tree.multifileService.isEditorPartOfProject(editorId);
});
};
Hub.prototype.getTrees = function () {
return this.trees;
};
Hub.prototype.findEditorInChildren = function (elem) {
var count = elem.contentItems.length;
var idx = 0;
while (idx < count) {
var child = elem.contentItems[idx];
if (child.componentName === 'codeEditor') {
return this.findParentRowOrColumnOrStack(child);
} else {
if (child.isRow || child.isColumn || child.isStack) {
var editorFound = this.findEditorInChildren(child);
if (editorFound) return editorFound;
}
}
idx++;
}
return false;
};
Hub.prototype.findEditorParentRowOrColumn = function () {
return this.findEditorInChildren(this.layout.root);
};
Hub.prototype.addInEditorStackIfPossible = function (newElem) {
var insertPoint = this.findEditorParentRowOrColumn();
if (insertPoint) {
insertPoint.addChild(newElem);
} else {
this.addAtRoot(newElem);
}
};
Hub.prototype.addAtRoot = function (newElem) { Hub.prototype.addAtRoot = function (newElem) {
var rootFirstItem = this.layout.root.contentItems[0]; var rootFirstItem = this.layout.root.contentItems[0];
if (rootFirstItem) { if (rootFirstItem) {
@@ -349,4 +470,9 @@ Hub.prototype.addAtRoot = function (newElem) {
} }
}; };
Hub.prototype.activateTabForContainer = function (container) {
if (container && container.tab)
container.tab.header.parent.setActiveContentItem(container.tab.contentItem);
};
module.exports = Hub; module.exports = Hub;

121
static/line-colouring.ts Normal file
View File

@@ -0,0 +1,121 @@
import _ from 'underscore';
import { MultifileService } from './multifile-service';
class ColouredSourcelineInfo {
sourceLine: number;
compilerId: number;
compilerLine: number;
colourIdx: number;
};
export class LineColouring {
private colouredSourceLinesByEditor: Object;
private multifileService: MultifileService;
private linesAndColourByCompiler: Object;
private linesAndColourByEditor: Object;
constructor(multifileService: MultifileService) {
this.multifileService = multifileService;
this.clear();
}
public clear() {
this.colouredSourceLinesByEditor = [];
this.linesAndColourByCompiler = {};
this.linesAndColourByEditor = {};
}
public addFromAssembly(compilerId, asm) {
let asmLineIdx = 0;
for (const asmLine of asm ) {
if (asmLine.source && asmLine.source.line > 0) {
const editorId = this.multifileService.getEditorIdByFilename(asmLine.source.file);
if (editorId > 0) {
if (!this.colouredSourceLinesByEditor[editorId]) {
this.colouredSourceLinesByEditor[editorId] = new Array<ColouredSourcelineInfo>();
}
if (!this.linesAndColourByCompiler[compilerId]) {
this.linesAndColourByCompiler[compilerId] = {};
}
if (!this.linesAndColourByEditor[editorId]) {
this.linesAndColourByEditor[editorId] = {};
}
this.colouredSourceLinesByEditor[editorId].push({
sourceLine: asmLine.source.line - 1,
compilerId: compilerId,
compilerLine: asmLineIdx,
colourIdx: -1,
});
}
}
asmLineIdx++;
}
}
private getUniqueLinesForEditor(editorId: number) {
const lines = [];
for (const info of this.colouredSourceLinesByEditor[editorId]) {
if (!lines.includes(info.sourceLine))
lines.push(info.sourceLine);
}
return lines;
}
private setColourBySourceline(editorId: number, line: number, colourIdx: number) {
for (const info of this.colouredSourceLinesByEditor[editorId]) {
if (info.sourceLine === line) {
info.colourIdx = colourIdx;
}
}
}
public calculate() {
let colourIdx = 0;
for (const editorIdStr of _.keys(this.colouredSourceLinesByEditor)) {
const editorId = parseInt(editorIdStr);
const lines = this.getUniqueLinesForEditor(editorId);
for (const line of lines) {
this.setColourBySourceline(editorId, line, colourIdx);
colourIdx++;
}
}
const compilerIds = _.keys(this.linesAndColourByCompiler);
const editorIds = _.keys(this.linesAndColourByEditor);
for (const compilerIdStr of compilerIds) {
const compilerId = parseInt(compilerIdStr);
for (const editorId of _.keys(this.colouredSourceLinesByEditor)) {
for (const info of this.colouredSourceLinesByEditor[editorId]) {
if (info.compilerId === compilerId && info.colourIdx >= 0) {
this.linesAndColourByCompiler[compilerId][info.compilerLine] = info.colourIdx;
}
}
}
}
for (const editorId of editorIds) {
for (const info of this.colouredSourceLinesByEditor[editorId]) {
if (info.colourIdx >= 0) {
this.linesAndColourByEditor[editorId][info.sourceLine] = info.colourIdx;
}
}
}
}
public getColoursForCompiler(compilerId: number): Object {
return this.linesAndColourByCompiler[compilerId];
}
public getColoursForEditor(editorId: number): Object {
return this.linesAndColourByEditor[editorId];
}
};

View File

@@ -139,7 +139,7 @@ LoadSave.prototype.onLocalFile = function (event) {
var file = files[0]; var file = files[0];
var reader = new FileReader(); var reader = new FileReader();
reader.onload = _.bind(function () { reader.onload = _.bind(function () {
this.onLoad(reader.result); this.onLoad(reader.result, file.name);
}, this); }, this);
reader.readAsText(file); reader.readAsText(file);
} }

View File

@@ -258,6 +258,16 @@ function configFromEmbedded(embeddedUrl) {
} }
} }
function fixBugsInConfig(config) {
if (config.activeItemIndex && config.activeItemIndex >= config.content.length) {
config.activeItemIndex = config.content.length - 1;
}
_.each(config.content, function (item) {
fixBugsInConfig(item);
});
}
function findConfig(defaultConfig, options) { function findConfig(defaultConfig, options) {
var config; var config;
if (!options.embedded) { if (!options.embedded) {
@@ -295,6 +305,10 @@ function findConfig(defaultConfig, options) {
}, },
}, configFromEmbedded(window.location.hash.substr(1))); }, configFromEmbedded(window.location.hash.substr(1)));
} }
removeOrphanedMaximisedItemFromConfig(config);
fixBugsInConfig(config);
return config; return config;
} }
@@ -473,7 +487,6 @@ function start() {
} }
var config = findConfig(defaultConfig, options); var config = findConfig(defaultConfig, options);
removeOrphanedMaximisedItemFromConfig(config);
var root = $('#root'); var root = $('#root');
@@ -493,6 +506,10 @@ function start() {
hub = new Hub(layout, subLangId, defaultLangId); hub = new Hub(layout, subLangId, defaultLangId);
} }
if (hub.hasTree()) {
$('#add-tree').prop('disabled', true);
}
function sizeRoot() { function sizeRoot() {
var height = $(window).height() - (root.position().top || 0) - ($('#simplecook:visible').height() || 0); var height = $(window).height() - (root.position().top || 0) - ($('#simplecook:visible').height() || 0);
root.height(height); root.height(height);
@@ -521,7 +538,11 @@ function start() {
function setupAdd(thing, func) { function setupAdd(thing, func) {
layout.createDragSource(thing, func); layout.createDragSource(thing, func);
thing.click(function () { thing.click(function () {
hub.addAtRoot(func()); if (hub.hasTree()) {
hub.addInEditorStackIfPossible(func());
} else {
hub.addAtRoot(func());
}
}); });
} }
@@ -531,6 +552,10 @@ function start() {
setupAdd($('#add-diff'), function () { setupAdd($('#add-diff'), function () {
return Components.getDiff(); return Components.getDiff();
}); });
setupAdd($('#add-tree'), function () {
$('#add-tree').prop('disabled', true);
return Components.getTree();
});
if (hashPart) { if (hashPart) {
var element = $(hashPart); var element = $(hashPart);

View File

@@ -41,3 +41,4 @@ require('../modes/nim-mode');
require('../modes/ocaml-mode'); require('../modes/ocaml-mode');
require('../modes/openclc-mode'); require('../modes/openclc-mode');
require('../modes/zig-mode'); require('../modes/zig-mode');
require('../modes/cmake-mode');

104
static/modes/cmake-mode.js Normal file
View File

@@ -0,0 +1,104 @@
// Copyright (c) 2021, Compiler Explorer Authors
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
'use strict';
var monaco = require('monaco-editor');
function definition() {
return {
symbols: /[=><!~?&|+\-*/^;.,]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
tokenizer: {
root: [
[/(add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_libraries|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)/,
'keyword'],
[/\b((CMAKE_)?(CXX_STANDARD|CXX_FLAGS|CMAKE_CXX_FLAGS_DEBUG|CMAKE_CXX_FLAGS_MINSIZEREL|CMAKE_CXX_FLAGS_RELEASE|CMAKE_CXX_FLAGS_RELWITHDEBINFO))\b/,
'variable'],
[/\b(ABSOLUTE|AND|BOOL|CACHE|COMMAND|COMMENT|DEFINED|DOC|EQUAL|EXISTS|EXT|FALSE|GREATER|GREATER_EQUAL|INTERNAL|IN_LIST|IS_ABSOLUTE|IS_DIRECTORY|IS_NEWER_THAN|IS_SYMLINK|LESS|LESS_EQUAL|MATCHES|NAME|NAMES|NAME_WE|NOT|OFF|ON|OR|PATH|PATHS|POLICY|PROGRAM|STREQUAL|STRGREATER|STRGREATER_EQUAL|STRING|STRLESS|STRLESS_EQUAL|TARGET|TEST|TRUE|VERSION_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|VERSION_LESS)\b/,
'keyword'],
[/\b((APPLE|BORLAND|(CMAKE_)?(CL_64|COMPILER_2005|HOST_APPLE|HOST_SYSTEM|HOST_SYSTEM_NAME|HOST_SYSTEM_PROCESSOR|HOST_SYSTEM_VERSION|HOST_UNIX|HOST_WIN32|LIBRARY_ARCHITECTURE|LIBRARY_ARCHITECTURE_REGEX|OBJECT_PATH_MAX|SYSTEM|SYSTEM_NAME|SYSTEM_PROCESSOR|SYSTEM_VERSION)|CYGWIN|MSVC|MSVC80|MSVC_IDE|MSVC_VERSION|UNIX|WIN32|XCODE_VERSION|MSVC60|MSVC70|MSVC90|MSVC71))\b/,
'variable'],
[/\b(BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION))\b/,
'keyword'],
{ include: '@whitespace' },
{ include: '@builtins' },
],
builtins: [
[/\$\{\w+\}/, 'variable'],
[/\d*\.\d+([eE][-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
[/\d+/, 'number'],
[/"/, 'string', '@string."'],
[/'/, 'string', '@string.\''],
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/#.*$/, 'comment'],
],
string: [
[/[^\\"'%]+/, { cases: { '@eos': { token: 'string', next: '@popall' }, '@default': 'string' } }],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/\$\{[\w ]+\}/, 'variable'],
[/["']/, { cases: { '$#==$S2': { token: 'string', next: '@pop' }, '@default': 'string' } }],
[/$/, 'string', '@popall'],
],
},
};
}
function configuration() {
return {
indentationRules: {
decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/,
increaseIndentPattern: /^.*\{[^}"']*$/,
},
wordPattern: /(-?\d*\.\d\w*)|([^`~!@#%^&*()\-=+[{\]}\\|;:'",.<>/?\s]+)/g,
comments: {
lineComment: '#',
},
brackets: [
['{', '}'],
['(', ')'],
],
__electricCharacterSupport: {
brackets: [
{ tokenType: 'delimiter.curly.ts', open: '{', close: '}', isElectric: true },
{ tokenType: 'delimiter.square.ts', open: '[', close: ']', isElectric: true },
{ tokenType: 'delimiter.paren.ts', open: '(', close: ')', isElectric: true },
],
},
__characterPairSupport: {
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] },
],
},
};
}
monaco.languages.register({ id: 'cmake' });
monaco.languages.setMonarchTokensProvider('cmake', definition());
monaco.languages.setLanguageConfiguration('cmake', configuration());

484
static/multifile-service.ts Normal file
View File

@@ -0,0 +1,484 @@
import _ from 'underscore';
import path from 'path';
var options = require('./options');
var languages = options.languages;
var JSZip = require('jszip');
export class MultifileFile {
fileId: number;
isIncluded: boolean;
isOpen: boolean;
isMainSource: boolean;
filename: string;
content: string;
editorId: number;
langId: string;
}
export class FiledataPair {
filename: string;
contents: string;
}
export class MultifileServiceState {
isCMakeProject: boolean;
compilerLanguageId: string;
files: MultifileFile[];
newFileId: number;
}
export class MultifileService {
private files: Array<MultifileFile>;
private compilerLanguageId: string;
private isCMakeProject: boolean;
private hub: any;
private newFileId: number;
private alertSystem: any;
private validExtraFilenameExtensions: string[];
private defaultLangIdUnknownExt: string;
private cmakeLangId: string;
private cmakeMainSourceFilename: string;
private maxFilesize: number;
constructor(hub, alertSystem, state: MultifileServiceState) {
this.hub = hub;
this.alertSystem = alertSystem;
this.isCMakeProject = state.isCMakeProject || false;
this.compilerLanguageId = state.compilerLanguageId || '';
this.files = state.files || [];
this.newFileId = state.newFileId || 1;
this.validExtraFilenameExtensions = ['.txt', '.md', '.rst', '.sh', '.cmake', '.in'];
this.defaultLangIdUnknownExt = 'c++';
this.cmakeLangId = 'cmake';
this.cmakeMainSourceFilename = 'CMakeLists.txt';
this.maxFilesize = 1024000;
}
private isHiddenFile(filename: string): boolean {
return (filename.length > 0 && filename[0] === '.');
}
private isValidFilename(filename: string): boolean {
if (this.isHiddenFile(filename)) return false;
const filenameExt = path.extname(filename);
if (this.validExtraFilenameExtensions.includes(filenameExt)) {
return true;
}
return _.any(languages, (lang) => {
return lang.extensions.includes(filenameExt);
});
}
private isCMakeFile(filename: string): boolean {
const filenameExt = path.extname(filename);
if (filenameExt === '.cmake' || filenameExt === '.in') {
return true;
}
return path.basename(filename) === this.cmakeMainSourceFilename;
}
private getLanguageIdFromFilename(filename: string): string {
const filenameExt = path.extname(filename);
const possibleLang = _.filter(languages, (lang) => {
return lang.extensions.includes(filenameExt);
});
if (possibleLang.length > 0) {
return possibleLang[0].id;
}
if (this.isCMakeFile(filename)) {
return this.cmakeLangId;
}
return this.defaultLangIdUnknownExt;
}
public async loadProjectFromFile(f, callback) {
this.files = [];
this.newFileId = 1;
const zipFilename = path.basename(f.name, '.zip');
const mainSourcefilename = this.getDefaultMainCMakeFilename();
const zip = await JSZip.loadAsync(f);
zip.forEach(async (relativePath, zipEntry) => {
if (!zipEntry.dir) {
let removeFromName = 0;
if (relativePath.indexOf(zipFilename) === 0) {
removeFromName = zipFilename.length + 1;
}
const properName = relativePath.substring(removeFromName);
if (!this.isValidFilename(properName)) {
return;
}
let content = await zip.file(zipEntry.name).async("string");
if (content.length > this.maxFilesize) {
return;
}
// remove utf8-bom characters
content = content.replace(/^(\ufeff)/, '');
const file: MultifileFile = {
fileId: this.newFileId,
filename: properName,
isIncluded: true,
isOpen: false,
editorId: -1,
isMainSource: properName === mainSourcefilename,
content: content,
langId: this.getLanguageIdFromFilename(properName),
};
this.addFile(file);
callback(file);
}
});
}
public async saveProjectToZipfile(callback: (any) => void) {
const zip = new JSZip();
this.forEachFile((file: MultifileFile) => {
if (file.isIncluded) {
zip.file(file.filename, this.getFileContents(file));
}
})
zip.generateAsync({type:"blob"}).then((blob) => {
callback(blob);
}, (err) => {
throw err;
});
}
public getState(): MultifileServiceState {
return {
isCMakeProject: this.isCMakeProject,
compilerLanguageId: this.compilerLanguageId,
files: this.files,
newFileId: this.newFileId,
};
}
public getLanguageId() {
return this.compilerLanguageId;
}
public isCompatibleWithCMake(): boolean {
if (this.compilerLanguageId !== 'c++' && this.compilerLanguageId !== 'c') {
return false;
} else {
return true;
}
}
public setLanguageId(id: string) {
this.compilerLanguageId = id;
}
public isACMakeProject(): boolean {
return this.isCompatibleWithCMake() && this.isCMakeProject;
}
public setAsCMakeProject(yes: boolean) {
if (yes) {
this.isCMakeProject = true;
} else {
this.isCMakeProject = false;
}
}
private checkFileEditor(file: MultifileFile) {
if (file && file.editorId > 0) {
const editor = this.hub.getEditorById(file.editorId);
if (!editor) {
file.isOpen = false;
file.editorId = -1;
}
}
}
public getFileContents(file: MultifileFile) {
this.checkFileEditor(file);
if (file.isOpen) {
const editor = this.hub.getEditorById(file.editorId);
return editor.getSource();
} else {
return file.content;
}
}
public isEditorPartOfProject(editorId: Number) {
var found = _.find(this.files, (file: MultifileFile) => {
return (file.isIncluded) && file.isOpen && (editorId === file.editorId);
});
return !!found;
}
public getFileByFileId(fileId: Number) {
const file = _.find(this.files, (file: MultifileFile) => {
return file.fileId === fileId;
});
this.checkFileEditor(file);
return file;
}
public setAsMainSource(mainFileId: Number) {
for (let file of this.files) {
file.isMainSource = false;
}
var mainfile = this.getFileByFileId(mainFileId);
mainfile.isMainSource = true;
}
private isValidFile(file: MultifileFile): boolean {
return (file.editorId > 0) || !!file.filename;
}
private filterOutNonsense() {
this.files = _.filter(this.files, (file: MultifileFile) => this.isValidFile(file));
}
public getFiles(): Array<FiledataPair> {
this.filterOutNonsense();
var filtered = _.filter(this.files, (file: MultifileFile) => {
return !file.isMainSource && file.isIncluded;
});
return _.map(filtered, (file: MultifileFile) => {
return {
filename: file.filename,
contents: this.getFileContents(file),
};
});
}
private isMainSourceFile(file: MultifileFile): boolean {
if (this.isCMakeProject) {
if (file.filename === this.getDefaultMainCMakeFilename()) {
this.setAsMainSource(file.fileId);
} else {
return false;
}
} else {
if (file.filename === this.getDefaultMainSourceFilename(this.compilerLanguageId)) {
this.setAsMainSource(file.fileId);
} else {
return false;
}
}
return file.isMainSource;
}
public getMainSource(): string {
var mainFile = _.find(this.files, (file: MultifileFile) => {
return file.isIncluded && this.isMainSourceFile(file);
});
if (mainFile) {
return this.getFileContents(mainFile);
} else {
return '';
}
}
public getFileByEditorId(editorId: number): MultifileFile {
return _.find(this.files, (file: MultifileFile) => {
return file.editorId === editorId;
});
}
public getEditorIdByFilename(filename: string): number {
const file: MultifileFile = _.find(this.files, (file: MultifileFile) => {
return file.isIncluded && (file.filename === filename);
});
return (file && file.editorId > 0) ? file.editorId : null;
}
public getMainSourceEditorId(): number {
const file: MultifileFile = _.find(this.files, (file: MultifileFile) => {
return file.isIncluded && this.isMainSourceFile(file);
});
this.checkFileEditor(file);
return (file && file.editorId > 0) ? file.editorId : null;
}
private addFile(file: MultifileFile) {
this.newFileId++;
this.files.push(file);
}
public addFileForEditorId(editorId: number) {
const file: MultifileFile = {
fileId: this.newFileId,
isIncluded: false,
isOpen: true,
isMainSource: false,
filename: '',
content: '',
editorId: editorId,
langId: '',
};
this.addFile(file);
}
public removeFileByFileId(fileId: number): MultifileFile {
const file: MultifileFile = this.getFileByFileId(fileId);
this.files = this.files.filter((obj: MultifileFile) => obj.fileId !== fileId);
return file;
}
public async excludeByFileId(fileId: number): Promise<void> {
const file: MultifileFile = this.getFileByFileId(fileId);
file.isIncluded = false;
}
public async includeByFileId(fileId: number): Promise<void> {
const file: MultifileFile = this.getFileByFileId(fileId);
file.isIncluded = true;
if (file.filename === '') {
const isRenamed = await this.renameFile(fileId);
if (isRenamed) {
this.includeByFileId(fileId);
} else {
file.isIncluded = false;
}
} else {
file.isIncluded = true;
}
return;
}
public async includeByEditorId(editorId: number): Promise<void> {
const file: MultifileFile = this.getFileByEditorId(editorId);
return this.includeByFileId(file.fileId);
}
public forEachOpenFile(callback: (File) => void) {
this.filterOutNonsense();
for (const file of this.files) {
if (file.isOpen && file.editorId > 0) {
callback(file);
}
}
}
public forEachFile(callback: (File) => void) {
this.filterOutNonsense();
for (const file of this.files) {
callback(file);
}
}
private getDefaultMainCMakeFilename() {
return this.cmakeMainSourceFilename;
}
private getDefaultMainSourceFilename(langId) {
const lang = languages[langId];
const ext0 = lang.extensions[0];
return 'example' + ext0;
}
private getSuggestedFilename(file: MultifileFile, editor: any): string {
let suggestedFilename = file.filename;
if (file.filename === '') {
let langId: string = file.langId;
if (editor) {
langId = editor.currentLanguage.id;
if (editor.filename) {
suggestedFilename = editor.filename;
}
}
if (!suggestedFilename) {
if (langId === this.cmakeLangId) {
suggestedFilename = this.getDefaultMainCMakeFilename();
} else {
suggestedFilename = this.getDefaultMainSourceFilename(langId);
}
}
}
return suggestedFilename;
}
private fileExists(filename: string, excludeFile: MultifileFile): boolean {
return !!_.find(this.files, (file: MultifileFile) => {
return (file !== excludeFile) && (file.filename === filename);
});
}
public async renameFile(fileId: number): Promise<boolean> {
var file = this.getFileByFileId(fileId);
let editor: any = null;
if (file.isOpen && file.editorId > 0) {
editor = this.hub.getEditorById(file.editorId);
}
let suggestedFilename = this.getSuggestedFilename(file, editor);
return new Promise((resolve) => {
this.alertSystem.enterSomething('Rename file', 'Please enter a filename', suggestedFilename, {
yes: (value) => {
if (value !== '' && value[0] !== '/') {
if (!this.fileExists(value, file)) {
file.filename = value;
if (editor) {
editor.setFilename(file.filename);
}
resolve(true);
} else {
this.alertSystem.alert('Rename file', 'Filename already exists');
resolve(false);
}
} else {
this.alertSystem.alert('Rename file', 'Filename cannot be empty or start with a "/"');
resolve(false);
}
},
no: () => {
resolve(false);
}
});
});
}
public async renameFileByEditorId(editorId: number): Promise<boolean> {
var file = this.getFileByEditorId(editorId);
return this.renameFile(file.fileId);
}
}

View File

@@ -81,7 +81,12 @@ function Compiler(hub, container, state) {
this.domRoot = container.getElement(); this.domRoot = container.getElement();
this.domRoot.html($('#compiler').html()); this.domRoot.html($('#compiler').html());
this.id = state.id || hub.nextCompilerId(); this.id = state.id || hub.nextCompilerId();
this.sourceEditorId = state.source || 1; this.sourceTreeId = state.tree ? state.tree : false;
if (this.sourceTreeId) {
this.sourceEditorId = false;
} else {
this.sourceEditorId = state.source || 1;
}
this.settings = Settings.getStoredSettings(); this.settings = Settings.getStoredSettings();
this.originalCompilerId = state.compiler; this.originalCompilerId = state.compiler;
this.initLangAndCompiler(state); this.initLangAndCompiler(state);
@@ -96,7 +101,9 @@ function Compiler(hub, container, state) {
this.lastResult = {}; this.lastResult = {};
this.lastTimeTaken = 0; this.lastTimeTaken = 0;
this.pendingRequestSentAt = 0; this.pendingRequestSentAt = 0;
this.pendingCMakeRequestSentAt = 0;
this.nextRequest = null; this.nextRequest = null;
this.nextCMakeRequest = null;
this.optViewOpen = false; this.optViewOpen = false;
this.flagsViewOpen = state.flagsViewOpen || false; this.flagsViewOpen = state.flagsViewOpen || false;
this.cfgViewOpen = false; this.cfgViewOpen = false;
@@ -157,8 +164,27 @@ function Compiler(hub, container, state) {
eventCategory: 'OpenViewPane', eventCategory: 'OpenViewPane',
eventAction: 'Compiler', eventAction: 'Compiler',
}); });
if (this.sourceTreeId) {
this.compile();
}
} }
Compiler.prototype.getEditorIdBySourcefile = function (sourcefile) {
if (this.sourceTreeId) {
var tree = this.hub.getTreeById(this.sourceTreeId);
if (tree) {
return tree.multifileService.getEditorIdByFilename(sourcefile.file);
}
} else {
if (sourcefile !== null && (sourcefile.file === null || sourcefile.mainsource)) {
return this.sourceEditorId;
}
}
return false;
};
Compiler.prototype.initLangAndCompiler = function (state) { Compiler.prototype.initLangAndCompiler = function (state) {
var langId = state.lang; var langId = state.lang;
var compilerId = state.compiler; var compilerId = state.compiler;
@@ -177,7 +203,7 @@ Compiler.prototype.close = function () {
Compiler.prototype.initPanerButtons = function () { Compiler.prototype.initPanerButtons = function () {
var outputConfig = _.bind(function () { var outputConfig = _.bind(function () {
return Components.getOutput(this.id, this.sourceEditorId); return Components.getOutput(this.id, this.sourceEditorId, this.sourceTreeId);
}, this); }, this);
this.container.layoutManager.createDragSource(this.outputBtn, outputConfig); this.container.layoutManager.createDragSource(this.outputBtn, outputConfig);
@@ -242,6 +268,7 @@ Compiler.prototype.initPanerButtons = function () {
var createExecutor = _.bind(function () { var createExecutor = _.bind(function () {
var currentState = this.currentState(); var currentState = this.currentState();
var editorId = currentState.source; var editorId = currentState.source;
var treeId = currentState.tree;
var langId = currentState.lang; var langId = currentState.lang;
var compilerId = currentState.compiler; var compilerId = currentState.compiler;
var libs = []; var libs = [];
@@ -251,7 +278,7 @@ Compiler.prototype.initPanerButtons = function () {
ver: item.versionId, ver: item.versionId,
}); });
}); });
return Components.getExecutorWith(editorId, langId, compilerId, libs, currentState.options); return Components.getExecutorWith(editorId, langId, compilerId, libs, currentState.options, treeId);
}, this); }, this);
var panerDropdown = this.domRoot.find('.pane-dropdown'); var panerDropdown = this.domRoot.find('.pane-dropdown');
@@ -522,9 +549,12 @@ Compiler.prototype.initEditorActions = function () {
run: _.bind(function (ed) { run: _.bind(function (ed) {
var desiredLine = ed.getPosition().lineNumber - 1; var desiredLine = ed.getPosition().lineNumber - 1;
var source = this.assembly[desiredLine].source; var source = this.assembly[desiredLine].source;
if (source !== null && source.file === null) { if (source && source.line > 0) {
// a null file means it was the user's source var editorId = this.getEditorIdBySourcefile(source);
this.eventHub.emit('editorLinkLine', this.sourceEditorId, source.line, -1, -1, true); if (editorId) {
// a null file means it was the user's source
this.eventHub.emit('editorLinkLine', editorId, source.line, -1, -1, true);
}
} }
}, this), }, this),
}); });
@@ -589,9 +619,7 @@ Compiler.prototype.getEffectiveFilters = function () {
Compiler.prototype.findTools = function (content, tools) { Compiler.prototype.findTools = function (content, tools) {
if (content.componentName === 'tool') { if (content.componentName === 'tool') {
if ( if (content.componentState.compiler === this.id) {
(content.componentState.editor === this.sourceEditorId) &&
(content.componentState.compiler === this.id)) {
tools.push({ tools.push({
id: content.componentState.toolId, id: content.componentState.toolId,
args: content.componentState.args, args: content.componentState.args,
@@ -670,12 +698,53 @@ Compiler.prototype.compile = function (bypassCache, newTools) {
}); });
}); });
if (this.sourceTreeId) {
this.compileFromTree(options, bypassCache);
} else {
this.compileFromEditorSource(options, bypassCache);
}
};
Compiler.prototype.compileFromTree = function (options, bypassCache) {
var tree = this.hub.getTreeById(this.sourceTreeId);
var mainsource = tree.multifileService.getMainSource();
var request = {
source: mainsource,
compiler: this.compiler ? this.compiler.id : '',
options: options,
lang: this.currentLangId,
files: tree.multifileService.getFiles(),
};
var treeState = tree.currentState();
var cmakeProject = treeState.isCMakeProject;
if (bypassCache) request.bypassCache = true;
if (!this.compiler) {
this.onCompileResponse(request, errorResult('<Please select a compiler>'), false);
} else if (cmakeProject && request.source === '') {
this.onCompileResponse(request, errorResult('<Please supply a CMakeLists.txt>'), false);
} else {
if (cmakeProject) {
request.options.compilerOptions.cmakeArgs = treeState.cmakeArgs;
request.options.compilerOptions.customOutputFilename = treeState.customOutputFilename;
this.sendCMakeCompile(request);
} else {
this.sendCompile(request);
}
}
};
Compiler.prototype.compileFromEditorSource = function (options, bypassCache) {
this.compilerService.expand(this.source).then(_.bind(function (expanded) { this.compilerService.expand(this.source).then(_.bind(function (expanded) {
var request = { var request = {
source: expanded || '', source: expanded || '',
compiler: this.compiler ? this.compiler.id : '', compiler: this.compiler ? this.compiler.id : '',
options: options, options: options,
lang: this.currentLangId, lang: this.currentLangId,
files: [],
}; };
if (bypassCache) request.bypassCache = true; if (bypassCache) request.bypassCache = true;
if (!this.compiler) { if (!this.compiler) {
@@ -686,6 +755,42 @@ Compiler.prototype.compile = function (bypassCache, newTools) {
}, this)); }, this));
}; };
Compiler.prototype.sendCMakeCompile = function (request) {
var onCompilerResponse = _.bind(this.onCMakeResponse, this);
if (this.pendingCMakeRequestSentAt) {
// If we have a request pending, then just store this request to do once the
// previous request completes.
this.nextCMakeRequest = request;
return;
}
this.eventHub.emit('compiling', this.id, this.compiler);
// Display the spinner
this.handleCompilationStatus({code: 4});
this.pendingCMakeRequestSentAt = Date.now();
// After a short delay, give the user some indication that we're working on their
// compilation.
var progress = setTimeout(_.bind(function () {
this.setAssembly({asm: fakeAsm('<Compiling...>')}, 0);
}, this), 500);
this.compilerService.submitCMake(request)
.then(function (x) {
clearTimeout(progress);
onCompilerResponse(request, x.result, x.localCacheHit);
})
.catch(function (x) {
clearTimeout(progress);
var message = 'Unknown error';
if (_.isString(x)) {
message = x;
} else if (x) {
message = x.error || x.code || message;
}
onCompilerResponse(request,
errorResult('<Compilation failed: ' + message + '>'), false);
});
};
Compiler.prototype.sendCompile = function (request) { Compiler.prototype.sendCompile = function (request) {
var onCompilerResponse = _.bind(this.onCompileResponse, this); var onCompilerResponse = _.bind(this.onCompileResponse, this);
@@ -709,13 +814,14 @@ Compiler.prototype.sendCompile = function (request) {
clearTimeout(progress); clearTimeout(progress);
onCompilerResponse(request, x.result, x.localCacheHit); onCompilerResponse(request, x.result, x.localCacheHit);
}) })
.catch(function (x) { .catch(function (e) {
clearTimeout(progress); clearTimeout(progress);
var message = 'Unknown error'; var message = 'Unknown error';
if (_.isString(x)) { if (_.isString(e)) {
message = x; message = e;
} else if (x) { } else if (e) {
message = x.error || x.code || message; message = e.error || e.code || e.message;
if (e.stack) console.log(e);
} }
onCompilerResponse(request, errorResult('<Compilation failed: ' + message + '>'), false); onCompilerResponse(request, errorResult('<Compilation failed: ' + message + '>'), false);
}); });
@@ -836,21 +942,36 @@ function fakeAsm(text) {
return [{text: text, source: null, fake: true}]; return [{text: text, source: null, fake: true}];
} }
Compiler.prototype.onCompileResponse = function (request, result, cached) { Compiler.prototype.doNextCompileRequest = function () {
// Delete trailing empty lines if (this.nextRequest) {
if ($.isArray(result.asm)) { var next = this.nextRequest;
var indexToDiscard = _.findLastIndex(result.asm, function (line) { this.nextRequest = null;
return !_.isEmpty(line.text); this.sendCompile(next);
});
result.asm.splice(indexToDiscard + 1, result.asm.length - indexToDiscard);
} }
// Save which source produced this change. It should probably be saved earlier though };
Compiler.prototype.doNextCMakeRequest = function () {
if (this.nextCMakeRequest) {
var next = this.nextCMakeRequest;
this.nextCMakeRequest = null;
this.sendCMakeCompile(next);
}
};
Compiler.prototype.onCMakeResponse = function (request, result, cached) {
result.source = this.source; result.source = this.source;
this.lastResult = result; this.lastResult = result;
var timeTaken = Math.max(0, Date.now() - this.pendingRequestSentAt); var timeTaken = Math.max(0, Date.now() - this.pendingCMakeRequestSentAt);
this.lastTimeTaken = timeTaken; this.lastTimeTaken = timeTaken;
var wasRealReply = this.pendingRequestSentAt > 0; var wasRealReply = this.pendingCMakeRequestSentAt > 0;
this.pendingRequestSentAt = 0; this.pendingCMakeRequestSentAt = 0;
this.handleCompileRequestAndResult(request, result, cached, wasRealReply, timeTaken);
this.doNextCMakeRequest();
};
Compiler.prototype.handleCompileRequestAndResult = function (request, result, cached, wasRealReply, timeTaken) {
ga.proxy('send', { ga.proxy('send', {
hitType: 'event', hitType: 'event',
eventCategory: 'Compile', eventCategory: 'Compile',
@@ -865,11 +986,32 @@ Compiler.prototype.onCompileResponse = function (request, result, cached) {
timingValue: timeTaken, timingValue: timeTaken,
}); });
// Delete trailing empty lines
if ($.isArray(result.asm)) {
var indexToDiscard = _.findLastIndex(result.asm, function (line) {
return !_.isEmpty(line.text);
});
result.asm.splice(indexToDiscard + 1, result.asm.length - indexToDiscard);
}
this.labelDefinitions = result.labelDefinitions || {}; this.labelDefinitions = result.labelDefinitions || {};
this.setAssembly(result, result.filteredCount || 0); if (result.asm) {
this.setAssembly(result, result.filteredCount || 0);
} else if (result.result && result.result.asm) {
this.setAssembly(result.result, result.result.filteredCount || 0);
}
var stdout = result.stdout || []; var stdout = result.stdout || [];
var stderr = result.stderr || []; var stderr = result.stderr || [];
var failed = result.code ? result.code !== 0 : false;
if (result.buildsteps) {
_.each(result.buildsteps, function (step) {
stdout = stdout.concat(step.stdout || []);
stderr = stderr.concat(step.stderr || []);
failed = failed | (step.code !== 0);
});
}
this.handleCompilationStatus(this.compilerService.calculateStatusIcon(result)); this.handleCompilationStatus(this.compilerService.calculateStatusIcon(result));
this.outputTextCount.text(stdout.length); this.outputTextCount.text(stdout.length);
@@ -896,14 +1038,27 @@ Compiler.prototype.onCompileResponse = function (request, result, cached) {
this.compileInfoLabel.text(infoLabelText); this.compileInfoLabel.text(infoLabelText);
this.postCompilationResult(request, result); if (result.result) {
this.eventHub.emit('compileResult', this.id, this.compiler, result, languages[this.currentLangId]); this.postCompilationResult(request, result.result);
} else {
if (this.nextRequest) { this.postCompilationResult(request, result);
var next = this.nextRequest;
this.nextRequest = null;
this.sendCompile(next);
} }
this.eventHub.emit('compileResult', this.id, this.compiler, result, languages[this.currentLangId]);
};
Compiler.prototype.onCompileResponse = function (request, result, cached) {
// Save which source produced this change. It should probably be saved earlier though
result.source = this.source;
this.lastResult = result;
var timeTaken = Math.max(0, Date.now() - this.pendingRequestSentAt);
this.lastTimeTaken = timeTaken;
var wasRealReply = this.pendingRequestSentAt > 0;
this.pendingRequestSentAt = 0;
this.handleCompileRequestAndResult(request, result, cached, wasRealReply, timeTaken);
this.doNextCompileRequest();
}; };
Compiler.prototype.postCompilationResult = function (request, result) { Compiler.prototype.postCompilationResult = function (request, result) {
@@ -926,6 +1081,19 @@ Compiler.prototype.postCompilationResult = function (request, result) {
}; };
Compiler.prototype.onEditorChange = function (editor, source, langId, compilerId) { Compiler.prototype.onEditorChange = function (editor, source, langId, compilerId) {
if (this.sourceTreeId) {
var tree = this.hub.getTreeById(this.sourceTreeId);
if (tree) {
if (tree.multifileService.isEditorPartOfProject(editor)) {
if (this.settings.compileOnChange) {
this.compile();
return;
}
}
}
}
if (editor === this.sourceEditorId && langId === this.currentLangId && if (editor === this.sourceEditorId && langId === this.currentLangId &&
(compilerId === undefined || compilerId === this.id)) { (compilerId === undefined || compilerId === this.id)) {
this.source = source; this.source = source;
@@ -1284,15 +1452,27 @@ Compiler.prototype.initLibraries = function (state) {
}; };
Compiler.prototype.updateLibraries = function () { Compiler.prototype.updateLibraries = function () {
if (this.libsWidget) this.libsWidget.setNewLangId(this.currentLangId, this.compiler.id, this.compiler.libs); if (this.libsWidget) {
this.libsWidget.setNewLangId(this.currentLangId,
this.compiler ? this.compiler.id : false,
this.compiler ? this.compiler.libs : {});
}
};
Compiler.prototype.isSupportedTool = function (tool) {
if (this.sourceTreeId) {
return tool.tool.type === 'postcompilation';
} else {
return true;
}
}; };
Compiler.prototype.supportsTool = function (toolId) { Compiler.prototype.supportsTool = function (toolId) {
if (!this.compiler) return; if (!this.compiler) return;
return _.find(this.compiler.tools, function (tool) { return _.find(this.compiler.tools, _.bind(function (tool) {
return (tool.tool.id === toolId); return (tool.tool.id === toolId && this.isSupportedTool(tool));
}); }, this));
}; };
Compiler.prototype.initToolButton = function (togglePannerAdder, button, toolId) { Compiler.prototype.initToolButton = function (togglePannerAdder, button, toolId) {
@@ -1308,7 +1488,7 @@ Compiler.prototype.initToolButton = function (togglePannerAdder, button, toolId)
monacoStdin = langTools[toolId].tool.monacoStdin; monacoStdin = langTools[toolId].tool.monacoStdin;
} }
} }
return Components.getToolViewWith(this.id, this.sourceEditorId, toolId, args, monacoStdin); return Components.getToolViewWith(this.id, this.sourceEditorId, toolId, args, monacoStdin, this.sourceTreeId);
}, this); }, this);
this.container.layoutManager this.container.layoutManager
@@ -1344,9 +1524,11 @@ Compiler.prototype.initToolButtons = function (togglePannerAdder) {
if (_.isEmpty(this.compiler.tools)) { if (_.isEmpty(this.compiler.tools)) {
addTool('none', 'No tools available'); addTool('none', 'No tools available');
} else { } else {
_.each(this.compiler.tools, function (tool) { _.each(this.compiler.tools, _.bind(function (tool) {
addTool(tool.tool.id, tool.tool.name); if (this.isSupportedTool(tool)) {
}); addTool(tool.tool.id, tool.tool.name);
}
}, this));
} }
}; };
@@ -1473,12 +1655,14 @@ Compiler.prototype.initListeners = function () {
this.container.on('resize', this.resize, this); this.container.on('resize', this.resize, this);
this.container.on('shown', this.resize, this); this.container.on('shown', this.resize, this);
this.container.on('open', function () { this.container.on('open', function () {
this.eventHub.emit('compilerOpen', this.id, this.sourceEditorId); this.eventHub.emit('compilerOpen', this.id, this.sourceEditorId, this.sourceTreeId);
}, this); }, this);
this.eventHub.on('editorChange', this.onEditorChange, this); this.eventHub.on('editorChange', this.onEditorChange, this);
this.eventHub.on('compilerFlagsChange', this.onCompilerFlagsChange, this); this.eventHub.on('compilerFlagsChange', this.onCompilerFlagsChange, this);
this.eventHub.on('editorClose', this.onEditorClose, this); this.eventHub.on('editorClose', this.onEditorClose, this);
this.eventHub.on('treeClose', this.onTreeClose, this);
this.eventHub.on('colours', this.onColours, this); this.eventHub.on('colours', this.onColours, this);
this.eventHub.on('coloursForCompiler', this.onColoursForCompiler, this);
this.eventHub.on('resendCompilation', this.onResendCompilation, this); this.eventHub.on('resendCompilation', this.onResendCompilation, this);
this.eventHub.on('findCompilers', this.sendCompiler, this); this.eventHub.on('findCompilers', this.sendCompiler, this);
this.eventHub.on('compilerSetDecorations', this.onCompilerSetDecorations, this); this.eventHub.on('compilerSetDecorations', this.onCompilerSetDecorations, this);
@@ -1597,7 +1781,9 @@ Compiler.prototype.onOptionsChange = function (options) {
Compiler.prototype.checkForUnwiseArguments = function (optionsArray) { Compiler.prototype.checkForUnwiseArguments = function (optionsArray) {
// Check if any options are in the unwiseOptions array and remember them // Check if any options are in the unwiseOptions array and remember them
var unwiseOptions = _.intersection(optionsArray, this.compiler.unwiseOptions); var unwiseOptions = _.intersection(optionsArray, _.filter(this.compiler.unwiseOptions, function (opt) {
return opt !== '';
}));
var options = unwiseOptions.length === 1 ? 'Option ' : 'Options '; var options = unwiseOptions.length === 1 ? 'Option ' : 'Options ';
var names = unwiseOptions.join(', '); var names = unwiseOptions.join(', ');
@@ -1651,7 +1837,7 @@ Compiler.prototype.onCompilerChange = function (value) {
}; };
Compiler.prototype.sendCompiler = function () { Compiler.prototype.sendCompiler = function () {
this.eventHub.emit('compiler', this.id, this.compiler, this.options, this.sourceEditorId); this.eventHub.emit('compiler', this.id, this.compiler, this.options, this.sourceEditorId, this.sourceTreeId);
}; };
Compiler.prototype.onEditorClose = function (editor) { Compiler.prototype.onEditorClose = function (editor) {
@@ -1665,6 +1851,15 @@ Compiler.prototype.onEditorClose = function (editor) {
} }
}; };
Compiler.prototype.onTreeClose = function (tree) {
if (tree === this.sourceTreeId) {
this.close();
_.defer(function (self) {
self.container.close();
}, this);
}
};
Compiler.prototype.onFilterChange = function () { Compiler.prototype.onFilterChange = function () {
var filters = this.getEffectiveFilters(); var filters = this.getEffectiveFilters();
this.eventHub.emit('filtersChange', this.id, filters); this.eventHub.emit('filtersChange', this.id, filters);
@@ -1678,6 +1873,7 @@ Compiler.prototype.currentState = function () {
id: this.id, id: this.id,
compiler: this.compiler ? this.compiler.id : '', compiler: this.compiler ? this.compiler.id : '',
source: this.sourceEditorId, source: this.sourceEditorId,
tree: this.sourceTreeId,
options: this.options, options: this.options,
// NB must *not* be effective filters // NB must *not* be effective filters
filters: this.filters.get(), filters: this.filters.get(),
@@ -1696,14 +1892,27 @@ Compiler.prototype.saveState = function () {
}; };
Compiler.prototype.onColours = function (editor, colours, scheme) { Compiler.prototype.onColours = function (editor, colours, scheme) {
if (editor === this.sourceEditorId) { var asmColours = {};
var asmColours = {}; _.each(this.assembly, _.bind(function (x, index) {
_.each(this.assembly, function (x, index) { if (x.source && x.source.line > 0) {
if (x.source && x.source.file === null && x.source.line > 0) { var editorId = this.getEditorIdBySourcefile(x.source);
asmColours[index] = colours[x.source.line - 1]; if (editorId === editor) {
if (!asmColours[editorId]) {
asmColours[editorId] = {};
}
asmColours[editorId][index] = colours[x.source.line - 1];
} }
}); }
this.colours = colour.applyColours(this.outputEditor, asmColours, scheme, this.colours); }, this));
_.each(asmColours, _.bind(function (col) {
this.colours = colour.applyColours(this.outputEditor, col, scheme, this.colours);
}, this));
};
Compiler.prototype.onColoursForCompiler = function (compilerId, colours, scheme) {
if (this.id === compilerId) {
this.colours = colour.applyColours(this.outputEditor, colours, scheme, this.colours);
} }
}; };
@@ -1711,7 +1920,6 @@ Compiler.prototype.getCompilerName = function () {
return this.compiler ? this.compiler.name : 'No compiler set'; return this.compiler ? this.compiler.name : 'No compiler set';
}; };
Compiler.prototype.getLanguageName = function () { Compiler.prototype.getLanguageName = function () {
var lang = options.languages[this.currentLangId]; var lang = options.languages[this.currentLangId];
return lang ? lang.name : '?'; return lang ? lang.name : '?';
@@ -1720,7 +1928,13 @@ Compiler.prototype.getLanguageName = function () {
Compiler.prototype.getPaneName = function () { Compiler.prototype.getPaneName = function () {
var langName = this.getLanguageName(); var langName = this.getLanguageName();
var compName = this.getCompilerName(); var compName = this.getCompilerName();
return compName + ' (' + langName +', Editor #' + this.sourceEditorId + ', Compiler #' + this.id + ')'; if (this.sourceEditorId) {
return compName + ' (' + langName +', Editor #' + this.sourceEditorId + ', Compiler #' + this.id + ')';
} else if (this.sourceTreeId) {
return compName + ' (' + langName +', Tree #' + this.sourceTreeId + ', Compiler #' + this.id + ')';
} else {
return '';
}
}; };
Compiler.prototype.updateCompilerName = function () { Compiler.prototype.updateCompilerName = function () {
@@ -1757,21 +1971,24 @@ Compiler.prototype.clearLinkedLines = function () {
this.updateDecorations(); this.updateDecorations();
}; };
Compiler.prototype.onPanesLinkLine = function (compilerId, lineNumber, colBegin, colEnd, revealLine, sender) { Compiler.prototype.onPanesLinkLine = function (compilerId, lineNumber, colBegin, colEnd, revealLine, sender, editorId) {
if (Number(compilerId) === this.id) { if (Number(compilerId) === this.id) {
var lineNums = []; var lineNums = [];
var directlyLinkedLineNums = []; var directlyLinkedLineNums = [];
var signalFromAnotherPane = sender !== this.getPaneName(); var signalFromAnotherPane = sender !== this.getPaneName();
_.each(this.assembly, function (asmLine, i) { _.each(this.assembly, _.bind(function (asmLine, i) {
if (asmLine.source && asmLine.source.file === null && asmLine.source.line === lineNumber) { if (asmLine.source && asmLine.source.line === lineNumber) {
var line = i + 1; var fileEditorId = this.getEditorIdBySourcefile(asmLine.source);
lineNums.push(line); if (fileEditorId && (editorId === fileEditorId)) {
var currentCol = asmLine.source.column; var line = i + 1;
if (signalFromAnotherPane && currentCol && colBegin <= currentCol && currentCol <= colEnd) { lineNums.push(line);
directlyLinkedLineNums.push(line); var currentCol = asmLine.source.column;
if (signalFromAnotherPane && currentCol && colBegin <= currentCol && currentCol <= colEnd) {
directlyLinkedLineNums.push(line);
}
} }
} }
}); }, this));
if (revealLine && lineNums[0]) { if (revealLine && lineNums[0]) {
this.pushRevealJump(); this.pushRevealJump();
@@ -1881,8 +2098,8 @@ Compiler.prototype.setCompilerVersionPopover = function (version, notification)
}); });
}; };
Compiler.prototype.onRequestCompilation = function (editorId) { Compiler.prototype.onRequestCompilation = function (editorId, treeId) {
if (editorId === this.sourceEditorId) { if ((editorId === this.sourceEditorId) || (treeId && treeId === this.sourceTreeId)) {
this.compile(); this.compile();
} }
}; };
@@ -1975,17 +2192,22 @@ Compiler.prototype.onMouseMove = function (e) {
var sourceLine = -1; var sourceLine = -1;
var sourceColBegin = -1; var sourceColBegin = -1;
var sourceColEnd = -1; var sourceColEnd = -1;
if (hoverAsm.source && !hoverAsm.source.file) { if (hoverAsm.source) {
sourceLine = hoverAsm.source.line; sourceLine = hoverAsm.source.line;
if (hoverAsm.source.column) { if (hoverAsm.source.column) {
sourceColBegin = hoverAsm.source.column; sourceColBegin = hoverAsm.source.column;
sourceColEnd = sourceColBegin; sourceColEnd = sourceColBegin;
} }
var editorId = this.getEditorIdBySourcefile(hoverAsm.source);
if (editorId) {
this.eventHub.emit('editorLinkLine', editorId, sourceLine, sourceColBegin, sourceColEnd, false);
this.eventHub.emit('panesLinkLine', this.id,
sourceLine, sourceColBegin, sourceColEnd,
false, this.getPaneName(), editorId);
}
} }
this.eventHub.emit('editorLinkLine', this.sourceEditorId, sourceLine, sourceColBegin, sourceColEnd, false);
this.eventHub.emit('panesLinkLine', this.id,
sourceLine, sourceColBegin, sourceColEnd,
false, this.getPaneName());
} }
} }
var currentWord = this.outputEditor.getModel().getWordAtPosition(e.target.position); var currentWord = this.outputEditor.getModel().getWordAtPosition(e.target.position);
@@ -2106,8 +2328,9 @@ Compiler.prototype.handleCompilationStatus = function (status) {
this.compilerService.handleCompilationStatus(this.statusLabel, this.statusIcon, status); this.compilerService.handleCompilationStatus(this.statusLabel, this.statusIcon, status);
}; };
Compiler.prototype.onLanguageChange = function (editorId, newLangId) { Compiler.prototype.onLanguageChange = function (editorId, newLangId, treeId) {
if (this.sourceEditorId === editorId) { if ((this.sourceEditorId && this.sourceEditorId === editorId) ||
(this.sourceTreeId && this.sourceTreeId === treeId)) {
var oldLangId = this.currentLangId; var oldLangId = this.currentLangId;
this.currentLangId = newLangId; this.currentLangId = newLangId;
// Store the current selected stuff to come back to it later in the same session (Not state stored!) // Store the current selected stuff to come back to it later in the same session (Not state stored!)

View File

@@ -320,6 +320,7 @@ Conformance.prototype.compileChild = function (compilerEntry) {
skipAsm: true, skipAsm: true,
}, },
lang: this.langId, lang: this.langId,
files: [],
}; };
_.each(this.currentLibs, function (item) { _.each(this.currentLibs, function (item) {

View File

@@ -39,10 +39,10 @@ var TomSelect = require('tom-select');
var Settings = require('../settings'); var Settings = require('../settings');
require('../modes/_all'); require('../modes/_all');
var loadSave = new loadSaveLib.LoadSave(); var loadSave = new loadSaveLib.LoadSave();
var languages = options.languages; var languages = options.languages;
// eslint-disable-next-line max-statements
function Editor(hub, state, container) { function Editor(hub, state, container) {
this.id = state.id || hub.nextEditorId(); this.id = state.id || hub.nextEditorId();
this.container = container; this.container = container;
@@ -57,8 +57,10 @@ function Editor(hub, state, container) {
this.httpRoot = window.httpRoot; this.httpRoot = window.httpRoot;
this.widgetsByCompiler = {}; this.widgetsByCompiler = {};
this.asmByCompiler = {}; this.asmByCompiler = {};
this.defaultFileByCompiler = {};
this.busyCompilers = {}; this.busyCompilers = {};
this.colours = []; this.colours = [];
this.treeCompilers = {};
this.decorations = {}; this.decorations = {};
this.prevDecorations = []; this.prevDecorations = [];
@@ -70,6 +72,8 @@ function Editor(hub, state, container) {
this.alertSystem = new Alert(); this.alertSystem = new Alert();
this.alertSystem.prefixMessage = 'Editor #' + this.id + ': '; this.alertSystem.prefixMessage = 'Editor #' + this.id + ': ';
this.filename = state.filename || false;
this.awaitingInitialResults = false; this.awaitingInitialResults = false;
this.selection = state.selection; this.selection = state.selection;
@@ -82,7 +86,8 @@ function Editor(hub, state, container) {
var legacyReadOnly = state.options && !!state.options.readOnly; var legacyReadOnly = state.options && !!state.options.readOnly;
this.editor = monaco.editor.create(root[0], monacoConfig.extendConfig({ this.editor = monaco.editor.create(root[0], monacoConfig.extendConfig({
language: this.currentLanguage.monaco, language: this.currentLanguage.monaco,
readOnly: !!options.readOnly || legacyReadOnly || window.compilerExplorerOptions.mobileViewer, readOnly: !!options.readOnly || legacyReadOnly ||
(window.compilerExplorerOptions && window.compilerExplorerOptions.mobileViewer),
glyphMargin: !options.embedded, glyphMargin: !options.embedded,
}, this.settings)); }, this.settings));
this.editor.getModel().setEOL(monaco.editor.EndOfLineSequence.LF); this.editor.getModel().setEOL(monaco.editor.EndOfLineSequence.LF);
@@ -198,6 +203,7 @@ Editor.prototype.updateState = function () {
source: this.getSource(), source: this.getSource(),
lang: this.currentLanguage.id, lang: this.currentLanguage.id,
selection: this.selection, selection: this.selection,
filename: this.filename,
}; };
this.fontScale.addState(state); this.fontScale.addState(state);
this.container.setState(state); this.container.setState(state);
@@ -242,7 +248,7 @@ Editor.prototype.initCallbacks = function () {
this.container.on('resize', this.resize, this); this.container.on('resize', this.resize, this);
this.container.on('shown', this.resize, this); this.container.on('shown', this.resize, this);
this.container.on('open', _.bind(function () { this.container.on('open', _.bind(function () {
this.eventHub.emit('editorOpen', this.id); this.eventHub.emit('editorOpen', this.id, this);
}, this)); }, this));
this.container.on('destroy', this.close, this); this.container.on('destroy', this.close, this);
this.container.layoutManager.on('initialised', function () { this.container.layoutManager.on('initialised', function () {
@@ -252,6 +258,9 @@ Editor.prototype.initCallbacks = function () {
this.requestCompilation(); this.requestCompilation();
}, this); }, this);
this.eventHub.on('treeCompilerEditorIncludeChange', this.onTreeCompilerEditorIncludeChange, this);
this.eventHub.on('treeCompilerEditorExcludeChange', this.onTreeCompilerEditorExcludeChange, this);
this.eventHub.on('coloursForEditor', this.onColoursForEditor, this);
this.eventHub.on('compilerOpen', this.onCompilerOpen, this); this.eventHub.on('compilerOpen', this.onCompilerOpen, this);
this.eventHub.on('executorOpen', this.onExecutorOpen, this); this.eventHub.on('executorOpen', this.onExecutorOpen, this);
this.eventHub.on('compilerClose', this.onCompilerClose, this); this.eventHub.on('compilerClose', this.onCompilerClose, this);
@@ -266,6 +275,7 @@ Editor.prototype.initCallbacks = function () {
this.eventHub.on('resize', this.resize, this); this.eventHub.on('resize', this.resize, this);
this.eventHub.on('newSource', this.onNewSource, this); this.eventHub.on('newSource', this.onNewSource, this);
this.eventHub.on('motd', this.onMotd, this); this.eventHub.on('motd', this.onMotd, this);
this.eventHub.on('findEditors', this.sendEditor, this);
this.eventHub.emit('requestMotd'); this.eventHub.emit('requestMotd');
this.editor.getModel().onDidChangeContent(_.bind(function () { this.editor.getModel().onDidChangeContent(_.bind(function () {
@@ -308,6 +318,10 @@ Editor.prototype.initCallbacks = function () {
}, this)); }, this));
}; };
Editor.prototype.sendEditor = function () {
this.eventHub.emit('editorOpen', this.id, this);
};
Editor.prototype.onMouseMove = function (e) { Editor.prototype.onMouseMove = function (e) {
if (e !== null && e.target !== null && this.settings.hoverShowSource && e.target.position !== null) { if (e !== null && e.target !== null && this.settings.hoverShowSource && e.target.position !== null) {
var pos = e.target.position; var pos = e.target.position;
@@ -441,7 +455,15 @@ Editor.prototype.initButtons = function (state) {
$(this.domRoot).keydown(_.bind(function (event) { $(this.domRoot).keydown(_.bind(function (event) {
if ((event.ctrlKey || event.metaKey) && String.fromCharCode(event.which).toLowerCase() === 's') { if ((event.ctrlKey || event.metaKey) && String.fromCharCode(event.which).toLowerCase() === 's') {
event.preventDefault(); event.preventDefault();
if (this.settings.enableCtrlS) { if (this.settings.enableCtrlStree && this.hub.hasTree()) {
var trees = this.hub.trees;
// todo: change when multiple trees are used
if (trees && trees.length > 0) {
trees[0].multifileService.includeByEditorId(this.id).then(_.bind(function () {
trees[0].refresh();
}, this));
}
} else if (this.settings.enableCtrlS) {
loadSave.setMinimalOptions(this.getSource(), this.currentLanguage); loadSave.setMinimalOptions(this.getSource(), this.currentLanguage);
if (!loadSave.onSaveToFile(this.id)) { if (!loadSave.onSaveToFile(this.id)) {
this.showLoadSaver(); this.showLoadSaver();
@@ -606,6 +628,9 @@ Editor.prototype.updateOpenInQuickBench = function () {
}; };
Editor.prototype.changeLanguage = function (newLang) { Editor.prototype.changeLanguage = function (newLang) {
if (newLang === 'cmake') {
this.selectize.addOption(languages.cmake);
}
this.selectize.setValue(newLang); this.selectize.setValue(newLang);
}; };
@@ -618,12 +643,18 @@ Editor.prototype.tryPanesLinkLine = function (thisLineNumber, column, reveal) {
var selectedToken = this.getTokenSpan(thisLineNumber, column); var selectedToken = this.getTokenSpan(thisLineNumber, column);
_.each(this.asmByCompiler, _.bind(function (asms, compilerId) { _.each(this.asmByCompiler, _.bind(function (asms, compilerId) {
this.eventHub.emit('panesLinkLine', compilerId, thisLineNumber, this.eventHub.emit('panesLinkLine', compilerId, thisLineNumber,
selectedToken.colBegin, selectedToken.colEnd, reveal); selectedToken.colBegin, selectedToken.colEnd, reveal, undefined, this.id);
}, this)); }, this));
}; };
Editor.prototype.requestCompilation = function () { Editor.prototype.requestCompilation = function () {
this.eventHub.emit('requestCompilation', this.id); this.eventHub.emit('requestCompilation', this.id);
_.each(this.hub.trees, _.bind(function (tree) {
if (tree.multifileService.isEditorPartOfProject(this.id)) {
this.eventHub.emit('requestCompilation', this.id, tree.id);
}
}, this));
}; };
Editor.prototype.initEditorActions = function () { Editor.prototype.initEditorActions = function () {
@@ -959,24 +990,54 @@ Editor.prototype.onSettingsChange = function (newSettings) {
}; };
Editor.prototype.numberUsedLines = function () { Editor.prototype.numberUsedLines = function () {
if (_.any(this.busyCompilers)) return;
if (!this.settings.colouriseAsm) {
this.updateColours([]);
return;
}
if (this.hub.hasTree()) {
return;
}
var result = {}; var result = {};
// First, note all lines used. // First, note all lines used.
_.each(this.asmByCompiler, function (asm) { _.each(this.asmByCompiler, _.bind(function (asm, compilerId) {
_.each(asm, function (asmLine) { _.each(asm, _.bind(function (asmLine) {
// If the line has a source indicator, and the source indicator is null (i.e. the var foundInTrees = false;
// user's input file), then tag it as used.
if (asmLine.source && asmLine.source.file === null && asmLine.source.line > 0) _.each(this.treeCompilers, _.bind(function (compilerIds, treeId) {
result[asmLine.source.line - 1] = true; if (compilerIds[compilerId]) {
}); var tree = this.hub.getTreeById(Number(treeId));
}); var defaultFile = this.defaultFileByCompiler[compilerId];
foundInTrees = true;
if (asmLine.source && asmLine.source.line > 0) {
var sourcefilename = asmLine.source.file ? asmLine.source.file : defaultFile;
if (this.id === tree.multifileService.getEditorIdByFilename(sourcefilename)) {
result[asmLine.source.line - 1] = true;
}
}
}
}, this));
if (!foundInTrees) {
if (asmLine.source &&
(asmLine.source.file === null || asmLine.source.mainsource) &&
asmLine.source.line > 0) {
result[asmLine.source.line - 1] = true;
}
}
}, this));
}, this));
// Now assign an ordinal to each used line. // Now assign an ordinal to each used line.
var ordinal = 0; var ordinal = 0;
_.each(result, function (v, k) { _.each(result, function (v, k) {
result[k] = ordinal++; result[k] = ordinal++;
}); });
if (_.any(this.busyCompilers)) return; this.updateColours(result);
this.updateColours(this.settings.colouriseAsm ? result : []);
}; };
Editor.prototype.updateColours = function (colours) { Editor.prototype.updateColours = function (colours) {
@@ -984,7 +1045,7 @@ Editor.prototype.updateColours = function (colours) {
this.eventHub.emit('colours', this.id, colours, this.settings.colourScheme); this.eventHub.emit('colours', this.id, colours, this.settings.colourScheme);
}; };
Editor.prototype.onCompilerOpen = function (compilerId, editorId) { Editor.prototype.onCompilerOpen = function (compilerId, editorId, treeId) {
if (editorId === this.id) { if (editorId === this.id) {
// On any compiler open, rebroadcast our state in case they need to know it. // On any compiler open, rebroadcast our state in case they need to know it.
if (this.waitingForLanguage) { if (this.waitingForLanguage) {
@@ -1000,8 +1061,36 @@ Editor.prototype.onCompilerOpen = function (compilerId, editorId) {
} }
} }
} }
this.maybeEmitChange(true, compilerId);
if (treeId > 0) {
if (!this.treeCompilers[treeId]) {
this.treeCompilers[treeId] = {};
}
this.treeCompilers[treeId][compilerId] = true;
}
this.ourCompilers[compilerId] = true; this.ourCompilers[compilerId] = true;
if (!treeId) {
this.maybeEmitChange(true, compilerId);
}
}
};
Editor.prototype.onTreeCompilerEditorIncludeChange = function (treeId, editorId, compilerId) {
if (this.id === editorId) {
this.onCompilerOpen(compilerId, editorId, treeId);
}
};
Editor.prototype.onTreeCompilerEditorExcludeChange = function (treeId, editorId, compilerId) {
if (this.id === editorId) {
this.onCompilerClose(compilerId);
}
};
Editor.prototype.onColoursForEditor = function (editorId, colours, scheme) {
if (this.id === editorId) {
this.colours = colour.applyColours(this.editor, colours, scheme, this.colours);
} }
}; };
@@ -1012,13 +1101,18 @@ Editor.prototype.onExecutorOpen = function (executorId, editorId) {
} }
}; };
Editor.prototype.onCompilerClose = function (compilerId) { Editor.prototype.onCompilerClose = function (compilerId, unused, treeId) {
if (this.treeCompilers[treeId]) {
delete this.treeCompilers[treeId][compilerId];
}
if (this.ourCompilers[compilerId]) { if (this.ourCompilers[compilerId]) {
monaco.editor.setModelMarkers(this.editor.getModel(), compilerId, []); monaco.editor.setModelMarkers(this.editor.getModel(), compilerId, []);
delete this.widgetsByCompiler[compilerId]; delete this.widgetsByCompiler[compilerId];
delete this.asmByCompiler[compilerId]; delete this.asmByCompiler[compilerId];
delete this.busyCompilers[compilerId]; delete this.busyCompilers[compilerId];
delete this.ourCompilers[compilerId]; delete this.ourCompilers[compilerId];
delete this.defaultFileByCompiler[compilerId];
this.numberUsedLines(); this.numberUsedLines();
} }
}; };
@@ -1036,10 +1130,25 @@ Editor.prototype.onCompiling = function (compilerId) {
Editor.prototype.onCompileResponse = function (compilerId, compiler, result) { Editor.prototype.onCompileResponse = function (compilerId, compiler, result) {
if (!this.ourCompilers[compilerId]) return; if (!this.ourCompilers[compilerId]) return;
this.busyCompilers[compilerId] = false; this.busyCompilers[compilerId] = false;
var output = (result.stdout || []).concat(result.stderr || []); var output = (result.stdout || []).concat(result.stderr || []);
var widgets = _.compact(_.map(output, function (obj) { var widgets = _.compact(_.map(output, function (obj) {
if (!obj.tag) return; if (!obj.tag) return;
var trees = this.hub.trees;
if (trees && trees.length > 0) {
if (obj.tag.file) {
if (this.id !== trees[0].multifileService.getEditorIdByFilename(obj.tag.file)) {
return;
}
} else {
if (this.id !== trees[0].multifileService.getMainSourceEditorId()) {
return;
}
}
}
var severity = 3; // error var severity = 3; // error
if (obj.tag.text.match(/^warning/)) severity = 2; if (obj.tag.text.match(/^warning/)) severity = 2;
if (obj.tag.text.match(/^note/)) severity = 1; if (obj.tag.text.match(/^note/)) severity = 1;
@@ -1072,7 +1181,19 @@ Editor.prototype.onCompileResponse = function (compilerId, compiler, result) {
}; };
}, this); }, this);
this.updateDecorations(); this.updateDecorations();
this.asmByCompiler[compilerId] = result.asm;
if (result.result && result.result.asm) {
this.asmByCompiler[compilerId] = result.result.asm;
} else {
this.asmByCompiler[compilerId] = result.asm;
}
if (result.inputFilename) {
this.defaultFileByCompiler[compilerId] = result.inputFilename;
} else {
this.defaultFileByCompiler[compilerId] = 'example' + this.currentLanguage.extensions[0];
}
this.numberUsedLines(); this.numberUsedLines();
}; };
@@ -1217,8 +1338,9 @@ Editor.prototype.initLoadSaver = function () {
this.loadSaveButton this.loadSaveButton
.off('click') .off('click')
.click(_.bind(function () { .click(_.bind(function () {
loadSave.run(_.bind(function (text) { loadSave.run(_.bind(function (text, filename) {
this.setSource(text); this.setSource(text);
this.setFilename(filename);
this.updateState(); this.updateState();
this.maybeEmitChange(true); this.maybeEmitChange(true);
this.requestCompilation(); this.requestCompilation();
@@ -1231,7 +1353,7 @@ Editor.prototype.onLanguageChange = function (newLangId) {
if (newLangId !== this.currentLanguage.id) { if (newLangId !== this.currentLanguage.id) {
var oldLangId = this.currentLanguage.id; var oldLangId = this.currentLanguage.id;
this.currentLanguage = languages[newLangId]; this.currentLanguage = languages[newLangId];
if (!this.waitingForLanguage && !this.settings.keepSourcesOnLangChange) { if (!this.waitingForLanguage && !this.settings.keepSourcesOnLangChange && (newLangId !== 'cmake')) {
this.editorSourceByLang[oldLangId] = this.getSource(); this.editorSourceByLang[oldLangId] = this.getSource();
this.updateEditorCode(); this.updateEditorCode();
} }
@@ -1255,11 +1377,25 @@ Editor.prototype.onLanguageChange = function (newLangId) {
}; };
Editor.prototype.getPaneName = function () { Editor.prototype.getPaneName = function () {
return this.currentLanguage.name + ' source #' + this.id; if (this.filename) {
return this.filename;
} else {
return this.currentLanguage.name + ' source #' + this.id;
}
};
Editor.prototype.setFilename = function (name) {
this.filename = name;
this.updateTitle();
this.updateState();
}; };
Editor.prototype.updateTitle = function () { Editor.prototype.updateTitle = function () {
this.container.setTitle(this.getPaneName()); var name = this.getPaneName();
if (name.endsWith('CMakeLists.txt')) {
this.changeLanguage('cmake');
}
this.container.setTitle(name);
}; };
// Called every time we change language, so we get the relevant code // Called every time we change language, so we get the relevant code
@@ -1271,6 +1407,7 @@ Editor.prototype.close = function () {
this.eventHub.unsubscribe(); this.eventHub.unsubscribe();
this.eventHub.emit('editorClose', this.id); this.eventHub.emit('editorClose', this.id);
this.editor.dispose(); this.editor.dispose();
this.hub.removeEditor(this.id);
}; };
module.exports = { module.exports = {

View File

@@ -59,7 +59,12 @@ function Executor(hub, container, state) {
this.domRoot = container.getElement(); this.domRoot = container.getElement();
this.domRoot.html($('#executor').html()); this.domRoot.html($('#executor').html());
this.contentRoot = this.domRoot.find('.content'); this.contentRoot = this.domRoot.find('.content');
this.sourceEditorId = state.source || 1; this.sourceTreeId = state.tree ? state.tree : false;
if (this.sourceTreeId) {
this.sourceEditorId = false;
} else {
this.sourceEditorId = state.source || 1;
}
this.id = state.id || hub.nextExecutorId(); this.id = state.id || hub.nextExecutorId();
this.settings = Settings.getStoredSettings(); this.settings = Settings.getStoredSettings();
this.initLangAndCompiler(state); this.initLangAndCompiler(state);
@@ -73,7 +78,9 @@ function Executor(hub, container, state) {
this.lastResult = {}; this.lastResult = {};
this.lastTimeTaken = 0; this.lastTimeTaken = 0;
this.pendingRequestSentAt = 0; this.pendingRequestSentAt = 0;
this.pendingCMakeRequestSentAt = 0;
this.nextRequest = null; this.nextRequest = null;
this.nextCMakeRequest = null;
this.alertSystem = new Alert(); this.alertSystem = new Alert();
this.alertSystem.prefixMessage = 'Executor #' + this.id + ': '; this.alertSystem.prefixMessage = 'Executor #' + this.id + ': ';
@@ -104,12 +111,31 @@ function Executor(hub, container, state) {
eventCategory: 'OpenViewPane', eventCategory: 'OpenViewPane',
eventAction: 'Executor', eventAction: 'Executor',
}); });
if (this.sourceTreeId) {
this.compile();
}
} }
Executor.prototype.compilerIsVisible = function (compiler) { Executor.prototype.compilerIsVisible = function (compiler) {
return compiler.supportsExecute; return compiler.supportsExecute;
}; };
Executor.prototype.getEditorIdBySourcefile = function (sourcefile) {
if (this.sourceTreeId) {
var tree = this.hub.getTreeById(this.sourceTreeId);
if (tree) {
return tree.multifileService.getEditorIdByFilename(sourcefile.file);
}
} else {
if (sourcefile !== null && (sourcefile.file === null || sourcefile.mainsource)) {
return this.sourceEditorId;
}
}
return false;
};
Executor.prototype.initLangAndCompiler = function (state) { Executor.prototype.initLangAndCompiler = function (state) {
var langId = state.lang; var langId = state.lang;
var compilerId = state.compiler; var compilerId = state.compiler;
@@ -181,6 +207,7 @@ Executor.prototype.compile = function (bypassCache) {
}, },
compilerOptions: { compilerOptions: {
executorRequest: true, executorRequest: true,
skipAsm: true,
}, },
filters: {execute: true}, filters: {execute: true},
tools: [], tools: [],
@@ -194,12 +221,21 @@ Executor.prototype.compile = function (bypassCache) {
}); });
}); });
if (this.sourceTreeId) {
this.compileFromTree(options, bypassCache);
} else {
this.compileFromEditorSource(options, bypassCache);
}
};
Executor.prototype.compileFromEditorSource = function (options, bypassCache) {
this.compilerService.expand(this.source).then(_.bind(function (expanded) { this.compilerService.expand(this.source).then(_.bind(function (expanded) {
var request = { var request = {
source: expanded || '', source: expanded || '',
compiler: this.compiler ? this.compiler.id : '', compiler: this.compiler ? this.compiler.id : '',
options: options, options: options,
lang: this.currentLangId, lang: this.currentLangId,
files: [],
}; };
if (bypassCache) request.bypassCache = true; if (bypassCache) request.bypassCache = true;
if (!this.compiler) { if (!this.compiler) {
@@ -210,6 +246,68 @@ Executor.prototype.compile = function (bypassCache) {
}, this)); }, this));
}; };
Executor.prototype.compileFromTree = function (options, bypassCache) {
var tree = this.hub.getTreeById(this.sourceTreeId);
var mainsource = tree.multifileService.getMainSource();
var request = {
source: mainsource,
compiler: this.compiler ? this.compiler.id : '',
options: options,
lang: this.currentLangId,
files: tree.multifileService.getFiles(),
};
var treeState = tree.currentState();
var cmakeProject = treeState.isCMakeProject;
if (bypassCache) request.bypassCache = true;
if (!this.compiler) {
this.onCompileResponse(request, errorResult('<Please select a compiler>'), false);
} else if (cmakeProject && request.source === '') {
this.onCompileResponse(request, errorResult('<Please supply a CMakeLists.txt>'), false);
} else {
if (cmakeProject) {
request.options.compilerOptions.cmakeArgs = treeState.cmakeArgs;
request.options.compilerOptions.customOutputFilename = treeState.customOutputFilename;
this.sendCMakeCompile(request);
} else {
this.sendCompile(request);
}
}
};
Executor.prototype.sendCMakeCompile = function (request) {
var onCompilerResponse = _.bind(this.onCMakeResponse, this);
if (this.pendingCMakeRequestSentAt) {
// If we have a request pending, then just store this request to do once the
// previous request completes.
this.nextCMakeRequest = request;
return;
}
// this.eventHub.emit('compiling', this.id, this.compiler);
// Display the spinner
this.handleCompilationStatus({code: 4});
this.pendingCMakeRequestSentAt = Date.now();
// After a short delay, give the user some indication that we're working on their
// compilation.
this.compilerService.submitCMake(request)
.then(function (x) {
onCompilerResponse(request, x.result, x.localCacheHit);
})
.catch(function (x) {
var message = 'Unknown error';
if (_.isString(x)) {
message = x;
} else if (x) {
message = x.error || x.code || x;
}
onCompilerResponse(request, errorResult(message), false);
});
};
Executor.prototype.sendCompile = function (request) { Executor.prototype.sendCompile = function (request) {
var onCompilerResponse = _.bind(this.onCompileResponse, this); var onCompilerResponse = _.bind(this.onCompileResponse, this);
@@ -240,21 +338,27 @@ Executor.prototype.sendCompile = function (request) {
}); });
}; };
Executor.prototype.addCompilerOutputLine = function (msg, container, lineNum, column) { Executor.prototype.addCompilerOutputLine = function (msg, container, lineNum/*, column*/) {
var elem = $('<div/>').appendTo(container); var elem = $('<div/>').appendTo(container);
if (lineNum) { if (lineNum) {
elem.html( elem.html(
$('<span class="linked-compiler-output-line"></span>') $('<span class="linked-compiler-output-line"></span>')
.html(msg) .html(msg)
.click(_.bind(function (e) { .click(_.bind(function (e) {
this.eventHub.emit('editorLinkLine', this.sourceEditorId, lineNum, column, column + 1, true); // var editorId = this.getEditorIdBySourcefile(source);
// if (editorId) {
// this.eventHub.emit('editorLinkLine', editorId, lineNum, column, column + 1, true);
// }
// do not bring user to the top of index.html // do not bring user to the top of index.html
// http://stackoverflow.com/questions/3252730 // http://stackoverflow.com/questions/3252730
e.preventDefault(); e.preventDefault();
return false; return false;
}, this)) }, this))
.on('mouseover', _.bind(function () { .on('mouseover', _.bind(function () {
this.eventHub.emit('editorLinkLine', this.sourceEditorId, lineNum, column, column + 1, false); // var editorId = this.getEditorIdBySourcefile(source);
// if (editorId) {
// this.eventHub.emit('editorLinkLine', editorId, lineNum, column, column + 1, false);
// }
}, this)) }, this))
); );
} else { } else {
@@ -282,14 +386,68 @@ Executor.prototype.handleOutput = function (output, element, ansiParser) {
return outElem; return outElem;
}; };
Executor.prototype.onCompileResponse = function (request, result, cached) { Executor.prototype.getBuildStdoutFromResult = function (result) {
// Save which source produced this change. It should probably be saved earlier though var arr = [];
if (result.buildResult) {
arr = arr.concat(result.buildResult.stdout);
}
if (result.buildsteps) {
_.each(result.buildsteps, function (step) {
arr = arr.concat(step.stdout);
});
}
return arr;
};
Executor.prototype.getBuildStderrFromResult = function (result) {
var arr = [];
if (result.buildResult) {
arr = arr.concat(result.buildResult.stderr);
}
if (result.buildsteps) {
_.each(result.buildsteps, function (step) {
arr = arr.concat(step.stderr);
});
}
return arr;
};
Executor.prototype.onCMakeResponse = function (request, result, cached) {
result.source = this.source; result.source = this.source;
this.lastResult = result; this.lastResult = result;
var timeTaken = Math.max(0, Date.now() - this.pendingRequestSentAt); var timeTaken = Math.max(0, Date.now() - this.pendingCMakeRequestSentAt);
this.lastTimeTaken = timeTaken; this.lastTimeTaken = timeTaken;
var wasRealReply = this.pendingRequestSentAt > 0; var wasRealReply = this.pendingCMakeRequestSentAt > 0;
this.pendingRequestSentAt = 0; this.pendingCMakeRequestSentAt = 0;
this.handleCompileRequestAndResponse(request, result, cached, wasRealReply, timeTaken);
this.doNextCMakeRequest();
};
Executor.prototype.doNextCompileRequest = function () {
if (this.nextRequest) {
var next = this.nextRequest;
this.nextRequest = null;
this.sendCompile(next);
}
};
Executor.prototype.doNextCMakeRequest = function () {
if (this.nextCMakeRequest) {
var next = this.nextCMakeRequest;
this.nextCMakeRequest = null;
this.sendCMakeCompile(next);
}
};
Executor.prototype.handleCompileRequestAndResponse = function (request, result, cached, wasRealReply, timeTaken) {
ga.proxy('send', { ga.proxy('send', {
hitType: 'event', hitType: 'event',
eventCategory: 'Compile', eventCategory: 'Compile',
@@ -305,15 +463,14 @@ Executor.prototype.onCompileResponse = function (request, result, cached) {
}); });
this.clearPreviousOutput(); this.clearPreviousOutput();
var compileStdout = result.buildResult.stdout || []; var compileStdout = this.getBuildStdoutFromResult(result);
var compileStderr = result.buildResult.stderr || []; var compileStderr = this.getBuildStderrFromResult(result);
var execStdout = result.stdout || []; var execStdout = result.stdout || result.execResult.stdout || [];
var execStderr = result.stderr || []; var execStderr = result.stderr || result.execResult.stderr || [];
if (!result.didExecute) { if (!result.didExecute) {
this.executionStatusSection.append($('<div/>').text('Could not execute the program')); this.executionStatusSection.append($('<div/>').text('Could not execute the program'));
this.executionStatusSection.append($('<div/>').text('Compiler returned: ' + result.buildResult.code)); this.executionStatusSection.append($('<div/>').text('Compiler returned: ' + result.buildResult.code));
} }
if (compileStdout.length > 0) { if (compileStdout.length > 0) {
this.compilerOutputSection.append($('<div/>').text('Compiler stdout')); this.compilerOutputSection.append($('<div/>').text('Compiler stdout'));
this.handleOutput(compileStdout, this.compilerOutputSection, this.normalAnsiToHtml); this.handleOutput(compileStdout, this.compilerOutputSection, this.normalAnsiToHtml);
@@ -323,7 +480,8 @@ Executor.prototype.onCompileResponse = function (request, result, cached) {
this.handleOutput(compileStderr, this.compilerOutputSection, this.errorAnsiToHtml); this.handleOutput(compileStderr, this.compilerOutputSection, this.errorAnsiToHtml);
} }
if (result.didExecute) { if (result.didExecute) {
this.executionOutputSection.append($('<div/>').text('Program returned: ' + result.code)); var exitCode = result.execResult ? result.execResult.code : result.code;
this.executionOutputSection.append($('<div/>').text('Program returned: ' + exitCode));
if (execStdout.length > 0) { if (execStdout.length > 0) {
this.executionOutputSection.append($('<div/>').text('Program stdout')); this.executionOutputSection.append($('<div/>').text('Program stdout'));
var outElem = this.handleOutput(execStdout, this.executionOutputSection, this.normalAnsiToHtml); var outElem = this.handleOutput(execStdout, this.executionOutputSection, this.normalAnsiToHtml);
@@ -348,12 +506,20 @@ Executor.prototype.onCompileResponse = function (request, result, cached) {
result.buildResult.compilationOptions ? result.buildResult.compilationOptions.join(' ') : ''); result.buildResult.compilationOptions ? result.buildResult.compilationOptions.join(' ') : '');
this.eventHub.emit('executeResult', this.id, this.compiler, result, languages[this.currentLangId]); this.eventHub.emit('executeResult', this.id, this.compiler, result, languages[this.currentLangId]);
};
if (this.nextRequest) { Executor.prototype.onCompileResponse = function (request, result, cached) {
var next = this.nextRequest; // Save which source produced this change. It should probably be saved earlier though
this.nextRequest = null; result.source = this.source;
this.sendCompile(next); this.lastResult = result;
} var timeTaken = Math.max(0, Date.now() - this.pendingRequestSentAt);
this.lastTimeTaken = timeTaken;
var wasRealReply = this.pendingRequestSentAt > 0;
this.pendingRequestSentAt = 0;
this.handleCompileRequestAndResponse(request, result, cached, wasRealReply, timeTaken);
this.doNextCompileRequest();
}; };
Executor.prototype.resendResult = function () { Executor.prototype.resendResult = function () {
@@ -371,6 +537,19 @@ Executor.prototype.onResendExecutionResult = function (id) {
}; };
Executor.prototype.onEditorChange = function (editor, source, langId, compilerId) { Executor.prototype.onEditorChange = function (editor, source, langId, compilerId) {
if (this.sourceTreeId) {
var tree = this.hub.getTreeById(this.sourceTreeId);
if (tree) {
if (tree.multifileService.isEditorPartOfProject(editor)) {
if (this.settings.compileOnChange) {
this.compile();
return;
}
}
}
}
if (editor === this.sourceEditorId && langId === this.currentLangId && if (editor === this.sourceEditorId && langId === this.currentLangId &&
(compilerId === undefined)) { (compilerId === undefined)) {
this.source = source; this.source = source;
@@ -623,8 +802,8 @@ Executor.prototype.onExecStdinChange = function (newStdin) {
this.compile(); this.compile();
}; };
Executor.prototype.onRequestCompilation = function (editorId) { Executor.prototype.onRequestCompilation = function (editorId, treeId) {
if (editorId === this.sourceEditorId) { if ((editorId === this.sourceEditorId) || (treeId && treeId === this.sourceTreeId)) {
this.compile(); this.compile();
} }
}; };
@@ -685,6 +864,7 @@ Executor.prototype.currentState = function () {
id: this.id, id: this.id,
compiler: this.compiler ? this.compiler.id : '', compiler: this.compiler ? this.compiler.id : '',
source: this.sourceEditorId, source: this.sourceEditorId,
tree: this.sourceTreeId,
options: this.options, options: this.options,
execArgs: this.executionArguments, execArgs: this.executionArguments,
execStdin: this.executionStdin, execStdin: this.executionStdin,
@@ -714,10 +894,20 @@ Executor.prototype.getLanguageName = function () {
return lang ? lang.name : '?'; return lang ? lang.name : '?';
}; };
Executor.prototype.getLinkHint = function () {
var linkhint = '';
if (this.sourceTreeId) {
linkhint = 'Tree #' + this.sourceTreeId;
} else {
linkhint = 'Editor #' + this.sourceEditorId;
}
return linkhint;
};
Executor.prototype.getPaneName = function () { Executor.prototype.getPaneName = function () {
var langName = this.getLanguageName(); var langName = this.getLanguageName();
var compName = this.getCompilerName(); var compName = this.getCompilerName();
return 'Executor ' + compName + ' (' + langName + ', Editor #' + this.sourceEditorId + ')'; return 'Executor ' + compName + ' (' + langName + ',' + this.getLinkHint() + ')';
}; };
Executor.prototype.updateCompilerName = function () { Executor.prototype.updateCompilerName = function () {

View File

@@ -44,6 +44,8 @@ function Output(hub, container, state) {
this.container = container; this.container = container;
this.compilerId = state.compiler; this.compilerId = state.compiler;
this.editorId = state.editor; this.editorId = state.editor;
this.treeId = state.tree;
this.hub = hub;
this.eventHub = hub.createEventHub(); this.eventHub = hub.createEventHub();
this.domRoot = container.getElement(); this.domRoot = container.getElement();
this.domRoot.html($('#compiler-output').html()); this.domRoot.html($('#compiler-output').html());
@@ -109,6 +111,7 @@ Output.prototype.currentState = function () {
var state = { var state = {
compiler: this.compilerId, compiler: this.compilerId,
editor: this.editorId, editor: this.editorId,
tree: this.treeId,
wrap: options.wrap, wrap: options.wrap,
}; };
this.fontScale.addState(state); this.fontScale.addState(state);
@@ -126,7 +129,7 @@ Output.prototype.addOutputLines = function (result) {
if (obj.text === '') { if (obj.text === '') {
this.add('<br/>'); this.add('<br/>');
} else { } else {
this.add(this.normalAnsiToHtml.toHtml(obj.text), lineNumber, columnNumber); this.add(this.normalAnsiToHtml.toHtml(obj.text), lineNumber, columnNumber, obj.tag ? obj.tag.file : false);
} }
}, this); }, this);
}; };
@@ -143,15 +146,23 @@ Output.prototype.onCompileResult = function (id, compiler, result) {
this.contentRoot.empty(); this.contentRoot.empty();
this.addOutputLines(result); if (result.buildsteps) {
if (!result.execResult) { _.each(result.buildsteps, _.bind(function (step) {
this.add('Compiler returned: ' + result.code); this.add('Step ' + step.step + ' returned: ' + step.code);
this.addOutputLines(step);
}, this));
} else { } else {
this.add('ASM generation compiler returned: ' + result.code); this.addOutputLines(result);
this.addOutputLines(result.execResult.buildResult); if (!result.execResult) {
this.add('Execution build compiler returned: ' + result.execResult.buildResult.code); this.add('Compiler returned: ' + result.code);
} else {
this.add('ASM generation compiler returned: ' + result.code);
this.addOutputLines(result.execResult.buildResult);
this.add('Execution build compiler returned: ' + result.execResult.buildResult.code);
}
} }
if (result.execResult && result.execResult.didExecute) {
if (result.execResult && (result.execResult.didExecute || result.didExecute)) {
this.add('Program returned: ' + result.execResult.code); this.add('Program returned: ' + result.execResult.code);
if (result.execResult.stderr.length || result.execResult.stdout.length) { if (result.execResult.stderr.length || result.execResult.stdout.length) {
_.each(result.execResult.stderr, function (obj) { _.each(result.execResult.stderr, function (obj) {
@@ -186,21 +197,40 @@ Output.prototype.programOutput = function (msg, color) {
elem.css('color', color); elem.css('color', color);
}; };
Output.prototype.add = function (msg, lineNum, column) { Output.prototype.getEditorIdByFilename = function (filename) {
var tree = this.hub.getTreeById(this.treeId);
if (tree) {
return tree.multifileService.getEditorIdByFilename(filename);
}
return false;
};
Output.prototype.emitEditorLinkLine = function (lineNum, column, filename, goto) {
if (this.editorId) {
this.eventHub.emit('editorLinkLine', this.editorId, lineNum, column, column + 1, goto);
} else if (filename) {
var editorId = this.getEditorIdByFilename(filename);
if (editorId) {
this.eventHub.emit('editorLinkLine', editorId, lineNum, column, column + 1, goto);
}
}
};
Output.prototype.add = function (msg, lineNum, column, filename) {
var elem = $('<div/>').appendTo(this.contentRoot); var elem = $('<div/>').appendTo(this.contentRoot);
if (lineNum) { if (lineNum) {
elem.html( elem.html(
$('<span class="linked-compiler-output-line"></span>') $('<span class="linked-compiler-output-line"></span>')
.html(msg) .html(msg)
.click(_.bind(function (e) { .on('click', _.bind(function (e) {
this.eventHub.emit('editorLinkLine', this.editorId, lineNum, column, column + 1, true); this.emitEditorLinkLine(lineNum, column, filename, true);
// do not bring user to the top of index.html // do not bring user to the top of index.html
// http://stackoverflow.com/questions/3252730 // http://stackoverflow.com/questions/3252730
e.preventDefault(); e.preventDefault();
return false; return false;
}, this)) }, this))
.on('mouseover', _.bind(function () { .on('mouseover', _.bind(function () {
this.eventHub.emit('editorLinkLine', this.editorId, lineNum, column, column + 1, false); this.emitEditorLinkLine(lineNum, column, filename, false);
}, this)) }, this))
); );
} else { } else {

View File

@@ -50,6 +50,7 @@ function Tool(hub, container, state) {
this.container = container; this.container = container;
this.compilerId = state.compiler; this.compilerId = state.compiler;
this.editorId = state.editor; this.editorId = state.editor;
this.treeId = state.tree;
this.toolId = state.toolId; this.toolId = state.toolId;
this.toolName = 'Tool'; this.toolName = 'Tool';
this.compilerService = hub.compilerService; this.compilerService = hub.compilerService;
@@ -146,7 +147,7 @@ Tool.prototype.initCallbacks = function () {
}; };
Tool.prototype.onLanguageChange = function (editorId, newLangId) { Tool.prototype.onLanguageChange = function (editorId, newLangId) {
if (this.editorId === editorId) { if (this.editorId && this.editorId === editorId) {
var tools = ceoptions.tools[newLangId]; var tools = ceoptions.tools[newLangId];
this.toggleUsable(tools && tools[this.toolId]); this.toggleUsable(tools && tools[this.toolId]);
} }
@@ -345,6 +346,7 @@ Tool.prototype.currentState = function () {
var state = { var state = {
compiler: this.compilerId, compiler: this.compilerId,
editor: this.editorId, editor: this.editorId,
tree: this.treeId,
wrap: options.wrap, wrap: options.wrap,
toolId: this.toolId, toolId: this.toolId,
args: this.getInputArgs(), args: this.getInputArgs(),
@@ -397,6 +399,10 @@ Tool.prototype.onCompileResult = function (id, compiler, result) {
toolResult = _.find(result.tools, function (tool) { toolResult = _.find(result.tools, function (tool) {
return (tool.id === this.toolId); return (tool.id === this.toolId);
}, this); }, this);
} else if (result && result.result && result.result.tools) {
toolResult = _.find(result.result.tools, function (tool) {
return (tool.id === this.toolId);
}, this);
} }
var toolInfo = null; var toolInfo = null;
@@ -446,7 +452,7 @@ Tool.prototype.onCompileResult = function (id, compiler, result) {
this.toolName = toolResult.name; this.toolName = toolResult.name;
this.updateCompilerName(); this.updateCompilerName();
if (toolResult.sourcechanged) { if (toolResult.sourcechanged && this.editorId) {
this.eventHub.emit('newSource', this.editorId, toolResult.newsource); this.eventHub.emit('newSource', this.editorId, toolResult.newsource);
} }
} else { } else {
@@ -460,12 +466,12 @@ Tool.prototype.onCompileResult = function (id, compiler, result) {
Tool.prototype.add = function (msg, lineNum) { Tool.prototype.add = function (msg, lineNum) {
var elem = $('<div/>').appendTo(this.plainContentRoot); var elem = $('<div/>').appendTo(this.plainContentRoot);
if (lineNum) { if (lineNum && this.editorId) {
elem.html( elem.html(
$('<a></a>') $('<a></a>')
.prop('href', 'javascript:;') .prop('href', 'javascript:;')
.html(msg) .html(msg)
.click(_.bind(function (e) { .on('click', _.bind(function (e) {
this.eventHub.emit('editorSetDecoration', this.editorId, lineNum, true); this.eventHub.emit('editorSetDecoration', this.editorId, lineNum, true);
e.preventDefault(); e.preventDefault();
return false; return false;

631
static/panes/tree.ts Normal file
View File

@@ -0,0 +1,631 @@
// Copyright (c) 2021, Compiler Explorer Authors
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
import { MultifileFile, MultifileService, MultifileServiceState } from "../multifile-service";
import { saveAs } from "file-saver";
import { LineColouring } from "../line-colouring";
const _ = require('underscore');
const $ = require('jquery');
const Alert = require('../alert').Alert;
const Components = require('../components');
const local = require('../local');
const ga = require('../analytics');
const TomSelect = require('tom-select');
const Toggles = require('../toggles');
const options = require('../options');
const languages = options.languages;
const saveAs = require('file-saver').saveAs;
declare global {
interface Window { httpRoot: any; }
}
export class TreeState extends MultifileServiceState {
id: number
cmakeArgs: string;
customOutputFilename: string;
}
export class Tree {
private id: number;
private container: any;
private domRoot: any;
private hub: any;
private eventHub: any;
private settings: any;
private httpRoot: any;
private alertSystem: any;
private root: any;
private rowTemplate: any;
private namedItems: any;
private unnamedItems: any;
private langKeys: string[];
private cmakeArgsInput: any;
private customOutputFilenameInput: any;
public multifileService: MultifileService;
private lineColouring: LineColouring;
private ourCompilers: {};
private busyCompilers: {};
private asmByCompiler: {};
private selectize: any;
private languageBtn: any;
private toggleCMakeButton: any;
private debouncedEmitChange: () => void;
private hideable: any;
private topBar: any;
constructor(hub, state: TreeState, container) {
this.id = state.id || hub.nextTreeId();
this.container = container;
this.domRoot = container.getElement();
this.domRoot.html($('#tree').html());
this.hub = hub;
this.eventHub = hub.createEventHub();
this.settings = JSON.parse(local.get('settings', '{}'));
this.httpRoot = window.httpRoot;
this.alertSystem = new Alert();
this.alertSystem.prefixMessage = 'Tree #' + this.id + ': ';
this.root = this.domRoot.find('.tree');
this.rowTemplate = $('#tree-editor-tpl');
this.namedItems = this.domRoot.find('.named-editors');
this.unnamedItems = this.domRoot.find('.unnamed-editors');
this.hideable = this.domRoot.find('.hideable');
this.topBar = this.domRoot.find('.top-bar.mainbar');
this.langKeys = _.keys(languages);
this.cmakeArgsInput = this.domRoot.find('.cmake-arguments');
this.customOutputFilenameInput = this.domRoot.find('.cmake-customOutputFilename');
const usableLanguages = _.filter(languages, (language) => {
return hub.compilerService.compilersByLang[language.id];
});
if (state) {
if (!state.compilerLanguageId) {
state.compilerLanguageId = this.settings.defaultLanguage;
}
} else {
state = {
id: this.id,
customOutputFilename: '',
cmakeArgs: '',
compilerLanguageId: this.settings.defaultLanguage,
isCMakeProject: false,
files: [],
newFileId: 1,
};
}
this.multifileService = new MultifileService(this.hub, this.alertSystem, state);
this.lineColouring = new LineColouring(this.multifileService);
this.ourCompilers = {};
this.busyCompilers = {};
this.asmByCompiler = {};
this.initInputs(state);
this.initButtons(state);
this.initCallbacks();
this.onSettingsChange(this.settings);
this.selectize = new TomSelect(this.languageBtn, {
sortField: 'name',
valueField: 'id',
labelField: 'name',
searchField: ['name'],
options: _.map(usableLanguages, _.identity),
items: [this.multifileService.getLanguageId()],
dropdownParent: 'body',
plugins: ['input_autogrow'],
onChange: _.bind(this.onLanguageChange, this),
});
this.updateTitle();
this.onLanguageChange(this.multifileService.getLanguageId());
ga.proxy('send', {
hitType: 'event',
eventCategory: 'OpenViewPane',
eventAction: 'Tree',
});
this.refresh();
this.eventHub.emit('findEditors');
}
private initInputs(state: TreeState) {
if (state) {
if (state.cmakeArgs) {
this.cmakeArgsInput.val(state.cmakeArgs);
}
if (state.customOutputFilename) {
this.customOutputFilenameInput.val(state.customOutputFilename);
}
}
}
private getCmakeArgs(): string {
return this.cmakeArgsInput.val();
}
private getCustomOutputFilename(): string {
return this.customOutputFilenameInput.val();
}
public currentState(): TreeState {
return {
id: this.id,
cmakeArgs: this.getCmakeArgs(),
customOutputFilename: this.getCustomOutputFilename(),
... this.multifileService.getState()
}
};
private updateState() {
const state = this.currentState();
this.container.setState(state);
this.updateButtons(state);
}
private initCallbacks() {
this.container.on('resize', this.resize, this);
this.container.on('shown', this.resize, this);
this.container.on('open', () => {
this.eventHub.emit('treeOpen', this.id);
});
this.container.on('destroy', this.close, this);
this.eventHub.on('editorOpen', this.onEditorOpen, this);
this.eventHub.on('editorClose', this.onEditorClose, this);
this.eventHub.on('compilerOpen', this.onCompilerOpen, this);
this.eventHub.on('compilerClose', this.onCompilerClose, this);
this.eventHub.on('compileResult', this.onCompileResponse, this);
this.toggleCMakeButton.on('change', _.bind(this.onToggleCMakeChange, this));
this.cmakeArgsInput.on('change', _.bind(this.updateCMakeArgs, this));
this.customOutputFilenameInput.on('change', _.bind(this.updateCustomOutputFilename, this));
}
private updateCMakeArgs() {
this.updateState();
this.debouncedEmitChange();
}
private updateCustomOutputFilename() {
this.updateState();
this.debouncedEmitChange();
}
private onToggleCMakeChange() {
const isOn = this.toggleCMakeButton.state.isCMakeProject;
this.multifileService.setAsCMakeProject(isOn);
this.domRoot.find('.cmake-project').prop('title',
'[' + (isOn ? 'ON' : 'OFF') + '] CMake project');
this.updateState();
}
private onLanguageChange(newLangId: string) {
if (languages[newLangId]) {
this.multifileService.setLanguageId(newLangId);
this.eventHub.emit('languageChange', false, newLangId, this.id);
}
this.toggleCMakeButton.enableToggle('isCMakeProject', this.multifileService.isCompatibleWithCMake());
this.refresh();
}
private sendCompilerChangesToEditor(compilerId: number) {
this.multifileService.forEachOpenFile((file: MultifileFile) => {
if (file.isIncluded) {
this.eventHub.emit('treeCompilerEditorIncludeChange', this.id, file.editorId, compilerId);
} else {
this.eventHub.emit('treeCompilerEditorExcludeChange', this.id, file.editorId, compilerId);
}
});
this.eventHub.emit('resendCompilation', compilerId);
}
private sendCompileRequests() {
this.eventHub.emit('requestCompilation', false, this.id);
}
private sendChangesToAllEditors() {
_.each(this.ourCompilers, (unused, compilerId: string) => {
this.sendCompilerChangesToEditor(parseInt(compilerId));
});
}
private onCompilerOpen(compilerId: number, unused, treeId: number) {
if (treeId === this.id) {
this.ourCompilers[compilerId] = true;
this.sendCompilerChangesToEditor(compilerId);
}
}
private onCompilerClose(compilerId: number, unused, treeId: number) {
if (treeId === this.id) {
delete this.ourCompilers[compilerId];
}
}
private onEditorOpen(editorId: number) {
const file = this.multifileService.getFileByEditorId(editorId);
if (file) return;
this.multifileService.addFileForEditorId(editorId);
this.refresh();
this.sendChangesToAllEditors();
}
private onEditorClose(editorId: number) {
const file = this.multifileService.getFileByEditorId(editorId);
if (file) {
file.isOpen = false;
const editor = this.hub.getEditorById(editorId);
file.langId = editor.currentLanguage.id;
file.content = editor.getSource();
file.editorId = -1;
}
this.refresh();
}
private removeFile(fileId: number) {
const file = this.multifileService.removeFileByFileId(fileId);
if (file) {
if (file.isOpen) {
const editor = this.hub.getEditorById(file.editorId);
if (editor) {
editor.container.close();
}
}
}
this.refresh();
}
private addRowToTreelist(file: MultifileFile) {
const item = $(this.rowTemplate.children()[0].cloneNode(true));
const stagingButton = item.find('.stage-file');
const renameButton = item.find('.rename-file');
const deleteButton = item.find('.delete-file');
item.data('fileId', file.fileId);
if (file.filename) {
item.find('.filename').html(file.filename);
} else if (file.editorId > 0) {
const editor = this.hub.getEditorById(file.editorId);
if (editor) {
item.find('.filename').html(editor.getPaneName());
} else {
// wait for editor to appear first
return;
}
} else {
item.find('.filename').html('Unknown file');
}
item.on('click', (e) => {
const fileId = $(e.currentTarget).data('fileId');
this.editFile(fileId);
});
renameButton.on('click', async (e) => {
const fileId = $(e.currentTarget).parent('li').data('fileId');
await this.multifileService.renameFile(fileId);
this.refresh();
});
deleteButton.on('click', (e) => {
const fileId = $(e.currentTarget).parent('li').data('fileId');
const file = this.multifileService.getFileByFileId(fileId);
if (file) {
this.alertSystem.ask('Delete file', 'Are you sure you want to delete ' + file.filename, {
yes: () => {
this.removeFile(fileId);
},
});
}
});
if (file.isIncluded) {
stagingButton.removeClass('fa-plus').addClass('fa-minus');
stagingButton.on('click', async (e) => {
const fileId = $(e.currentTarget).parent('li').data('fileId');
await this.moveToExclude(fileId);
});
this.namedItems.append(item);
} else {
stagingButton.removeClass('fa-minus').addClass('fa-plus');
stagingButton.on('click', async (e) => {
const fileId = $(e.currentTarget).parent('li').data('fileId');
await this.moveToInclude(fileId);
});
this.unnamedItems.append(item);
}
}
private refresh() {
this.updateState();
this.namedItems.html('');
this.unnamedItems.html('');
this.multifileService.forEachFile((file: MultifileFile) => this.addRowToTreelist(file));
}
private editFile(fileId: number) {
const file = this.multifileService.getFileByFileId(fileId);
if (!file.isOpen) {
const dragConfig = this.getConfigForNewEditor(file);
file.isOpen = true;
this.hub.addInEditorStackIfPossible(dragConfig);
} else {
const editor = this.hub.getEditorById(file.editorId);
this.hub.activateTabForContainer(editor.container);
}
this.sendChangesToAllEditors();
}
private async moveToInclude(fileId: number) {
await this.multifileService.includeByFileId(fileId);
this.refresh();
this.sendChangesToAllEditors();
}
private async moveToExclude(fileId: number) {
await this.multifileService.excludeByFileId(fileId);
this.refresh();
this.sendChangesToAllEditors();
}
private bindClickToOpenPane(dragSource, dragConfig) {
dragSource.on('click', () => {
this.hub.addInEditorStackIfPossible(_.bind(dragConfig, this));
});
}
private getConfigForNewCompiler() {
return Components.getCompilerForTree(this.id, this.currentState().compilerLanguageId);
}
private getConfigForNewExecutor() {
return Components.getExecutorForTree(this.id, this.currentState().compilerLanguageId);
}
private getConfigForNewEditor(file: MultifileFile) {
let editor;
const editorId = this.hub.nextEditorId();
if (file) {
file.editorId = editorId;
editor = Components.getEditor(
editorId,
file.langId);
editor.componentState.source = file.content;
if (file.filename) {
editor.componentState.filename = file.filename;
}
} else {
editor = Components.getEditor(
editorId,
this.multifileService.getLanguageId());
}
return editor;
}
private getFormattedDateTime() {
const d = new Date();
let datestring = d.getFullYear() +
('0' + (d.getMonth() + 1)).slice(-2) +
('0' + d.getDate()).slice(-2);
datestring += ('0' + d.getHours()).slice(-2) +
('0' + d.getMinutes()).slice(-2) +
('0' + d.getSeconds()).slice(-2);
return datestring;
}
private triggerSaveAs(blob) {
const dt = this.getFormattedDateTime();
saveAs(blob, `project-${dt}.zip`);
}
private initButtons(state: TreeState) {
const addCompilerButton = this.domRoot.find('.add-compiler');
const addExecutorButton = this.domRoot.find('.add-executor');
const addEditorButton = this.domRoot.find('.add-editor');
const saveProjectButton = this.domRoot.find('.save-project-to-file');
saveProjectButton.on('click', () => {
this.multifileService.saveProjectToZipfile(_.bind(this.triggerSaveAs, this));
});
const loadProjectFromFile = this.domRoot.find('.load-project-from-file');
loadProjectFromFile.on('change', (e) => {
const files = e.target.files;
if (files.length > 0) {
this.multifileService.forEachFile((file: MultifileFile) => {
this.removeFile(file.fileId);
});
this.multifileService.loadProjectFromFile(files[0], (file: MultifileFile) => {
this.refresh();
if (file.filename === 'CMakeLists.txt') {
// todo: find a way to toggle on CMake checkbox...
this.editFile(file.fileId);
}
});
}
});
this.bindClickToOpenPane(addCompilerButton, this.getConfigForNewCompiler);
this.bindClickToOpenPane(addExecutorButton, this.getConfigForNewExecutor);
this.bindClickToOpenPane(addEditorButton, this.getConfigForNewEditor);
this.languageBtn = this.domRoot.find('.change-language');
if (this.langKeys.length <= 1) {
this.languageBtn.prop('disabled', true);
}
this.toggleCMakeButton = new Toggles(this.domRoot.find('.options'), state);
}
private numberUsedLines() {
if (_.any(this.busyCompilers)) return;
if (!this.settings.colouriseAsm) {
this.updateColoursNone();
return;
}
this.lineColouring.clear();
_.each(this.asmByCompiler, (asm: any, compilerId: string) => {
if (asm) this.lineColouring.addFromAssembly(parseInt(compilerId), asm);
});
this.lineColouring.calculate();
this.updateColours();
}
private updateColours() {
_.each(this.ourCompilers, (unused, compilerId: string) => {
const id: number = parseInt(compilerId);
this.eventHub.emit('coloursForCompiler', id,
this.lineColouring.getColoursForCompiler(id), this.settings.colourScheme);
});
this.multifileService.forEachOpenFile((file: MultifileFile) => {
this.eventHub.emit('coloursForEditor', file.editorId,
this.lineColouring.getColoursForEditor(file.editorId), this.settings.colourScheme);
});
}
private updateColoursNone() {
_.each(this.ourCompilers, (unused, compilerId: string) => {
this.eventHub.emit('coloursForCompiler', parseInt(compilerId), {}, this.settings.colourScheme);
});
this.multifileService.forEachOpenFile((file: MultifileFile) => {
this.eventHub.emit('coloursForEditor', file.editorId, {}, this.settings.colourScheme);
});
}
private onCompileResponse(compilerId: number, compiler, result) {
if (!this.ourCompilers[compilerId]) return;
this.busyCompilers[compilerId] = false;
// todo: parse errors and warnings and relate them to lines in the code
// note: requires info about the filename, do we currently have that?
// eslint-disable-next-line max-len
// {"text":"/tmp/compiler-explorer-compiler2021428-7126-95g4xc.zfo8p/example.cpp:4:21: error: expected ; before } token"}
if (result.result && result.result.asm) {
this.asmByCompiler[compilerId] = result.result.asm;
} else {
this.asmByCompiler[compilerId] = result.asm;
}
this.numberUsedLines();
}
private updateButtons(state: TreeState) {
if (state.isCMakeProject) {
this.cmakeArgsInput.parent().removeClass('d-none');
this.customOutputFilenameInput.parent().removeClass('d-none');
} else {
this.cmakeArgsInput.parent().addClass('d-none');
this.customOutputFilenameInput.parent().addClass('d-none');
}
}
private updateHideables() {
var topBar = this.topBar;
if (!topBar.hasClass('d-none')) {
this.hideable.show();
var topBarHeightMax = topBar.outerHeight(true);
this.hideable.hide();
var topBarHeightMin = topBar.outerHeight(true);
if (topBarHeightMin === topBarHeightMax) {
this.hideable.show();
}
}
}
private resize() {
this.updateHideables();
const mainbarHeight = this.topBar.outerHeight(true);
const argsHeight = this.domRoot.find('.panel-args').outerHeight(true);
const outputfileHeight = this.domRoot.find('.panel-outputfile').outerHeight(true);
this.root.height(this.domRoot.innerHeight() - mainbarHeight - argsHeight - outputfileHeight);
}
private onSettingsChange(newSettings) {
this.debouncedEmitChange = _.debounce(() => {
this.sendCompileRequests();
}, newSettings.delayAfterChange);
}
private getPaneName() {
return `Tree #${this.id}`;
}
private updateTitle() {
this.container.setTitle(this.getPaneName());
}
private close() {
this.eventHub.unsubscribe();
this.eventHub.emit('treeClose', this.id);
this.hub.removeTree(this.id);
$('#add-tree').prop('disabled', false);
}
}

View File

@@ -242,7 +242,9 @@ function setupSettings(root, settings, onChange, subLangId) {
} }
add(root.find('.useSpaces'), 'useSpaces', true, Checkbox); add(root.find('.useSpaces'), 'useSpaces', true, Checkbox);
add(root.find('.tabWidth'), 'tabWidth', 4, Numeric, {min: 1, max: 80}); add(root.find('.tabWidth'), 'tabWidth', 4, Numeric, {min: 1, max: 80});
// note: this is the ctrl+s "Save option"
add(root.find('.enableCtrlS'), 'enableCtrlS', true, Checkbox); add(root.find('.enableCtrlS'), 'enableCtrlS', true, Checkbox);
add(root.find('.enableCtrlStree'), 'enableCtrlStree', true, Checkbox);
add(root.find('.editorsFFont'), 'editorsFFont', 'Consolas, "Liberation Mono", Courier, monospace', Textbox); add(root.find('.editorsFFont'), 'editorsFFont', 'Consolas, "Liberation Mono", Courier, monospace', Textbox);
add(root.find('.editorsFLigatures'), 'editorsFLigatures', false, Checkbox); add(root.find('.editorsFLigatures'), 'editorsFLigatures', false, Checkbox);
add(root.find('.allowStoreCodeDebug'), 'allowStoreCodeDebug', true, Checkbox); add(root.find('.allowStoreCodeDebug'), 'allowStoreCodeDebug', true, Checkbox);

View File

@@ -491,3 +491,17 @@ a {
.conformance-wrapper .compiler-list .form-row { .conformance-wrapper .compiler-list .form-row {
border-bottom: 1px solid #3e3e3e; border-bottom: 1px solid #3e3e3e;
} }
.tree ul, .tree li {
background-color: #222222 !important;
color: white;
}
.tree li.tree-editor-file {
background-color: #303030 !important;
color: white;
}
.tree li.tree-editor-file:hover {
background-color: #333 !important;
}

View File

@@ -291,3 +291,16 @@ div.argmenuitem span.argdescription {
.lm_header .lm_tab:last-child { .lm_header .lm_tab:last-child {
border-bottom: 1px solid #ccc !important; border-bottom: 1px solid #ccc !important;
} }
.lm_content .tree {
background-color: #fff;
height: 100%;
}
.lm_content .tree span.filename {
padding-left: 10px;
}
.tree li.tree-editor-file:hover {
background-color: #dae5e0 !important;
}

View File

@@ -94,58 +94,25 @@ function initializeChartDataFromResult(compileResult, totalTime) {
pushTimingInfo(data, 'Execution', compileResult.execResult.execTime); pushTimingInfo(data, 'Execution', compileResult.execResult.execTime);
} }
} else { } else {
addBuildResultToTimings(data, compileResult);
if (compileResult.packageDownloadAndUnzipTime) { if (!compileResult.packageDownloadAndUnzipTime) {
pushTimingInfo(data, 'Download binary from cache', compileResult.execTime); if (compileResult.objdumpTime) {
} else { pushTimingInfo(data, 'Disassembly', compileResult.objdumpTime);
if (compileResult.execResult) { }
if (compileResult.execResult.buildResult) {
addBuildResultToTimings(data, compileResult.execResult.buildResult);
}
if (compileResult.objdumpTime) { if (compileResult.parsingTime) {
pushTimingInfo(data, 'Disassembly', compileResult.objdumpTime); pushTimingInfo(data, 'ASM parsing', compileResult.parsingTime);
}
if (compileResult.parsingTime) {
pushTimingInfo(data, 'ASM parsing', compileResult.parsingTime);
}
if (compileResult.execResult.execTime) {
pushTimingInfo(data, 'Execution', compileResult.execResult.execTime);
}
} else {
if (compileResult.downloads) {
concatTimings(data, compileResult.downloads);
}
if (!compileResult.didExecute && compileResult.execTime) {
pushTimingInfo(data, 'Compilation', compileResult.execTime);
}
if (compileResult.objdumpTime) {
pushTimingInfo(data, 'Disassembly', compileResult.objdumpTime);
}
if (compileResult.parsingTime) {
pushTimingInfo(data, 'ASM parsing', compileResult.parsingTime);
}
} }
} }
} }
if (compileResult.didExecute) { if (compileResult.didExecute) {
if (compileResult.buildResult) { if (compileResult.execResult.execTime) {
if (compileResult.buildResult.packageDownloadAndUnzipTime) { pushTimingInfo(data, 'Execution', compileResult.execResult.execTime);
pushTimingInfo(data, } else {
'Download binary from cache', pushTimingInfo(data, 'Execution', compileResult.execTime);
compileResult.buildResult.packageDownloadAndUnzipTime);
}
} else if (compileResult.execResult && compileResult.execResult.buildResult) {
addBuildResultToTimings(data, compileResult.execResult.buildResult);
} }
pushTimingInfo(data, 'Execution', compileResult.execTime);
} }
var stepsTotal = data.steps; var stepsTotal = data.steps;

View File

@@ -7,6 +7,9 @@
"esModuleInterop": true "esModuleInterop": true
}, },
"files": [ "files": [
"multifile-service.ts",
"line-colouring.ts",
"panes/tree.ts",
"alert.ts" "alert.ts"
] ]
} }

View File

@@ -488,7 +488,7 @@ describe('Compiler execution', function () {
return Promise.resolve({ return Promise.resolve({
code: 0, code: 0,
filenameTransform: x => x, filenameTransform: x => x,
stdout: 'the output', stdout: '<No output file output>',
stderr: '', stderr: '',
}); });
}); });
@@ -499,7 +499,7 @@ describe('Compiler execution', function () {
123456, 123456,
true, true,
true); true);
result.asm.should.deep.equal('the output'); result.asm.should.deep.equal('<No output file output>');
} }
it('should run default objdump properly', async () => { it('should run default objdump properly', async () => {
@@ -565,7 +565,7 @@ Args: []
try { try {
compiler.getExtraFilepath('/tmp/somefolder', '../test.h'); compiler.getExtraFilepath('/tmp/somefolder', '../test.h');
throw 'Should throw exception'; throw 'Should throw exception 1';
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
throw error; throw error;
@@ -574,7 +574,7 @@ Args: []
try { try {
compiler.getExtraFilepath('/tmp/somefolder', './../test.h'); compiler.getExtraFilepath('/tmp/somefolder', './../test.h');
throw 'Should throw exception'; throw 'Should throw exception 2';
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
throw error; throw error;
@@ -582,8 +582,7 @@ Args: []
} }
try { try {
compiler.getExtraFilepath('/tmp/somefolder', '/tmp/someotherfolder/test.h'); compiler.getExtraFilepath('/tmp/somefolder', '/tmp/someotherfolder/test.h').should.equal('/tmp/somefolder/tmp/someotherfolder/test.h');
throw 'Should throw exception';
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
throw error; throw error;
@@ -591,8 +590,7 @@ Args: []
} }
try { try {
compiler.getExtraFilepath('/tmp/somefolder', '\\test.h'); compiler.getExtraFilepath('/tmp/somefolder', '\\test.h').should.equal('/tmp/somefolder/test.h');
throw 'Should throw exception';
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
throw error; throw error;
@@ -601,7 +599,7 @@ Args: []
try { try {
compiler.getExtraFilepath('/tmp/somefolder', 'test_hello/../../etc/passwd'); compiler.getExtraFilepath('/tmp/somefolder', 'test_hello/../../etc/passwd');
throw 'Should throw exception'; throw 'Should throw exception 5';
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
throw error; throw error;
@@ -614,10 +612,8 @@ Args: []
compiler.getExtraFilepath('/tmp/somefolder', 'test.txt').should.equal('/tmp/somefolder/test.txt'); compiler.getExtraFilepath('/tmp/somefolder', 'test.txt').should.equal('/tmp/somefolder/test.txt');
} }
// note: subfolders currently not supported, but maybe in the future?
try { try {
compiler.getExtraFilepath('/tmp/somefolder', 'subfolder/hello.h'); compiler.getExtraFilepath('/tmp/somefolder', 'subfolder/hello.h').should.equal('/tmp/somefolder/subfolder/hello.h');
throw 'Should throw exception';
} catch (error) { } catch (error) {
if (!(error instanceof Error)) { if (!(error instanceof Error)) {
throw error; throw error;

View File

@@ -252,4 +252,112 @@ describe('Execution tests', () => {
args.should.include('--env=ENV2=2'); args.should.include('--env=ENV2=2');
}); });
}); });
describe('Subdirectory execution', () => {
before(() => {
props.initialize(path.resolve('./test/test-properties/execution'), ['test']);
});
after(() => {
props.reset();
});
it('Normal situation without customCwd', () => {
const {args, options} = exec.getSandboxNsjailOptions(
'/tmp/hellow/output.s',
[],
{},
);
options.should.deep.equals({});
args.should.deep.equals([
'--config',
'etc/nsjail/sandbox.cfg',
'--cwd',
'/app',
'--bindmount',
'/tmp/hellow:/app',
'--env=HOME=/app',
'--',
'./output.s',
]);
});
it('Normal situation', () => {
const {args, options} = exec.getSandboxNsjailOptions(
'/tmp/hellow/output.s',
[],
{
customCwd: '/tmp/hellow',
},
);
options.should.deep.equals({});
args.should.deep.equals([
'--config',
'etc/nsjail/sandbox.cfg',
'--cwd',
'/app',
'--bindmount',
'/tmp/hellow:/app',
'--env=HOME=/app',
'--',
'./output.s',
]);
});
it('Subdirectory', () => {
const {args, options} = exec.getSandboxNsjailOptions(
'/tmp/hellow/subdir/output.s',
[],
{
customCwd: '/tmp/hellow',
},
);
options.should.deep.equals({});
if (process.platform !== 'win32') {
args.should.deep.equals([
'--config',
'etc/nsjail/sandbox.cfg',
'--cwd',
'/app',
'--bindmount',
'/tmp/hellow:/app',
'--env=HOME=/app',
'--',
'subdir/output.s',
]);
}
});
it('CMake outside tree building', () => {
const {args, options} = exec.getNsJailOptions(
'execute',
'/opt/compiler-explorer/cmake/bin/cmake',
['..'],
{
customCwd: '/tmp/hellow/build',
appHome: '/tmp/hellow',
},
);
options.should.deep.equals({
appHome: '/tmp/hellow',
});
if (process.platform !== 'win32') {
args.should.deep.equals([
'--config',
'etc/nsjail/execute.cfg',
'--cwd',
'/app/build',
'--bindmount',
'/tmp/hellow:/app',
'--env=HOME=/app',
'--',
'/opt/compiler-explorer/cmake/bin/cmake',
'..',
]);
}
});
});
}); });

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -901,7 +901,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 1 "line": 1,
"mainsource": true
}, },
"text": " push rbp" "text": " push rbp"
}, },
@@ -915,7 +916,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 1 "line": 1,
"mainsource": true
}, },
"text": " mov rbp,rsp" "text": " mov rbp,rsp"
}, },
@@ -931,7 +933,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 2 "line": 2,
"mainsource": true
}, },
"text": " mov eax,0x2" "text": " mov eax,0x2"
}, },
@@ -943,7 +946,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 3 "line": 3,
"mainsource": true
}, },
"text": " pop rbp" "text": " pop rbp"
}, },
@@ -955,7 +959,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 3 "line": 3,
"mainsource": true
}, },
"text": " ret" "text": " ret"
}, },
@@ -972,7 +977,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " push rbp" "text": " push rbp"
}, },
@@ -986,7 +992,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " mov rbp,rsp" "text": " mov rbp,rsp"
}, },
@@ -1004,7 +1011,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " mov DWORD PTR [rbp-0x4],0x2" "text": " mov DWORD PTR [rbp-0x4],0x2"
}, },
@@ -1022,7 +1030,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " mov DWORD PTR [rbp-0x8],0x3" "text": " mov DWORD PTR [rbp-0x8],0x3"
}, },
@@ -1037,7 +1046,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 7 "line": 7,
"mainsource": true
}, },
"text": " add DWORD PTR [rbp-0x8],0x1" "text": " add DWORD PTR [rbp-0x8],0x1"
}, },
@@ -1051,7 +1061,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " shl DWORD PTR [rbp-0x4],1" "text": " shl DWORD PTR [rbp-0x4],1"
}, },
@@ -1063,7 +1074,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 9 "line": 9,
"mainsource": true
}, },
"text": " nop" "text": " nop"
}, },
@@ -1075,7 +1087,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 9 "line": 9,
"mainsource": true
}, },
"text": " pop rbp" "text": " pop rbp"
}, },
@@ -1087,7 +1100,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 9 "line": 9,
"mainsource": true
}, },
"text": " ret" "text": " ret"
}, },
@@ -1104,7 +1118,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 11 "line": 11,
"mainsource": true
}, },
"text": " push rbp" "text": " push rbp"
}, },
@@ -1118,7 +1133,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 11 "line": 11,
"mainsource": true
}, },
"text": " mov rbp,rsp" "text": " mov rbp,rsp"
}, },
@@ -1142,7 +1158,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 12 "line": 12,
"mainsource": true
}, },
"text": " call 401102 <fun🤔()>" "text": " call 401102 <fun🤔()>"
}, },
@@ -1154,7 +1171,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 12 "line": 12,
"mainsource": true
}, },
"text": " nop" "text": " nop"
}, },
@@ -1166,7 +1184,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop rbp" "text": " pop rbp"
}, },
@@ -1178,7 +1197,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " ret" "text": " ret"
}, },
@@ -1199,7 +1219,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " nop WORD PTR cs:[rax+rax*1+0x0]" "text": " nop WORD PTR cs:[rax+rax*1+0x0]"
}, },
@@ -1211,7 +1232,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " nop" "text": " nop"
}, },
@@ -1231,7 +1253,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " endbr64" "text": " endbr64"
}, },
@@ -1244,7 +1267,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " push r15" "text": " push r15"
}, },
@@ -1262,7 +1286,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " lea r15,[rip+0x2cb3] # 403e00 <__frame_dummy_init_array_entry>" "text": " lea r15,[rip+0x2cb3] # 403e00 <__frame_dummy_init_array_entry>"
}, },
@@ -1275,7 +1300,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " push r14" "text": " push r14"
}, },
@@ -1289,7 +1315,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " mov r14,rdx" "text": " mov r14,rdx"
}, },
@@ -1302,7 +1329,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " push r13" "text": " push r13"
}, },
@@ -1316,7 +1344,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " mov r13,rsi" "text": " mov r13,rsi"
}, },
@@ -1329,7 +1358,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " push r12" "text": " push r12"
}, },
@@ -1343,7 +1373,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " mov r12d,edi" "text": " mov r12d,edi"
}, },
@@ -1355,7 +1386,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " push rbp" "text": " push rbp"
}, },
@@ -1373,7 +1405,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " lea rbp,[rip+0x2ca4] # 403e08 <__do_global_dtors_aux_fini_array_entry>" "text": " lea rbp,[rip+0x2ca4] # 403e08 <__do_global_dtors_aux_fini_array_entry>"
}, },
@@ -1385,7 +1418,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " push rbx" "text": " push rbx"
}, },
@@ -1399,7 +1433,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " sub rbp,r15" "text": " sub rbp,r15"
}, },
@@ -1414,7 +1449,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " sub rsp,0x8" "text": " sub rsp,0x8"
}, },
@@ -1438,7 +1474,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " call 401000 <_init>" "text": " call 401000 <_init>"
}, },
@@ -1453,7 +1490,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " sar rbp,0x3" "text": " sar rbp,0x3"
}, },
@@ -1474,7 +1512,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " je 401196 <__libc_csu_init+0x56>" "text": " je 401196 <__libc_csu_init+0x56>"
}, },
@@ -1487,7 +1526,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " xor ebx,ebx" "text": " xor ebx,ebx"
}, },
@@ -1505,7 +1545,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " nop DWORD PTR [rax+0x0]" "text": " nop DWORD PTR [rax+0x0]"
}, },
@@ -1519,7 +1560,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " mov rdx,r14" "text": " mov rdx,r14"
}, },
@@ -1533,7 +1575,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " mov rsi,r13" "text": " mov rsi,r13"
}, },
@@ -1547,7 +1590,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " mov edi,r12d" "text": " mov edi,r12d"
}, },
@@ -1562,7 +1606,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " call QWORD PTR [r15+rbx*8]" "text": " call QWORD PTR [r15+rbx*8]"
}, },
@@ -1577,7 +1622,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " add rbx,0x1" "text": " add rbx,0x1"
}, },
@@ -1591,7 +1637,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " cmp rbp,rbx" "text": " cmp rbp,rbx"
}, },
@@ -1612,7 +1659,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " jne 401180 <__libc_csu_init+0x40>" "text": " jne 401180 <__libc_csu_init+0x40>"
}, },
@@ -1627,7 +1675,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " add rsp,0x8" "text": " add rsp,0x8"
}, },
@@ -1639,7 +1688,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop rbx" "text": " pop rbx"
}, },
@@ -1651,7 +1701,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop rbp" "text": " pop rbp"
}, },
@@ -1664,7 +1715,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop r12" "text": " pop r12"
}, },
@@ -1677,7 +1729,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop r13" "text": " pop r13"
}, },
@@ -1690,7 +1743,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop r14" "text": " pop r14"
}, },
@@ -1703,7 +1757,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " pop r15" "text": " pop r15"
}, },
@@ -1715,7 +1770,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " ret" "text": " ret"
}, },
@@ -1737,7 +1793,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " data16 nop WORD PTR cs:[rax+rax*1+0x0]" "text": " data16 nop WORD PTR cs:[rax+rax*1+0x0]"
}, },
@@ -1757,7 +1814,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " endbr64" "text": " endbr64"
}, },
@@ -1769,7 +1827,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " ret" "text": " ret"
}, },
@@ -1789,7 +1848,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " endbr64" "text": " endbr64"
}, },
@@ -1804,7 +1864,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " sub rsp,0x8" "text": " sub rsp,0x8"
}, },
@@ -1819,7 +1880,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " add rsp,0x8" "text": " add rsp,0x8"
}, },
@@ -1831,7 +1893,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 13 "line": 13,
"mainsource": true
}, },
"text": " ret" "text": " ret"
} }

View File

@@ -57,7 +57,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -66,7 +66,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -80,7 +80,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -154,7 +154,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -163,7 +163,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -172,7 +172,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -181,7 +181,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -190,7 +190,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -199,7 +199,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -208,7 +208,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -217,7 +217,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -226,7 +226,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -235,7 +235,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -259,7 +259,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -268,7 +268,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -277,7 +277,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -286,7 +286,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -295,7 +295,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -354,7 +354,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -363,7 +363,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -382,7 +382,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -401,7 +401,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -428,7 +428,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -485,7 +485,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -502,7 +502,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"
@@ -620,7 +620,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " push rbx" "text": " push rbx"
@@ -628,7 +628,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " sub rsp, 80" "text": " sub rsp, 80"
@@ -761,7 +761,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " mov rbx, rdi" "text": " mov rbx, rdi"
@@ -825,7 +825,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 57, "column": 57,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 241 "line": 241
}, },
"text": " mov rdi, qword ptr [rsp + 96]" "text": " mov rdi, qword ptr [rsp + 96]"
@@ -889,7 +889,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movups xmm0, xmmword ptr [rsp + 104]" "text": " movups xmm0, xmmword ptr [rsp + 104]"
@@ -898,7 +898,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movaps xmmword ptr [rsp + 64], xmm0" "text": " movaps xmmword ptr [rsp + 64], xmm0"
@@ -912,7 +912,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 10, "column": 10,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " cmp r8, rcx" "text": " cmp r8, rcx"
@@ -934,7 +934,7 @@
], ],
"source": { "source": {
"column": 6, "column": 6,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " je .LBB2_3" "text": " je .LBB2_3"
@@ -1038,7 +1038,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 32, "column": 32,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 67 "line": 67
}, },
"text": " add rcx, 1" "text": " add rcx, 1"
@@ -1082,7 +1082,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov al, byte ptr [rsp + 79]" "text": " mov al, byte ptr [rsp + 79]"
@@ -1091,7 +1091,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov byte ptr [rsp + 38], al" "text": " mov byte ptr [rsp + 38], al"
@@ -1100,7 +1100,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " movzx eax, word ptr [rsp + 77]" "text": " movzx eax, word ptr [rsp + 77]"
@@ -1109,7 +1109,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov word ptr [rsp + 36], ax" "text": " mov word ptr [rsp + 36], ax"
@@ -1118,7 +1118,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov eax, dword ptr [rsp + 73]" "text": " mov eax, dword ptr [rsp + 73]"
@@ -1127,7 +1127,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov dword ptr [rsp + 32], eax" "text": " mov dword ptr [rsp + 32], eax"
@@ -1156,7 +1156,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 46, "column": 46,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " add rsi, 1" "text": " add rsi, 1"
@@ -1170,7 +1170,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 40], rdi" "text": " mov qword ptr [rsp + 40], rdi"
@@ -1179,7 +1179,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 48], rcx" "text": " mov qword ptr [rsp + 48], rcx"
@@ -1188,7 +1188,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 56], 0" "text": " mov byte ptr [rsp + 56], 0"
@@ -1197,7 +1197,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov eax, dword ptr [rsp + 32]" "text": " mov eax, dword ptr [rsp + 32]"
@@ -1206,7 +1206,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -1215,7 +1215,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movzx eax, word ptr [rsp + 36]" "text": " movzx eax, word ptr [rsp + 36]"
@@ -1224,7 +1224,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -1233,7 +1233,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov al, byte ptr [rsp + 38]" "text": " mov al, byte ptr [rsp + 38]"
@@ -1242,7 +1242,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -1251,7 +1251,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -1260,7 +1260,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -1269,7 +1269,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -1278,7 +1278,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -1287,7 +1287,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rdi, rbx" "text": " mov rdi, rbx"
@@ -1309,7 +1309,7 @@
], ],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -1323,7 +1323,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 11, "column": 11,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 54 "line": 54
}, },
"text": " cmp byte ptr [rbx + 16], 0" "text": " cmp byte ptr [rbx + 16], 0"
@@ -1345,7 +1345,7 @@
], ],
"source": { "source": {
"column": 13, "column": 13,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " je .LBB2_2" "text": " je .LBB2_2"
@@ -1364,7 +1364,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1373,7 +1373,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1382,7 +1382,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1391,7 +1391,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -1445,7 +1445,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 0 "line": 0
}, },
"text": " lea rax, [rsp + 96]" "text": " lea rax, [rsp + 96]"
@@ -1484,7 +1484,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 39, "column": 39,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 251 "line": 251
}, },
"text": " mov rax, qword ptr [rax + 16]" "text": " mov rax, qword ptr [rax + 16]"
@@ -1498,7 +1498,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx], rdi" "text": " mov qword ptr [rbx], rdi"
@@ -1507,7 +1507,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx + 8], r8" "text": " mov qword ptr [rbx + 8], r8"
@@ -1531,7 +1531,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 16], 1" "text": " mov byte ptr [rbx + 16], 1"
@@ -1540,7 +1540,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rcx, rax" "text": " mov rcx, rax"
@@ -1554,7 +1554,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rcx, 8" "text": " shr rcx, 8"
@@ -1563,7 +1563,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rdx, rax" "text": " mov rdx, rax"
@@ -1577,7 +1577,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rdx, 56" "text": " shr rdx, 56"
@@ -1586,7 +1586,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 23], dl" "text": " mov byte ptr [rbx + 23], dl"
@@ -1595,7 +1595,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rax, 40" "text": " shr rax, 40"
@@ -1604,7 +1604,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov word ptr [rbx + 21], ax" "text": " mov word ptr [rbx + 21], ax"
@@ -1613,7 +1613,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov dword ptr [rbx + 17], ecx" "text": " mov dword ptr [rbx + 17], ecx"
@@ -1627,7 +1627,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1636,7 +1636,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1645,7 +1645,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1654,7 +1654,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -1673,7 +1673,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " xorps xmm0, xmm0" "text": " xorps xmm0, xmm0"
@@ -1682,7 +1682,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " movups xmmword ptr [rbx], xmm0" "text": " movups xmmword ptr [rbx], xmm0"
@@ -1691,7 +1691,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rbx + 16], 0" "text": " mov byte ptr [rbx + 16], 0"
@@ -1705,7 +1705,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1714,7 +1714,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1723,7 +1723,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1732,7 +1732,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"

View File

@@ -27,7 +27,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -36,7 +36,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -50,7 +50,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -64,7 +64,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -73,7 +73,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -82,7 +82,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -91,7 +91,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -100,7 +100,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -109,7 +109,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -118,7 +118,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -127,7 +127,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -136,7 +136,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -145,7 +145,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -164,7 +164,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -173,7 +173,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -182,7 +182,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -191,7 +191,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -200,7 +200,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -214,7 +214,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -223,7 +223,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -237,7 +237,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -251,7 +251,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -273,7 +273,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -325,7 +325,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -342,7 +342,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"
@@ -430,7 +430,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " push rbx" "text": " push rbx"
@@ -438,7 +438,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " sub rsp, 80" "text": " sub rsp, 80"
@@ -451,7 +451,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " mov rbx, rdi" "text": " mov rbx, rdi"
@@ -465,7 +465,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 57, "column": 57,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 241 "line": 241
}, },
"text": " mov rdi, qword ptr [rsp + 96]" "text": " mov rdi, qword ptr [rsp + 96]"
@@ -479,7 +479,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movups xmm0, xmmword ptr [rsp + 104]" "text": " movups xmm0, xmmword ptr [rsp + 104]"
@@ -488,7 +488,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movaps xmmword ptr [rsp + 64], xmm0" "text": " movaps xmmword ptr [rsp + 64], xmm0"
@@ -502,7 +502,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 10, "column": 10,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " cmp r8, rcx" "text": " cmp r8, rcx"
@@ -524,7 +524,7 @@
], ],
"source": { "source": {
"column": 6, "column": 6,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " je .LBB2_3" "text": " je .LBB2_3"
@@ -538,7 +538,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 32, "column": 32,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 67 "line": 67
}, },
"text": " add rcx, 1" "text": " add rcx, 1"
@@ -552,7 +552,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov al, byte ptr [rsp + 79]" "text": " mov al, byte ptr [rsp + 79]"
@@ -561,7 +561,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov byte ptr [rsp + 38], al" "text": " mov byte ptr [rsp + 38], al"
@@ -570,7 +570,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " movzx eax, word ptr [rsp + 77]" "text": " movzx eax, word ptr [rsp + 77]"
@@ -579,7 +579,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov word ptr [rsp + 36], ax" "text": " mov word ptr [rsp + 36], ax"
@@ -588,7 +588,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov eax, dword ptr [rsp + 73]" "text": " mov eax, dword ptr [rsp + 73]"
@@ -597,7 +597,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov dword ptr [rsp + 32], eax" "text": " mov dword ptr [rsp + 32], eax"
@@ -611,7 +611,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 46, "column": 46,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " add rsi, 1" "text": " add rsi, 1"
@@ -625,7 +625,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 40], rdi" "text": " mov qword ptr [rsp + 40], rdi"
@@ -634,7 +634,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 48], rcx" "text": " mov qword ptr [rsp + 48], rcx"
@@ -643,7 +643,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 56], 0" "text": " mov byte ptr [rsp + 56], 0"
@@ -652,7 +652,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov eax, dword ptr [rsp + 32]" "text": " mov eax, dword ptr [rsp + 32]"
@@ -661,7 +661,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -670,7 +670,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movzx eax, word ptr [rsp + 36]" "text": " movzx eax, word ptr [rsp + 36]"
@@ -679,7 +679,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -688,7 +688,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov al, byte ptr [rsp + 38]" "text": " mov al, byte ptr [rsp + 38]"
@@ -697,7 +697,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -706,7 +706,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -715,7 +715,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -724,7 +724,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -733,7 +733,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -742,7 +742,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rdi, rbx" "text": " mov rdi, rbx"
@@ -764,7 +764,7 @@
], ],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -778,7 +778,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 11, "column": 11,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 54 "line": 54
}, },
"text": " cmp byte ptr [rbx + 16], 0" "text": " cmp byte ptr [rbx + 16], 0"
@@ -800,7 +800,7 @@
], ],
"source": { "source": {
"column": 13, "column": 13,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " je .LBB2_2" "text": " je .LBB2_2"
@@ -814,7 +814,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -823,7 +823,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -832,7 +832,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -841,7 +841,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -860,7 +860,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 0 "line": 0
}, },
"text": " lea rax, [rsp + 96]" "text": " lea rax, [rsp + 96]"
@@ -874,7 +874,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 39, "column": 39,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 251 "line": 251
}, },
"text": " mov rax, qword ptr [rax + 16]" "text": " mov rax, qword ptr [rax + 16]"
@@ -888,7 +888,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx], rdi" "text": " mov qword ptr [rbx], rdi"
@@ -897,7 +897,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx + 8], r8" "text": " mov qword ptr [rbx + 8], r8"
@@ -911,7 +911,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 16], 1" "text": " mov byte ptr [rbx + 16], 1"
@@ -920,7 +920,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rcx, rax" "text": " mov rcx, rax"
@@ -934,7 +934,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rcx, 8" "text": " shr rcx, 8"
@@ -943,7 +943,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rdx, rax" "text": " mov rdx, rax"
@@ -957,7 +957,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rdx, 56" "text": " shr rdx, 56"
@@ -966,7 +966,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 23], dl" "text": " mov byte ptr [rbx + 23], dl"
@@ -975,7 +975,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rax, 40" "text": " shr rax, 40"
@@ -984,7 +984,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov word ptr [rbx + 21], ax" "text": " mov word ptr [rbx + 21], ax"
@@ -993,7 +993,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov dword ptr [rbx + 17], ecx" "text": " mov dword ptr [rbx + 17], ecx"
@@ -1007,7 +1007,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1016,7 +1016,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1025,7 +1025,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1034,7 +1034,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -1053,7 +1053,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " xorps xmm0, xmm0" "text": " xorps xmm0, xmm0"
@@ -1062,7 +1062,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " movups xmmword ptr [rbx], xmm0" "text": " movups xmmword ptr [rbx], xmm0"
@@ -1071,7 +1071,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rbx + 16], 0" "text": " mov byte ptr [rbx + 16], 0"
@@ -1085,7 +1085,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1094,7 +1094,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1103,7 +1103,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1112,7 +1112,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"

View File

@@ -47,7 +47,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -56,7 +56,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -65,7 +65,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -134,7 +134,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -143,7 +143,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -152,7 +152,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -161,7 +161,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -170,7 +170,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -179,7 +179,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -188,7 +188,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -197,7 +197,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -206,7 +206,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -215,7 +215,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -229,7 +229,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -238,7 +238,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -247,7 +247,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -256,7 +256,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -265,7 +265,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -319,7 +319,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -328,7 +328,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -342,7 +342,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -356,7 +356,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -378,7 +378,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -410,7 +410,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -427,7 +427,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"
@@ -490,7 +490,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " push rbx" "text": " push rbx"
@@ -498,7 +498,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " sub rsp, 80" "text": " sub rsp, 80"
@@ -626,7 +626,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " mov rbx, rdi" "text": " mov rbx, rdi"
@@ -685,7 +685,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 57, "column": 57,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 241 "line": 241
}, },
"text": " mov rdi, qword ptr [rsp + 96]" "text": " mov rdi, qword ptr [rsp + 96]"
@@ -744,7 +744,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movups xmm0, xmmword ptr [rsp + 104]" "text": " movups xmm0, xmmword ptr [rsp + 104]"
@@ -753,7 +753,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movaps xmmword ptr [rsp + 64], xmm0" "text": " movaps xmmword ptr [rsp + 64], xmm0"
@@ -762,7 +762,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 10, "column": 10,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " cmp r8, rcx" "text": " cmp r8, rcx"
@@ -779,7 +779,7 @@
], ],
"source": { "source": {
"column": 6, "column": 6,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " je .LBB2_3" "text": " je .LBB2_3"
@@ -878,7 +878,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 32, "column": 32,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 67 "line": 67
}, },
"text": " add rcx, 1" "text": " add rcx, 1"
@@ -917,7 +917,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov al, byte ptr [rsp + 79]" "text": " mov al, byte ptr [rsp + 79]"
@@ -926,7 +926,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov byte ptr [rsp + 38], al" "text": " mov byte ptr [rsp + 38], al"
@@ -935,7 +935,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " movzx eax, word ptr [rsp + 77]" "text": " movzx eax, word ptr [rsp + 77]"
@@ -944,7 +944,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov word ptr [rsp + 36], ax" "text": " mov word ptr [rsp + 36], ax"
@@ -953,7 +953,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov eax, dword ptr [rsp + 73]" "text": " mov eax, dword ptr [rsp + 73]"
@@ -962,7 +962,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov dword ptr [rsp + 32], eax" "text": " mov dword ptr [rsp + 32], eax"
@@ -986,7 +986,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 46, "column": 46,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " add rsi, 1" "text": " add rsi, 1"
@@ -995,7 +995,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 40], rdi" "text": " mov qword ptr [rsp + 40], rdi"
@@ -1004,7 +1004,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 48], rcx" "text": " mov qword ptr [rsp + 48], rcx"
@@ -1013,7 +1013,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 56], 0" "text": " mov byte ptr [rsp + 56], 0"
@@ -1022,7 +1022,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov eax, dword ptr [rsp + 32]" "text": " mov eax, dword ptr [rsp + 32]"
@@ -1031,7 +1031,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -1040,7 +1040,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movzx eax, word ptr [rsp + 36]" "text": " movzx eax, word ptr [rsp + 36]"
@@ -1049,7 +1049,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -1058,7 +1058,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov al, byte ptr [rsp + 38]" "text": " mov al, byte ptr [rsp + 38]"
@@ -1067,7 +1067,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -1076,7 +1076,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -1085,7 +1085,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -1094,7 +1094,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -1103,7 +1103,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -1112,7 +1112,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rdi, rbx" "text": " mov rdi, rbx"
@@ -1129,7 +1129,7 @@
], ],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -1138,7 +1138,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 11, "column": 11,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 54 "line": 54
}, },
"text": " cmp byte ptr [rbx + 16], 0" "text": " cmp byte ptr [rbx + 16], 0"
@@ -1155,7 +1155,7 @@
], ],
"source": { "source": {
"column": 13, "column": 13,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " je .LBB2_2" "text": " je .LBB2_2"
@@ -1169,7 +1169,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1178,7 +1178,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1187,7 +1187,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1196,7 +1196,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -1245,7 +1245,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 0 "line": 0
}, },
"text": " lea rax, [rsp + 96]" "text": " lea rax, [rsp + 96]"
@@ -1279,7 +1279,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 39, "column": 39,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 251 "line": 251
}, },
"text": " mov rax, qword ptr [rax + 16]" "text": " mov rax, qword ptr [rax + 16]"
@@ -1288,7 +1288,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx], rdi" "text": " mov qword ptr [rbx], rdi"
@@ -1297,7 +1297,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx + 8], r8" "text": " mov qword ptr [rbx + 8], r8"
@@ -1316,7 +1316,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 16], 1" "text": " mov byte ptr [rbx + 16], 1"
@@ -1325,7 +1325,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rcx, rax" "text": " mov rcx, rax"
@@ -1334,7 +1334,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rcx, 8" "text": " shr rcx, 8"
@@ -1343,7 +1343,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rdx, rax" "text": " mov rdx, rax"
@@ -1352,7 +1352,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rdx, 56" "text": " shr rdx, 56"
@@ -1361,7 +1361,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 23], dl" "text": " mov byte ptr [rbx + 23], dl"
@@ -1370,7 +1370,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rax, 40" "text": " shr rax, 40"
@@ -1379,7 +1379,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov word ptr [rbx + 21], ax" "text": " mov word ptr [rbx + 21], ax"
@@ -1388,7 +1388,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov dword ptr [rbx + 17], ecx" "text": " mov dword ptr [rbx + 17], ecx"
@@ -1397,7 +1397,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1406,7 +1406,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1415,7 +1415,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1424,7 +1424,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -1438,7 +1438,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " xorps xmm0, xmm0" "text": " xorps xmm0, xmm0"
@@ -1447,7 +1447,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " movups xmmword ptr [rbx], xmm0" "text": " movups xmmword ptr [rbx], xmm0"
@@ -1456,7 +1456,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rbx + 16], 0" "text": " mov byte ptr [rbx + 16], 0"
@@ -1465,7 +1465,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -1474,7 +1474,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -1483,7 +1483,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -1492,7 +1492,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"

View File

@@ -17,7 +17,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -26,7 +26,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -35,7 +35,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -44,7 +44,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -53,7 +53,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -62,7 +62,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -71,7 +71,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -80,7 +80,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -89,7 +89,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -98,7 +98,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -107,7 +107,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -116,7 +116,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -125,7 +125,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -134,7 +134,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -143,7 +143,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -152,7 +152,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -161,7 +161,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -170,7 +170,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -179,7 +179,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -188,7 +188,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -197,7 +197,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -206,7 +206,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -223,7 +223,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -250,7 +250,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -267,7 +267,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"
@@ -300,7 +300,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " push rbx" "text": " push rbx"
@@ -308,7 +308,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " sub rsp, 80" "text": " sub rsp, 80"
@@ -316,7 +316,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " mov rbx, rdi" "text": " mov rbx, rdi"
@@ -325,7 +325,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 57, "column": 57,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 241 "line": 241
}, },
"text": " mov rdi, qword ptr [rsp + 96]" "text": " mov rdi, qword ptr [rsp + 96]"
@@ -334,7 +334,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movups xmm0, xmmword ptr [rsp + 104]" "text": " movups xmm0, xmmword ptr [rsp + 104]"
@@ -343,7 +343,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movaps xmmword ptr [rsp + 64], xmm0" "text": " movaps xmmword ptr [rsp + 64], xmm0"
@@ -352,7 +352,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 10, "column": 10,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " cmp r8, rcx" "text": " cmp r8, rcx"
@@ -369,7 +369,7 @@
], ],
"source": { "source": {
"column": 6, "column": 6,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " je .LBB2_3" "text": " je .LBB2_3"
@@ -378,7 +378,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 32, "column": 32,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 67 "line": 67
}, },
"text": " add rcx, 1" "text": " add rcx, 1"
@@ -387,7 +387,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov al, byte ptr [rsp + 79]" "text": " mov al, byte ptr [rsp + 79]"
@@ -396,7 +396,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov byte ptr [rsp + 38], al" "text": " mov byte ptr [rsp + 38], al"
@@ -405,7 +405,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " movzx eax, word ptr [rsp + 77]" "text": " movzx eax, word ptr [rsp + 77]"
@@ -414,7 +414,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov word ptr [rsp + 36], ax" "text": " mov word ptr [rsp + 36], ax"
@@ -423,7 +423,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov eax, dword ptr [rsp + 73]" "text": " mov eax, dword ptr [rsp + 73]"
@@ -432,7 +432,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov dword ptr [rsp + 32], eax" "text": " mov dword ptr [rsp + 32], eax"
@@ -441,7 +441,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 46, "column": 46,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " add rsi, 1" "text": " add rsi, 1"
@@ -450,7 +450,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 40], rdi" "text": " mov qword ptr [rsp + 40], rdi"
@@ -459,7 +459,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 48], rcx" "text": " mov qword ptr [rsp + 48], rcx"
@@ -468,7 +468,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 56], 0" "text": " mov byte ptr [rsp + 56], 0"
@@ -477,7 +477,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov eax, dword ptr [rsp + 32]" "text": " mov eax, dword ptr [rsp + 32]"
@@ -486,7 +486,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -495,7 +495,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movzx eax, word ptr [rsp + 36]" "text": " movzx eax, word ptr [rsp + 36]"
@@ -504,7 +504,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -513,7 +513,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov al, byte ptr [rsp + 38]" "text": " mov al, byte ptr [rsp + 38]"
@@ -522,7 +522,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -531,7 +531,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -540,7 +540,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -549,7 +549,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -558,7 +558,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -567,7 +567,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rdi, rbx" "text": " mov rdi, rbx"
@@ -584,7 +584,7 @@
], ],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -593,7 +593,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 11, "column": 11,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 54 "line": 54
}, },
"text": " cmp byte ptr [rbx + 16], 0" "text": " cmp byte ptr [rbx + 16], 0"
@@ -610,7 +610,7 @@
], ],
"source": { "source": {
"column": 13, "column": 13,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " je .LBB2_2" "text": " je .LBB2_2"
@@ -619,7 +619,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -628,7 +628,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -637,7 +637,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -646,7 +646,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -660,7 +660,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 0 "line": 0
}, },
"text": " lea rax, [rsp + 96]" "text": " lea rax, [rsp + 96]"
@@ -669,7 +669,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 39, "column": 39,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 251 "line": 251
}, },
"text": " mov rax, qword ptr [rax + 16]" "text": " mov rax, qword ptr [rax + 16]"
@@ -678,7 +678,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx], rdi" "text": " mov qword ptr [rbx], rdi"
@@ -687,7 +687,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx + 8], r8" "text": " mov qword ptr [rbx + 8], r8"
@@ -696,7 +696,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 16], 1" "text": " mov byte ptr [rbx + 16], 1"
@@ -705,7 +705,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rcx, rax" "text": " mov rcx, rax"
@@ -714,7 +714,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rcx, 8" "text": " shr rcx, 8"
@@ -723,7 +723,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rdx, rax" "text": " mov rdx, rax"
@@ -732,7 +732,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rdx, 56" "text": " shr rdx, 56"
@@ -741,7 +741,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 23], dl" "text": " mov byte ptr [rbx + 23], dl"
@@ -750,7 +750,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rax, 40" "text": " shr rax, 40"
@@ -759,7 +759,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov word ptr [rbx + 21], ax" "text": " mov word ptr [rbx + 21], ax"
@@ -768,7 +768,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov dword ptr [rbx + 17], ecx" "text": " mov dword ptr [rbx + 17], ecx"
@@ -777,7 +777,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -786,7 +786,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -795,7 +795,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -804,7 +804,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -818,7 +818,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " xorps xmm0, xmm0" "text": " xorps xmm0, xmm0"
@@ -827,7 +827,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " movups xmmword ptr [rbx], xmm0" "text": " movups xmmword ptr [rbx], xmm0"
@@ -836,7 +836,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rbx + 16], 0" "text": " mov byte ptr [rbx + 16], 0"
@@ -845,7 +845,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -854,7 +854,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -863,7 +863,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -872,7 +872,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"

View File

@@ -17,7 +17,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -26,7 +26,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -35,7 +35,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -44,7 +44,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -53,7 +53,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -62,7 +62,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -71,7 +71,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -80,7 +80,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -89,7 +89,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -98,7 +98,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -107,7 +107,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -116,7 +116,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -125,7 +125,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -134,7 +134,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -143,7 +143,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -152,7 +152,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -161,7 +161,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -170,7 +170,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -179,7 +179,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -188,7 +188,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -197,7 +197,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -206,7 +206,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -215,7 +215,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -242,7 +242,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -259,7 +259,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"

View File

@@ -57,7 +57,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -66,7 +66,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -80,7 +80,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -154,7 +154,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -163,7 +163,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -172,7 +172,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -181,7 +181,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -190,7 +190,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -199,7 +199,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -208,7 +208,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -217,7 +217,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -226,7 +226,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -235,7 +235,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -259,7 +259,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -268,7 +268,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -277,7 +277,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -286,7 +286,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -295,7 +295,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -354,7 +354,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -363,7 +363,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -382,7 +382,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -401,7 +401,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -428,7 +428,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -485,7 +485,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -502,7 +502,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"

View File

@@ -336,7 +336,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rsp + 32], 0" "text": " mov byte ptr [rsp + 32], 0"
@@ -345,7 +345,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov qword ptr [rsp + 24], 0" "text": " mov qword ptr [rsp + 24], 0"
@@ -369,7 +369,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 40], offset .L.str" "text": " mov qword ptr [rsp + 40], offset .L.str"
@@ -443,7 +443,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov rax, qword ptr [rsp + 24]" "text": " mov rax, qword ptr [rsp + 24]"
@@ -452,7 +452,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov qword ptr [rsp + 48], rax" "text": " mov qword ptr [rsp + 48], rax"
@@ -461,7 +461,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 32]" "text": " mov al, byte ptr [rsp + 32]"
@@ -470,7 +470,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 56], al" "text": " mov byte ptr [rsp + 56], al"
@@ -479,7 +479,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov eax, dword ptr [rsp + 33]" "text": " mov eax, dword ptr [rsp + 33]"
@@ -488,7 +488,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -497,7 +497,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movzx eax, word ptr [rsp + 37]" "text": " movzx eax, word ptr [rsp + 37]"
@@ -506,7 +506,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -515,7 +515,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov al, byte ptr [rsp + 39]" "text": " mov al, byte ptr [rsp + 39]"
@@ -524,7 +524,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -553,7 +553,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -562,7 +562,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -571,7 +571,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -580,7 +580,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -589,7 +589,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " lea rdi, [rsp + 64]" "text": " lea rdi, [rsp + 64]"
@@ -648,7 +648,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " xor esi, esi" "text": " xor esi, esi"
@@ -657,7 +657,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov edx, offset .L.str" "text": " mov edx, offset .L.str"
@@ -676,7 +676,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov ecx, offset .L.str+1" "text": " mov ecx, offset .L.str+1"
@@ -695,7 +695,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " mov r8d, offset .L.str+5" "text": " mov r8d, offset .L.str+5"
@@ -722,7 +722,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 267 "line": 267
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -799,7 +799,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " mov rdi, rax" "text": " mov rdi, rax"
@@ -816,7 +816,7 @@
], ],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 298 "line": 298
}, },
"text": " call __clang_call_terminate" "text": " call __clang_call_terminate"
@@ -1289,7 +1289,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " push rbx" "text": " push rbx"
@@ -1302,7 +1302,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " sub rsp, 80" "text": " sub rsp, 80"
@@ -1445,7 +1445,7 @@
{ {
"labels": [], "labels": [],
"source": { "source": {
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 235 "line": 235
}, },
"text": " mov rbx, rdi" "text": " mov rbx, rdi"
@@ -1514,7 +1514,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 57, "column": 57,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 241 "line": 241
}, },
"text": " mov rdi, qword ptr [rsp + 96]" "text": " mov rdi, qword ptr [rsp + 96]"
@@ -1583,7 +1583,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movups xmm0, xmmword ptr [rsp + 104]" "text": " movups xmm0, xmmword ptr [rsp + 104]"
@@ -1592,7 +1592,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 55, "column": 55,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 64 "line": 64
}, },
"text": " movaps xmmword ptr [rsp + 64], xmm0" "text": " movaps xmmword ptr [rsp + 64], xmm0"
@@ -1611,7 +1611,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 10, "column": 10,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " cmp r8, rcx" "text": " cmp r8, rcx"
@@ -1638,7 +1638,7 @@
], ],
"source": { "source": {
"column": 6, "column": 6,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 65 "line": 65
}, },
"text": " je .LBB2_3" "text": " je .LBB2_3"
@@ -1747,7 +1747,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 32, "column": 32,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 67 "line": 67
}, },
"text": " add rcx, 1" "text": " add rcx, 1"
@@ -1796,7 +1796,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov al, byte ptr [rsp + 79]" "text": " mov al, byte ptr [rsp + 79]"
@@ -1805,7 +1805,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov byte ptr [rsp + 38], al" "text": " mov byte ptr [rsp + 38], al"
@@ -1814,7 +1814,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " movzx eax, word ptr [rsp + 77]" "text": " movzx eax, word ptr [rsp + 77]"
@@ -1823,7 +1823,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov word ptr [rsp + 36], ax" "text": " mov word ptr [rsp + 36], ax"
@@ -1832,7 +1832,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov eax, dword ptr [rsp + 73]" "text": " mov eax, dword ptr [rsp + 73]"
@@ -1841,7 +1841,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 57 "line": 57
}, },
"text": " mov dword ptr [rsp + 32], eax" "text": " mov dword ptr [rsp + 32], eax"
@@ -1875,7 +1875,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 46, "column": 46,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " add rsi, 1" "text": " add rsi, 1"
@@ -1894,7 +1894,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 40], rdi" "text": " mov qword ptr [rsp + 40], rdi"
@@ -1903,7 +1903,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 48], rcx" "text": " mov qword ptr [rsp + 48], rcx"
@@ -1912,7 +1912,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 56], 0" "text": " mov byte ptr [rsp + 56], 0"
@@ -1921,7 +1921,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov eax, dword ptr [rsp + 32]" "text": " mov eax, dword ptr [rsp + 32]"
@@ -1930,7 +1930,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov dword ptr [rsp + 57], eax" "text": " mov dword ptr [rsp + 57], eax"
@@ -1939,7 +1939,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movzx eax, word ptr [rsp + 36]" "text": " movzx eax, word ptr [rsp + 36]"
@@ -1948,7 +1948,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov word ptr [rsp + 61], ax" "text": " mov word ptr [rsp + 61], ax"
@@ -1957,7 +1957,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov al, byte ptr [rsp + 38]" "text": " mov al, byte ptr [rsp + 38]"
@@ -1966,7 +1966,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 95, "column": 95,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov byte ptr [rsp + 63], al" "text": " mov byte ptr [rsp + 63], al"
@@ -1980,7 +1980,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rax, qword ptr [rsp + 56]" "text": " mov rax, qword ptr [rsp + 56]"
@@ -1989,7 +1989,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov qword ptr [rsp + 16], rax" "text": " mov qword ptr [rsp + 16], rax"
@@ -1998,7 +1998,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmm0, xmmword ptr [rsp + 40]" "text": " movups xmm0, xmmword ptr [rsp + 40]"
@@ -2007,7 +2007,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " movups xmmword ptr [rsp], xmm0" "text": " movups xmmword ptr [rsp], xmm0"
@@ -2016,7 +2016,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " mov rdi, rbx" "text": " mov rdi, rbx"
@@ -2038,7 +2038,7 @@
], ],
"source": { "source": {
"column": 26, "column": 26,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE" "text": " call _ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE"
@@ -2057,7 +2057,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 11, "column": 11,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 54 "line": 54
}, },
"text": " cmp byte ptr [rbx + 16], 0" "text": " cmp byte ptr [rbx + 16], 0"
@@ -2084,7 +2084,7 @@
], ],
"source": { "source": {
"column": 13, "column": 13,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 246 "line": 246
}, },
"text": " je .LBB2_2" "text": " je .LBB2_2"
@@ -2108,7 +2108,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -2117,7 +2117,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -2131,7 +2131,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -2145,7 +2145,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -2209,7 +2209,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 0 "line": 0
}, },
"text": " lea rax, [rsp + 96]" "text": " lea rax, [rsp + 96]"
@@ -2253,7 +2253,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 39, "column": 39,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 251 "line": 251
}, },
"text": " mov rax, qword ptr [rax + 16]" "text": " mov rax, qword ptr [rax + 16]"
@@ -2272,7 +2272,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx], rdi" "text": " mov qword ptr [rbx], rdi"
@@ -2281,7 +2281,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 54, "column": 54,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 38 "line": 38
}, },
"text": " mov qword ptr [rbx + 8], r8" "text": " mov qword ptr [rbx + 8], r8"
@@ -2310,7 +2310,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 16], 1" "text": " mov byte ptr [rbx + 16], 1"
@@ -2319,7 +2319,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rcx, rax" "text": " mov rcx, rax"
@@ -2333,7 +2333,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rcx, 8" "text": " shr rcx, 8"
@@ -2342,7 +2342,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov rdx, rax" "text": " mov rdx, rax"
@@ -2356,7 +2356,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rdx, 56" "text": " shr rdx, 56"
@@ -2365,7 +2365,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov byte ptr [rbx + 23], dl" "text": " mov byte ptr [rbx + 23], dl"
@@ -2374,7 +2374,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " shr rax, 40" "text": " shr rax, 40"
@@ -2383,7 +2383,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov word ptr [rbx + 21], ax" "text": " mov word ptr [rbx + 21], ax"
@@ -2392,7 +2392,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 9, "column": 9,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 39 "line": 39
}, },
"text": " mov dword ptr [rbx + 17], ecx" "text": " mov dword ptr [rbx + 17], ecx"
@@ -2411,7 +2411,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -2420,7 +2420,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -2434,7 +2434,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -2448,7 +2448,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"
@@ -2477,7 +2477,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " xorps xmm0, xmm0" "text": " xorps xmm0, xmm0"
@@ -2486,7 +2486,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " movups xmmword ptr [rbx], xmm0" "text": " movups xmmword ptr [rbx], xmm0"
@@ -2495,7 +2495,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 12, "column": 12,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/return_type.hpp",
"line": 18 "line": 18
}, },
"text": " mov byte ptr [rbx + 16], 0" "text": " mov byte ptr [rbx + 16], 0"
@@ -2514,7 +2514,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " mov rax, rbx" "text": " mov rax, rbx"
@@ -2523,7 +2523,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " add rsp, 80" "text": " add rsp, 80"
@@ -2537,7 +2537,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " pop rbx" "text": " pop rbx"
@@ -2551,7 +2551,7 @@
"labels": [], "labels": [],
"source": { "source": {
"column": 1, "column": 1,
"file": "/tmp/compiler-explorer-compiler1181120-2080-yfo6a1.y1o4e//opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp", "file": "/opt/compiler-explorer/libs/ctre/master/include/ctre/evaluation.hpp",
"line": 252 "line": 252
}, },
"text": " ret" "text": " ret"

View File

@@ -13,7 +13,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 3 "line": 3,
"mainsource": true
}, },
"text": " MOV R1, c[0x0][0x44]" "text": " MOV R1, c[0x0][0x44]"
}, },
@@ -25,7 +26,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 3 "line": 3,
"mainsource": true
}, },
"text": " S2R R0, SR_CTAID.X" "text": " S2R R0, SR_CTAID.X"
}, },
@@ -37,7 +39,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 4 "line": 4,
"mainsource": true
}, },
"text": " ISETP.GE.AND P0, PT, R0, c[0x0][0x148], PT" "text": " ISETP.GE.AND P0, PT, R0, c[0x0][0x148], PT"
}, },
@@ -49,7 +52,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 4 "line": 4,
"mainsource": true
}, },
"text": " @P0 EXIT" "text": " @P0 EXIT"
}, },
@@ -61,7 +65,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " ISCADD R2.CC, R0, c[0x0][0x140], 0x2" "text": " ISCADD R2.CC, R0, c[0x0][0x140], 0x2"
}, },
@@ -73,7 +78,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " MOV32I R3, 0x4" "text": " MOV32I R3, 0x4"
}, },
@@ -85,7 +91,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " IMAD.HI.X R3, R0, R3, c[0x0][0x144]" "text": " IMAD.HI.X R3, R0, R3, c[0x0][0x144]"
}, },
@@ -97,7 +104,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " LD.E R0, [R2]" "text": " LD.E R0, [R2]"
}, },
@@ -109,7 +117,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " IMUL R4, R0, R0" "text": " IMUL R4, R0, R0"
}, },
@@ -121,7 +130,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " ST.E [R2], R4" "text": " ST.E [R2], R4"
}, },
@@ -133,7 +143,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " EXIT" "text": " EXIT"
}, },
@@ -150,7 +161,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " BRA `(.L_1)" "text": " BRA `(.L_1)"
}, },

View File

@@ -13,7 +13,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 4 "line": 4,
"mainsource": true
}, },
"text": " MOV R1, c[0x0][0x44]" "text": " MOV R1, c[0x0][0x44]"
}, },
@@ -25,7 +26,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 4 "line": 4,
"mainsource": true
}, },
"text": " S2R R0, SR_CTAID.X" "text": " S2R R0, SR_CTAID.X"
}, },
@@ -37,7 +39,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " ISETP.GE.AND P0, PT, R0, c[0x0][0x148], PT" "text": " ISETP.GE.AND P0, PT, R0, c[0x0][0x148], PT"
}, },
@@ -49,7 +52,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 5 "line": 5,
"mainsource": true
}, },
"text": " @!P0 BRA `(.L_1)" "text": " @!P0 BRA `(.L_1)"
}, },
@@ -61,7 +65,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " MOV R0, c[0x0][0x148]" "text": " MOV R0, c[0x0][0x148]"
}, },
@@ -73,7 +78,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " MOV32I R3, 0x4" "text": " MOV32I R3, 0x4"
}, },
@@ -85,7 +91,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " IADD32I R0, R0, -0x1" "text": " IADD32I R0, R0, -0x1"
}, },
@@ -97,7 +104,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " ISCADD R2.CC, R0, c[0x0][0x140], 0x2" "text": " ISCADD R2.CC, R0, c[0x0][0x140], 0x2"
}, },
@@ -109,7 +117,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " IMAD.HI.X R3, R0, R3, c[0x0][0x144]" "text": " IMAD.HI.X R3, R0, R3, c[0x0][0x144]"
}, },
@@ -121,7 +130,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 8 "line": 8,
"mainsource": true
}, },
"text": " ST.E [R2], RZ" "text": " ST.E [R2], RZ"
}, },
@@ -133,7 +143,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 10 "line": 10,
"mainsource": true
}, },
"text": " EXIT" "text": " EXIT"
}, },
@@ -150,7 +161,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " ISCADD R2.CC, R0, c[0x0][0x140], 0x2" "text": " ISCADD R2.CC, R0, c[0x0][0x140], 0x2"
}, },
@@ -162,7 +174,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " MOV32I R3, 0x4" "text": " MOV32I R3, 0x4"
}, },
@@ -174,7 +187,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " IMAD.HI.X R3, R0, R3, c[0x0][0x144]" "text": " IMAD.HI.X R3, R0, R3, c[0x0][0x144]"
}, },
@@ -186,7 +200,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " LD.E R0, [R2]" "text": " LD.E R0, [R2]"
}, },
@@ -198,7 +213,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 1 "line": 1,
"mainsource": true
}, },
"text": " IMAD R0, R0, R0, c[0x0][0x148]" "text": " IMAD R0, R0, R0, c[0x0][0x148]"
}, },
@@ -210,7 +226,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " IADD32I R4, R0, 0x1" "text": " IADD32I R4, R0, 0x1"
}, },
@@ -222,7 +239,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " ST.E [R2], R4" "text": " ST.E [R2], R4"
}, },
@@ -234,7 +252,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " EXIT" "text": " EXIT"
}, },
@@ -251,7 +270,8 @@
], ],
"source": { "source": {
"file": null, "file": null,
"line": 6 "line": 6,
"mainsource": true
}, },
"text": " BRA `(.L_2)" "text": " BRA `(.L_2)"
}, },

View File

@@ -7,6 +7,7 @@
"source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n",
"compilers": [ "compilers": [
{ {
"_internalid": 1,
"id": "clang_concepts", "id": "clang_concepts",
"options": "-std=c++1z -Wuninitialized -O3", "options": "-std=c++1z -Wuninitialized -O3",
"filters": { "filters": {
@@ -29,6 +30,7 @@
"tools": [] "tools": []
}, },
{ {
"_internalid": 2,
"id": "g82", "id": "g82",
"options": "", "options": "",
"filters": { "filters": {
@@ -50,5 +52,6 @@
], ],
"executors": [] "executors": []
} }
] ],
"trees": []
} }

View File

@@ -45,6 +45,7 @@
}, },
"compilers": [ "compilers": [
{ {
"_internalid": 1,
"id": "vc2017_64", "id": "vc2017_64",
"options": "", "options": "",
"filters": { "filters": {
@@ -62,6 +63,7 @@
"tools": [] "tools": []
}, },
{ {
"_internalid": 2,
"id": "vc2017_32", "id": "vc2017_32",
"options": "-O3", "options": "-O3",
"filters": { "filters": {
@@ -79,6 +81,7 @@
"tools": [] "tools": []
}, },
{ {
"_internalid": 3,
"id": "vc2017_64", "id": "vc2017_64",
"options": "-O2", "options": "-O2",
"filters": { "filters": {
@@ -98,5 +101,6 @@
], ],
"executors": [] "executors": []
} }
] ],
"trees": []
} }

View File

@@ -6,6 +6,7 @@
"source": "// Type your code here, or load an example.\nint square(int num) {\n auto x = 344 + 5 + 1;\n return num * num + 234 + x;\n}\n\nint main() {\n return square(23);\n}\n", "source": "// Type your code here, or load an example.\nint square(int num) {\n auto x = 344 + 5 + 1;\n return num * num + 234 + x;\n}\n\nint main() {\n return square(23);\n}\n",
"compilers": [ "compilers": [
{ {
"_internalid": 1,
"filters": { "filters": {
"binary": false, "binary": false,
"commentOnly": true, "commentOnly": true,
@@ -58,5 +59,6 @@
} }
] ]
} }
] ],
"trees": []
} }

View File

@@ -7,6 +7,7 @@
"conformanceview": false, "conformanceview": false,
"compilers": [ "compilers": [
{ {
"_internalid": 1,
"id": "g111", "id": "g111",
"options": "", "options": "",
"filters": { "filters": {
@@ -53,5 +54,6 @@
} }
] ]
} }
] ],
"trees": []
} }

View File

@@ -0,0 +1,156 @@
{
"settings": {
"hasHeaders": true,
"constrainDragToContainer": false,
"reorderEnabled": true,
"selectionEnabled": false,
"popoutWholeStack": false,
"blockedPopoutsThrowError": true,
"closePopoutsOnUnload": true,
"showPopoutIcon": true,
"showMaximiseIcon": true,
"showCloseIcon": true,
"responsiveMode": "onload",
"tabOverlapAllowance": 0,
"reorderOnTabMenuClick": true,
"tabControlOffset": 10,
"theme": "dark"
},
"dimensions": {
"borderWidth": 5,
"borderGrabWidth": 15,
"minItemHeight": 10,
"minItemWidth": 10,
"headerHeight": 20,
"dragProxyWidth": 300,
"dragProxyHeight": 200
},
"labels": {
"close": "close",
"maximise": "maximise",
"minimise": "minimise",
"popout": "open in new window",
"popin": "pop in",
"tabDropdown": "additional tabs"
},
"content": [
{
"type": "row",
"isClosable": true,
"reorderEnabled": true,
"title": "",
"content": [
{
"type": "stack",
"width": 50,
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"content": [
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 1,
"source": "#include <iostream>\n \nint main() {\n std::cout << \"Hello CE!\";\n}",
"lang": "c++",
"fontScale": 25,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "C++ source #1"
}
]
},
{
"type": "column",
"isClosable": true,
"reorderEnabled": true,
"title": "",
"width": 50,
"content": [
{
"type": "stack",
"height": 50,
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"content": [
{
"type": "component",
"componentName": "compiler",
"componentState": {
"id": 1,
"compiler": "g83",
"source": 1,
"options": "-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter",
"filters": {
"commentOnly": true,
"directives": true,
"intel": true,
"labels": true,
"trim": true,
"execute": true,
"binary": false,
"demangle": true,
"libraryCode": true
},
"libs": [],
"lang": "c++",
"selection": {
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 1,
"selectionStartLineNumber": 1,
"selectionStartColumn": 1,
"positionLineNumber": 1,
"positionColumn": 1
},
"flagsViewOpen": false,
"fontScale": 30,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "x86-64 gcc 8.3 (Editor #1, Compiler #1) C++"
}
]
},
{
"type": "stack",
"height": 50,
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"content": [
{
"type": "component",
"componentName": "output",
"componentState": {
"compiler": 1,
"wrap": false,
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "Output of x86-64 gcc 8.3 (Compiler #1)"
}
]
}
]
}
]
}
],
"isClosable": true,
"reorderEnabled": true,
"title": "",
"openPopouts": [],
"maximisedItemId": null
}

View File

@@ -0,0 +1,34 @@
{
"sessions": [
{
"id": 1,
"language": "c++",
"source": "#include <iostream>\n \nint main() {\n std::cout << \"Hello CE!\";\n}",
"conformanceview": false,
"compilers": [
{
"_internalid": 1,
"id": "g83",
"options": "-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter",
"filters": {
"binary": false,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": true,
"intel": true,
"labels": true,
"trim": true
},
"libs": [],
"specialoutputs": [
"compilerOutput"
],
"tools": []
}
],
"executors": []
}
],
"trees": []
}

View File

@@ -0,0 +1,240 @@
{
"settings": {
"hasHeaders": true,
"constrainDragToContainer": false,
"reorderEnabled": true,
"selectionEnabled": false,
"popoutWholeStack": false,
"blockedPopoutsThrowError": true,
"closePopoutsOnUnload": true,
"showPopoutIcon": false,
"showMaximiseIcon": true,
"showCloseIcon": true,
"responsiveMode": "onload",
"tabOverlapAllowance": 0,
"reorderOnTabMenuClick": true,
"tabControlOffset": 10
},
"dimensions": {
"borderWidth": 5,
"borderGrabWidth": 15,
"minItemHeight": 10,
"minItemWidth": 10,
"headerHeight": 20,
"dragProxyWidth": 300,
"dragProxyHeight": 200
},
"labels": {
"close": "close",
"maximise": "maximise",
"minimise": "minimise",
"popout": "open in new window",
"popin": "pop in",
"tabDropdown": "additional tabs"
},
"content": [
{
"type": "row",
"isClosable": true,
"reorderEnabled": true,
"title": "",
"content": [
{
"type": "stack",
"header": {},
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"width": 32.68232718579945,
"content": [
{
"type": "component",
"componentName": "tree",
"componentState": {
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "hellow",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"filename": "CMakeLists.txt",
"isIncluded": true,
"isOpen": true,
"editorId": 1,
"isMainSource": true,
"content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"langId": "cmake"
},
{
"fileId": 2,
"filename": "example.cpp",
"isIncluded": true,
"isOpen": true,
"editorId": 2,
"isMainSource": false,
"content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"langId": "c++"
},
{
"fileId": 3,
"filename": "subdir/hello.txt",
"isIncluded": true,
"isOpen": false,
"editorId": -1,
"isMainSource": false,
"content": "Hello, World!!!!\n",
"langId": "cmake"
}
],
"newFileId": 4
},
"isClosable": true,
"reorderEnabled": true,
"title": "Tree #1"
}
]
},
{
"type": "column",
"isClosable": true,
"reorderEnabled": true,
"title": "",
"width": 33.984339480867234,
"content": [
{
"type": "stack",
"header": {},
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"width": 34.10502675378526,
"height": 50,
"content": [
{
"type": "component",
"componentName": "compiler",
"componentState": {
"id": 1,
"compiler": "g103",
"source": false,
"tree": 1,
"options": "-g -O3 -flto",
"filters": {
"binary": false,
"execute": true,
"intel": true,
"demangle": true,
"labels": true,
"libraryCode": true,
"directives": true,
"commentOnly": true,
"trim": false
},
"libs": [
{
"name": "fmt",
"ver": "700"
}
],
"lang": "c++",
"selection": {
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 1,
"selectionStartLineNumber": 1,
"selectionStartColumn": 1,
"positionLineNumber": 1,
"positionColumn": 1
},
"flagsViewOpen": false,
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "x86-64 gcc 10.3 (C++, Tree #1, Compiler #1)"
}
]
},
{
"type": "stack",
"header": {},
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"height": 50,
"content": [
{
"type": "component",
"componentName": "output",
"componentState": {
"compiler": 1,
"editor": false,
"tree": 1,
"wrap": false,
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "Output of x86-64 gcc 10.3 (Compiler #1)"
}
]
}
]
},
{
"type": "stack",
"width": 33.33333333333333,
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 1,
"content": [
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 1,
"source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"lang": "cmake",
"filename": "CMakeLists.txt",
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "CMakeLists.txt"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 2,
"source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"lang": "c++",
"filename": "example.cpp",
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "example.cpp"
}
]
}
]
}
],
"isClosable": true,
"reorderEnabled": true,
"title": "",
"openPopouts": [],
"maximisedItemId": null
}

View File

@@ -0,0 +1,92 @@
{
"sessions": [
{
"id": 1,
"language": "cmake",
"source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "CMakeLists.txt"
},
{
"id": 2,
"language": "c++",
"source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "example.cpp"
}
],
"trees": [
{
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "hellow",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": true,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"editorId": 1,
"langId": "cmake"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "example.cpp",
"content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"editorId": 2,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": false,
"filename": "subdir/hello.txt",
"content": "Hello, World!!!!\n",
"editorId": -1,
"langId": "cmake"
}
],
"newFileId": 4,
"compilers": [
{
"_internalid": 1,
"id": "g103",
"options": "-g -O3 -flto",
"filters": {
"binary": false,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": true,
"intel": true,
"labels": true,
"trim": false
},
"libs": [
{
"name": "fmt",
"ver": "700"
}
],
"specialoutputs": [
"compilerOutput"
],
"tools": []
}
],
"executors": []
}
]
}

269
test/state/tree-gl.json Normal file
View File

@@ -0,0 +1,269 @@
{
"settings": {
"hasHeaders": true,
"constrainDragToContainer": false,
"reorderEnabled": true,
"selectionEnabled": false,
"popoutWholeStack": false,
"blockedPopoutsThrowError": true,
"closePopoutsOnUnload": true,
"showPopoutIcon": false,
"showMaximiseIcon": true,
"showCloseIcon": true,
"responsiveMode": "onload",
"tabOverlapAllowance": 0,
"reorderOnTabMenuClick": true,
"tabControlOffset": 10
},
"dimensions": {
"borderWidth": 5,
"borderGrabWidth": 15,
"minItemHeight": 10,
"minItemWidth": 10,
"headerHeight": 20,
"dragProxyWidth": 300,
"dragProxyHeight": 200
},
"labels": {
"close": "close",
"maximise": "maximise",
"minimise": "minimise",
"popout": "open in new window",
"popin": "pop in",
"tabDropdown": "additional tabs"
},
"content": [
{
"type": "row",
"isClosable": true,
"reorderEnabled": true,
"title": "",
"content": [
{
"type": "stack",
"header": {},
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"width": 23.193297464602633,
"content": [
{
"type": "component",
"componentName": "tree",
"componentState": {
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "example.cpp",
"content": "// Type your code here, or load an example.\nint square(int num) {\n return num * num;\n}",
"editorId": 1,
"langId": "c++"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.h",
"content": "#pragma once\n\nint square(int num);\n",
"editorId": 2,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"editorId": -1,
"langId": "cmake"
},
{
"fileId": 4,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.cpp",
"content": "",
"editorId": 4,
"langId": ""
},
{
"fileId": 6,
"isIncluded": false,
"isOpen": true,
"isMainSource": false,
"filename": "",
"content": "",
"editorId": 3,
"langId": ""
}
],
"newFileId": 7
},
"isClosable": true,
"reorderEnabled": true,
"title": "Tree #1"
}
]
},
{
"type": "stack",
"width": 37.22445710458798,
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 3,
"content": [
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 1,
"source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"lang": "c++",
"selection": {
"startLineNumber": 6,
"startColumn": 1,
"endLineNumber": 6,
"endColumn": 1,
"selectionStartLineNumber": 6,
"selectionStartColumn": 1,
"positionLineNumber": 6,
"positionColumn": 1
},
"filename": "example.cpp",
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "example.cpp"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 2,
"source": "#pragma once\n\nint square(int num);\n",
"lang": "c++",
"filename": "square.h",
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "square.h"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 4,
"source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"lang": "c++",
"selection": {
"startLineNumber": 6,
"startColumn": 1,
"endLineNumber": 6,
"endColumn": 1,
"selectionStartLineNumber": 6,
"selectionStartColumn": 1,
"positionLineNumber": 6,
"positionColumn": 1
},
"filename": "square.cpp",
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "square.cpp"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 3,
"source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"lang": "cmake",
"filename": "CMakeLists.txt",
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "CMakeLists.txt"
}
]
},
{
"type": "stack",
"header": {},
"isClosable": true,
"reorderEnabled": true,
"title": "",
"activeItemIndex": 0,
"width": 39.5822454308094,
"content": [
{
"type": "component",
"componentName": "compiler",
"componentState": {
"id": 1,
"compiler": "g103",
"source": false,
"tree": 1,
"options": "-g -O3 -flto",
"filters": {
"binary": true,
"execute": false,
"intel": true,
"demangle": true,
"labels": true,
"libraryCode": true,
"directives": true,
"commentOnly": true,
"trim": false
},
"libs": [],
"lang": "c++",
"selection": {
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 1,
"selectionStartLineNumber": 1,
"selectionStartColumn": 1,
"positionLineNumber": 1,
"positionColumn": 1
},
"flagsViewOpen": false,
"fontScale": 14,
"fontUsePx": true
},
"isClosable": true,
"reorderEnabled": true,
"title": "x86-64 gcc 10.3 (Tree #1, Compiler #1) C++"
}
]
}
]
}
],
"isClosable": true,
"reorderEnabled": true,
"title": "",
"openPopouts": [],
"maximisedItemId": null
}

View File

@@ -0,0 +1,154 @@
[
{
"settings": {
"hasHeaders": true,
"constrainDragToContainer": false,
"reorderEnabled": true,
"selectionEnabled": false,
"popoutWholeStack": false,
"blockedPopoutsThrowError": true,
"closePopoutsOnUnload": true,
"showPopoutIcon": false,
"showMaximiseIcon": true,
"showCloseIcon": false,
"responsiveMode": "onload",
"tabOverlapAllowance": 0,
"reorderOnTabMenuClick": true,
"tabControlOffset": 10
},
"dimensions": {
"borderWidth": 5,
"borderGrabWidth": 15,
"minItemHeight": 10,
"minItemWidth": 10,
"headerHeight": 20,
"dragProxyWidth": 300,
"dragProxyHeight": 200
},
"labels": {
"close": "close",
"maximise": "maximise",
"minimise": "minimise",
"popout": "open in new window",
"popin": "pop in",
"tabDropdown": "additional tabs"
},
"content": [
{
"type": "column",
"content": [
{
"type": "column",
"width": 100,
"content": [
{
"type": "row",
"height": 50,
"content": [
{
"type": "component",
"componentName": "tree",
"componentState": {
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "hellow",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": false,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"editorId": -1,
"langId": "cmake"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": false,
"isMainSource": false,
"filename": "example.cpp",
"content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"editorId": -1,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": false,
"filename": "subdir/hello.txt",
"content": "Hello, World!!!!\n",
"editorId": -1,
"langId": "cmake"
}
],
"newFileId": 4
},
"isClosable": true,
"reorderEnabled": true
}
]
},
{
"type": "row",
"height": 50,
"content": [
{
"type": "stack",
"width": 100,
"content": [
{
"type": "component",
"componentName": "compiler",
"componentState": {
"id": 1,
"compiler": "g103",
"tree": 1,
"options": "-g -O3 -flto",
"filters": {
"binary": false,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": false,
"intel": true,
"labels": true,
"trim": false
},
"libs": [
{
"name": "fmt",
"ver": "700"
}
],
"lang": "c++"
},
"isClosable": true,
"reorderEnabled": true
},
{
"type": "component",
"componentName": "output",
"componentState": {
"compiler": 1,
"wrap": false,
"fontScale": 14
},
"isClosable": true,
"reorderEnabled": true
}
]
}
]
}
]
}
]
}
]
}
]

View File

@@ -0,0 +1,92 @@
{
"sessions": [
{
"id": 1,
"language": "cmake",
"source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "CMakeLists.txt"
},
{
"id": 2,
"language": "c++",
"source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "example.cpp"
}
],
"trees": [
{
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "hellow",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": true,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n",
"editorId": 1,
"langId": "cmake"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "example.cpp",
"content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}",
"editorId": 2,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": false,
"filename": "subdir/hello.txt",
"content": "Hello, World!!!!\n",
"editorId": -1,
"langId": "cmake"
}
],
"newFileId": 4,
"compilers": [
{
"_internalid": 1,
"id": "g103",
"options": "-g -O3 -flto",
"filters": {
"binary": false,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": false,
"intel": true,
"labels": true,
"trim": false
},
"libs": [
{
"name": "fmt",
"ver": "700"
}
],
"specialoutputs": [
"compilerOutput"
],
"tools": []
}
],
"executors": []
}
]
}

View File

@@ -0,0 +1,202 @@
{
"settings": {
"hasHeaders": true,
"constrainDragToContainer": false,
"reorderEnabled": true,
"selectionEnabled": false,
"popoutWholeStack": false,
"blockedPopoutsThrowError": true,
"closePopoutsOnUnload": true,
"showPopoutIcon": false,
"showMaximiseIcon": true,
"showCloseIcon": true,
"responsiveMode": "onload",
"tabOverlapAllowance": 0,
"reorderOnTabMenuClick": true,
"tabControlOffset": 10
},
"dimensions": {
"borderWidth": 5,
"borderGrabWidth": 15,
"minItemHeight": 10,
"minItemWidth": 10,
"headerHeight": 20,
"dragProxyWidth": 300,
"dragProxyHeight": 200
},
"labels": {
"close": "close",
"maximise": "maximise",
"minimise": "minimise",
"popout": "open in new window",
"popin": "pop in",
"tabDropdown": "additional tabs"
},
"content": [
{
"type": "row",
"content": [
{
"type": "stack",
"width": 25,
"content": [
{
"type": "component",
"componentName": "tree",
"componentState": {
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "",
"isCMakeProject": true,
"newFileId": 7,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "example.cpp",
"content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"editorId": 1,
"langId": "c++"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.h",
"content": "#pragma once\n\nint square(int num);\n",
"editorId": 2,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"editorId": -1,
"langId": "cmake"
},
{
"fileId": 4,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.cpp",
"content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"editorId": 4,
"langId": ""
}
]
},
"isClosable": true,
"reorderEnabled": true
}
]
},
{
"type": "stack",
"width": 40,
"content": [
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 1,
"source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"lang": "c++",
"filename": "example.cpp"
},
"isClosable": true,
"reorderEnabled": true,
"title": "example.cpp"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 2,
"source": "#pragma once\n\nint square(int num);\n",
"lang": "c++",
"filename": "square.h"
},
"isClosable": true,
"reorderEnabled": true,
"title": "square.h"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 4,
"source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"lang": "c++",
"filename": "square.cpp"
},
"isClosable": true,
"reorderEnabled": true,
"title": "square.cpp"
},
{
"type": "component",
"componentName": "codeEditor",
"componentState": {
"id": 3,
"source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"lang": "cmake",
"filename": "CMakeLists.txt"
},
"isClosable": true,
"reorderEnabled": true,
"title": "CMakeLists.txt"
}
]
},
{
"type": "stack",
"width": 40,
"content": [
{
"componentName": "compiler",
"componentState": {
"compiler": "g103",
"filters": {
"binary": true,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": false,
"intel": true,
"labels": true,
"trim": false
},
"lang": "c++",
"libs": [],
"options": "-g -O3 -flto",
"tree": 1
},
"isClosable": true,
"reorderEnabled": true,
"type": "component"
},
{
"componentName": "output",
"componentState": {
"compiler": 1,
"fontScale": 14,
"wrap": false
},
"isClosable": true,
"reorderEnabled": true,
"type": "component"
}
]
}
]
}
]
}

114
test/state/tree.json Normal file
View File

@@ -0,0 +1,114 @@
{
"sessions": [
{
"id": 1,
"language": "c++",
"source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "example.cpp"
},
{
"id": 2,
"language": "c++",
"source": "#pragma once\n\nint square(int num);\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "square.h"
},
{
"id": 4,
"language": "c++",
"source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "square.cpp"
},
{
"id": 3,
"language": "cmake",
"source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "CMakeLists.txt"
}
],
"trees": [
{
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "example.cpp",
"content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"editorId": 1,
"langId": "c++"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.h",
"content": "#pragma once\n\nint square(int num);\n",
"editorId": 2,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"editorId": -1,
"langId": "cmake"
},
{
"fileId": 4,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.cpp",
"content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"editorId": 4,
"langId": ""
}
],
"newFileId": 7,
"compilers": [
{
"id": "g103",
"options": "-g -O3 -flto",
"filters": {
"binary": true,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": false,
"intel": true,
"labels": true,
"trim": false
},
"libs": [],
"specialoutputs": [
"compilerOutput"
],
"tools": []
}
],
"executors": []
}
]
}

View File

@@ -0,0 +1,113 @@
{
"sessions": [
{
"id": 1,
"language": "c++",
"source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "example.cpp"
},
{
"id": 2,
"language": "c++",
"source": "#pragma once\n\nint square(int num);\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "square.h"
},
{
"id": 4,
"language": "c++",
"source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "square.cpp"
},
{
"id": 3,
"language": "cmake",
"source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"conformanceview": false,
"compilers": [],
"executors": [],
"filename": "CMakeLists.txt"
}
],
"trees": [
{
"id": 1,
"cmakeArgs": "",
"customOutputFilename": "",
"isCMakeProject": true,
"compilerLanguageId": "c++",
"files": [
{
"fileId": 1,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "example.cpp",
"content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n",
"editorId": 1,
"langId": "c++"
},
{
"fileId": 2,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.h",
"content": "#pragma once\n\nint square(int num);\n",
"editorId": 2,
"langId": "c++"
},
{
"fileId": 3,
"isIncluded": true,
"isOpen": false,
"isMainSource": true,
"filename": "CMakeLists.txt",
"content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n",
"editorId": -1,
"langId": "cmake"
},
{
"fileId": 4,
"isIncluded": true,
"isOpen": true,
"isMainSource": false,
"filename": "square.cpp",
"content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n",
"editorId": 4,
"langId": ""
}
],
"newFileId": 7,
"compilers": [
{
"_internalid": 1,
"id": "g103",
"options": "-g -O3 -flto",
"filters": {
"binary": true,
"commentOnly": true,
"demangle": true,
"directives": true,
"execute": false,
"intel": true,
"labels": true,
"trim": false
},
"libs": [],
"specialoutputs": [],
"tools": []
}
],
"executors": []
}
]
}

View File

@@ -7,6 +7,7 @@
"source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num + 3;\r\n}\r\n\r\n", "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num + 3;\r\n}\r\n\r\n",
"compilers": [ "compilers": [
{ {
"_internalid": 1,
"id": "vc2017_64", "id": "vc2017_64",
"options": "-O2", "options": "-O2",
"filters": { "filters": {
@@ -33,6 +34,7 @@
"source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num;\r\n}", "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num;\r\n}",
"compilers": [ "compilers": [
{ {
"_internalid": 2,
"id": "vc2017_32", "id": "vc2017_32",
"options": "-O3", "options": "-O3",
"filters": { "filters": {
@@ -52,5 +54,6 @@
], ],
"executors": [] "executors": []
} }
] ],
"trees": []
} }

View File

@@ -23,7 +23,7 @@
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
import { ClientState } from '../lib/clientstate'; import { ClientState } from '../lib/clientstate';
import { ClientStateNormalizer } from '../lib/clientstate-normalizer'; import { ClientStateGoldenifier, ClientStateNormalizer } from '../lib/clientstate-normalizer';
import { fs } from './utils'; import { fs } from './utils';
@@ -32,12 +32,14 @@ describe('Normalizing clientstate', () => {
const normalizer = new ClientStateNormalizer(); const normalizer = new ClientStateNormalizer();
const data = JSON.parse(fs.readFileSync('test/state/twocompilers.json')); const data = JSON.parse(fs.readFileSync('test/state/twocompilers.json'));
normalizer.fromGoldenLayout(data); normalizer.fromGoldenLayout(data);
const resultdata = JSON.parse(fs.readFileSync('test/state/twocompilers.json.normalized')); const resultdata = JSON.parse(fs.readFileSync('test/state/twocompilers.json.normalized'));
normalizer.normalized.should.deep.equal(resultdata); // note: this trick is to get rid of undefined parameters
const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
normalized.should.deep.equal(resultdata);
}); });
it('Should recognize everything and kitchensink as well', () => { it('Should recognize everything and kitchensink as well', () => {
@@ -49,7 +51,9 @@ describe('Normalizing clientstate', () => {
const resultdata = JSON.parse(fs.readFileSync('test/state/andthekitchensink.json.normalized')); const resultdata = JSON.parse(fs.readFileSync('test/state/andthekitchensink.json.normalized'));
normalizer.normalized.should.deep.equal(resultdata); const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
normalized.should.deep.equal(resultdata);
}); });
it('Should support conformanceview', () => { it('Should support conformanceview', () => {
@@ -61,7 +65,9 @@ describe('Normalizing clientstate', () => {
const resultdata = JSON.parse(fs.readFileSync('test/state/conformanceview.json.normalized')); const resultdata = JSON.parse(fs.readFileSync('test/state/conformanceview.json.normalized'));
normalizer.normalized.should.deep.equal(resultdata); const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
normalized.should.deep.equal(resultdata);
}); });
it('Should support executors', () => { it('Should support executors', () => {
@@ -73,7 +79,9 @@ describe('Normalizing clientstate', () => {
const resultdata = JSON.parse(fs.readFileSync('test/state/executor.json.normalized')); const resultdata = JSON.parse(fs.readFileSync('test/state/executor.json.normalized'));
normalizer.normalized.should.deep.equal(resultdata); const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
normalized.should.deep.equal(resultdata);
}); });
it('Should support newer features', () => { it('Should support newer features', () => {
@@ -85,7 +93,21 @@ describe('Normalizing clientstate', () => {
const resultdata = JSON.parse(fs.readFileSync('test/state/executorwrap.json.normalized')); const resultdata = JSON.parse(fs.readFileSync('test/state/executorwrap.json.normalized'));
normalizer.normalized.should.deep.equal(resultdata); const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
normalized.should.deep.equal(resultdata);
});
it('Allow output without editor id', () => {
const normalizer = new ClientStateNormalizer();
const data = JSON.parse(fs.readFileSync('test/state/output-editor-id.json'));
normalizer.fromGoldenLayout(data);
const resultdata = JSON.parse(fs.readFileSync('test/state/output-editor-id.normalized.json'));
const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
normalized.should.deep.equal(resultdata);
}); });
}); });
@@ -127,3 +149,62 @@ describe('ClientState parsing', () => {
state.sessions[0].compilers.length.should.equal(1); state.sessions[0].compilers.length.should.equal(1);
}); });
}); });
describe('Trees', () => {
it('ClientState to GL', () => {
const jsonStr = fs.readFileSync('test/state/tree.json');
const state = new ClientState(JSON.parse(jsonStr));
state.trees.length.should.equal(1);
const gl = new ClientStateGoldenifier();
gl.fromClientState(state);
const golden = JSON.parse(JSON.stringify(gl.golden));
const resultdata = JSON.parse(fs.readFileSync('test/state/tree.goldenified.json'));
golden.should.deep.equal(resultdata);
});
it('GL to ClientState', () => {
const jsonStr = fs.readFileSync('test/state/tree-gl.json');
const gl = JSON.parse(jsonStr);
const normalizer = new ClientStateNormalizer();
normalizer.fromGoldenLayout(gl);
const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
const resultdata = JSON.parse(fs.readFileSync('test/state/tree.normalized.json'));
normalized.should.deep.equal(resultdata);
});
it('GL to ClientState with correct output pane', () => {
const jsonStr = fs.readFileSync('test/state/tree-gl-outputpane.json');
const gl = JSON.parse(jsonStr);
const normalizer = new ClientStateNormalizer();
normalizer.fromGoldenLayout(gl);
const normalized = JSON.parse(JSON.stringify(normalizer.normalized));
const resultdata = JSON.parse(fs.readFileSync('test/state/tree-gl-outputpane.normalized.json'));
normalized.should.deep.equal(resultdata);
});
it('ClientState to Mobile GL', () => {
const jsonStr = fs.readFileSync('test/state/tree-mobile.json');
const state = new ClientState(JSON.parse(jsonStr));
state.trees.length.should.equal(1);
const gl = new ClientStateGoldenifier();
const slides = gl.generatePresentationModeMobileViewerSlides(state);
const golden = JSON.parse(JSON.stringify(slides));
//fs.writeFileSync('test/state/tree-mobile.goldenified.json', JSON.stringify(golden));
const resultdata = JSON.parse(fs.readFileSync('test/state/tree-mobile.goldenified.json'));
golden.should.deep.equal(resultdata);
});
});

View File

@@ -16,6 +16,9 @@ block prepend content
a.dropdown-item#add-diff(href="javascript:;" title="Click or drag to desired destination") a.dropdown-item#add-diff(href="javascript:;" title="Click or drag to desired destination")
span.dropdown-icon.fas.fa-exchange-alt span.dropdown-icon.fas.fa-exchange-alt
| Diff View | Diff View
button.dropdown-item.btn.btn-sm.btn-light#add-tree(href="javascript:;" title="Click or drag to desired destination")
span.dropdown-icon.fa.fa-list-alt
| Tree (IDE Mode)
li.nav-item.dropdown li.nav-item.dropdown
a.nav-link.dropdown-toggle#moreDropdown(href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false") More a.nav-link.dropdown-toggle#moreDropdown(href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false") More
div.dropdown-menu(aria-labelledby="moreDropdown") div.dropdown-menu(aria-labelledby="moreDropdown")

View File

@@ -127,7 +127,7 @@
.checkbox .checkbox
input.useVim(type="checkbox") input.useVim(type="checkbox")
label Vim editor mode label Vim editor mode
.checkbox .checkbox.the-save-option-to-auto-share
input.enableCtrlS(type="checkbox") input.enableCtrlS(type="checkbox")
label label
| Make | Make
@@ -135,6 +135,14 @@
| + | +
kbd S kbd S
| &nbsp;save to local file instead of creating a share link | &nbsp;save to local file instead of creating a share link
.checkbox.the-save-option-to-tree-save
input.enableCtrlStree(type="checkbox")
label
| Make
kbd Ctrl
| +
kbd S
| &nbsp;include and save the file to a Tree if that's added to the UI
.card .card
.card-header .card-header
.card-title .card-title

View File

@@ -430,3 +430,54 @@
span.lib-fav span.lib-fav
button.btn.btn-sm.lib-fav-button button.btn.btn-sm.lib-fav-button
span.lib-fav-btn-icon.far.fa-star span.lib-fav-btn-icon.far.fa-star
#tree
.top-bar.btn-toolbar.bg-light.mainbar(role="toolbar")
.btn-group.btn-group-sm.menu(role="group" aria-label="Menu")
button.dropdown-toggle.btn.btn-sm.btn-light.file-menu(type="button" title="File" aria-label="File" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
span.fa.fa-save
span.hideable &nbsp;Project
.dropdown-menu
input.dropdown-item.btn.btn-sm.btn-light.load-project-from-file(type="file" title="Load project from ZIP" aria-label="Load project from ZIP")
button.dropdown-item.btn.btn-sm.btn-light.save-project-to-file(type="file" title="Save project" aria-label="Save project")
span.dropdown-icon.fa.fa-save
| Save
.btn-group.btn-group-sm.options(role="group" aria-label="Tree settings")
button.dropdown-toggle.btn.btn-sm.btn-light.add-pane(type="button" title="Add a new pane" aria-label="Add a new pane" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false")
span.fa.fa-plus
span.hideable &nbsp;Add new...
.dropdown-menu
button.dropdown-item.btn.btn-sm.btn-light.add-editor(title="Add a new source editor view" aria-label="New source editor")
span.dropdown-icon.fa.fa-code
| Source editor
button.dropdown-item.btn.btn-sm.btn-light.add-compiler(title="Add a new compiler for this source" aria-label="New compiler")
span.dropdown-icon.fa.fa-cogs
| Compiler
button.dropdown-item.btn.btn-sm.btn-light.add-executor(title="Add a new executor for this source" aria-label="New executor")
span.dropdown-icon.fas.fa-microchip
| Execution only
.button-checkbox
button.btn.btn-sm.btn-light.cmake-project(type="button" title="CMake project" data-bind="isCMakeProject" aria-pressed="false" aria-label="CMake project")
span CMake
input.d-none(type="checkbox" checked=false)
.btn-group.btn-group-sm.ml-auto(role="group" aria-label="Language")
select.change-language(title="Change the language" placeholder="Language" disabled=embedded && readOnly)
.top-bar.btn-toolbar.bg-light.panel-args.d-none(role="toolbar")
input.cmake-arguments.form-control(type="text" placeholder="CMake arguments..." size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
.top-bar.btn-toolbar.bg-light.panel-outputfile.d-none(role="toolbar")
input.cmake-customOutputFilename.form-control(type="text" placeholder="output.s" size="256" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false")
.tree.v-scroll
ul.list-group
li.root.list-group-item.far-fa-folder
.group-header Included files
ul.list-group.named-editors
li.root.list-group-item.far-fa-folder
.group-header Excluded files
ul.list-group.unnamed-editors
#tree-editor-tpl
li.list-group-item.tree-editor-file.input-group-append
span.filename someresource.txt
button.btn.delete-file.fa.fa-trash
button.btn.rename-file.fa.fa-tag
button.btn.stage-file.fa.fa-plus