Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[v6] Improve timing display, translate NieczaBackendClisp
  • Loading branch information
sorear committed Jan 12, 2011
1 parent 6e17857 commit dc92b63
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 15 deletions.
4 changes: 4 additions & 0 deletions lib/Builtins.cs
Expand Up @@ -378,4 +378,8 @@ public class Builtins {
}
return Kernel.BoxAnyMO((double) ret, Kernel.NumMO);
}

public static void RunSubtask(string file, string args) {
System.Diagnostics.Process.Start(file, args).WaitForExit();
}
}
7 changes: 3 additions & 4 deletions v6/NieczaBackendClisp.pm6
Expand Up @@ -4,15 +4,14 @@ class NieczaBackendClisp is NieczaBackendNAM;
# XXX XXX .NET doesn't seem to have any real spawnl functionality,
# only system
sub run_command($cmd, $args) {
# This doesn't seem to compile
# Q:CgOp { (rnull (rawcall WaitForExit (rawscall System.Diagnostics.Process.Start (obj_getstr {$cmd}) (obj_getstr {$args})))) };
Q:CgOp { (rnull (rawscall Builtins,Kernel.RunSubtask (obj_getstr {$cmd}) (obj_getstr {$args}))) };
}
method _post_save($name, :$main) {
method post_save($name, :$main) {
# None needed; run does all the work
}

method _run($name) {
method run($name) {
my $fname = $name.split('::').join('.');
run_command("clisp", "cl-backend/backend.lisp " ~ $fname ~ ".nam");
}
4 changes: 2 additions & 2 deletions v6/NieczaBackendDotnet.pm6
Expand Up @@ -5,14 +5,14 @@ sub run_subtask($file, *@args) {
Q:CgOp { (rawscall Builtins,Kernel.RunCLRSubtask {$file} {@args}) }
}
method _post_save($name, :$main) {
method post_save($name, :$main) {
my $fname = $name.split('::').join('.');
run_subtask($.obj_dir.IO.append("CLRBackend.exe"),
$.obj_dir, $fname ~ ".nam", $fname ~ ($main ?? ".exe" !! ".dll"),
$main ?? "1" !! "0");
}

method _run($name) {
method run($name) {
my $fname = $name.split('::').join('.');
run_subtask($.obj_dir.IO.append($fname ~ ".exe"), @$.run_args);
}
10 changes: 3 additions & 7 deletions v6/NieczaBackendNAM.pm6
Expand Up @@ -21,19 +21,15 @@ method get_unit($name) {
# Save a unit. If $main is true, it is being considered as a main
# module; if $run, it should be auto-run. Main modules do not need
# to be retrievable.
method save_unit($name, $unit, :$main, :$run) {
method save_unit($name, $unit) {
my $file = $name.split('::').join('.').IO.but-extension('nam')\
.relative($.obj_dir);
$file.spew(NAMOutput.run($unit));

self._post_save($name, :$main);
self._run($name) if $run;
}

# For subclass use
method _post_save($name, :$main) { #OK not used
method post_save($name, :$main) { #OK not used
}

method _run($name) { #OK not used
method run($name) { #OK not used
die "nam backend does not support running code";
}
8 changes: 6 additions & 2 deletions v6/NieczaCompiler.pm6
Expand Up @@ -20,8 +20,12 @@ method !compile($unitname, $filename, $modtime, $source, $main, $run, $end) {
$.frontend.typename => { $ast = $.frontend.parse(:$unitname,
:$filename, :$modtime, :$source); },
(map -> $st { $st.typename => { $ast = $st.invoke($ast) } }, @$.stages),
$.backend.typename => { $.backend.save_unit($unitname, $ast, :$main,
:$run); $ast = Any },
($.backend.typename ~ "-save") =>
{ $.backend.save_unit($unitname, $ast); $ast = Any },
($.backend.typename ~ "-post") =>
{ $.backend.post_save($unitname, :$main); },
($.backend.typename ~ "-run") =>
{ $run && $.backend.run($unitname); },
);

for @steps -> $step {
Expand Down

0 comments on commit dc92b63

Please sign in to comment.