Skip to content

Commit

Permalink
Preliminary work for $?VM
Browse files Browse the repository at this point in the history
  • Loading branch information
lizmat committed Mar 5, 2015
1 parent d0d4ba6 commit db49f3b
Showing 1 changed file with 43 additions and 48 deletions.
91 changes: 43 additions & 48 deletions src/core/VM.pm
Expand Up @@ -9,18 +9,11 @@ class VM does Systemic {

submethod BUILD (
:$!config,
:$!desc = Str,
#?if jvm
:$!properties,
#?endif
) {
#?if jvm
$!name = 'jvm';
$!auth = $!properties<java.vendor> // "unknown";
$!version = Version.new($!properties<java.specification.version> // "unknown");
$!precomp-ext = "jar";
$!precomp-target = "jar";
$!prefix = $!properties<perl6.prefix>;
#?endif
#?if moar
$!name = 'moar';
$!auth = "The MoarVM Team";
Expand All @@ -29,6 +22,14 @@ class VM does Systemic {
$!precomp-target = "mbc";
$!prefix = $!config<prefix>;
#?endif
#?if jvm
$!name = 'jvm';
$!auth = $!properties<java.vendor> // "unknown";
$!version = Version.new($!properties<java.specification.version> // "unknown");
$!precomp-ext = "jar";
$!precomp-target = "jar";
$!prefix = $!properties<perl6.prefix>;
#?endif
# add new backends here please
}
}
Expand All @@ -48,50 +49,44 @@ multi sub postcircumfix:<{ }> (VM $d, "properties" ) {
}
#?endif

multi sub INITIALIZE_DYNAMIC('$*VM') {
PROCESS::<$VM> := do {
my $config :=
#?if jvm
do {
my %CONFIG;
my $jenv := nqp::backendconfig();
my Mu $enviter := nqp::iterator($jenv);
my $envelem;
my $key;
while $enviter {
$envelem := nqp::shift($enviter);
$key = nqp::p6box_s(nqp::iterkey_s($envelem));
%CONFIG{$key} = nqp::p6box_s(nqp::iterval($envelem));
}
%CONFIG;
};
#?endif
sub INITIALIZE-A-VM-NOW() {
my $desc := DateTime.now.Str;
#?if moar
nqp::backendconfig;
VM.new(:config(nqp::backendconfig),:$desc);
#?endif

#?if jvm
my $properties := do {
my %PROPS;
my $jenv := nqp::jvmgetproperties();
my Mu $enviter := nqp::iterator($jenv);
my $envelem;
my $key;
while $enviter {
$envelem := nqp::shift($enviter);
$key = nqp::p6box_s(nqp::iterkey_s($envelem));
%PROPS{$key} = nqp::p6box_s(nqp::iterval($envelem));
}
%PROPS;
};
#?endif
VM.new(
:$config,
#?if jvm
:$properties,
my $config := do {
my %CONFIG;
my $jenv := nqp::backendconfig();
my Mu $enviter := nqp::iterator($jenv);
my $envelem;
my $key;
while $enviter {
$envelem := nqp::shift($enviter);
$key = nqp::p6box_s(nqp::iterkey_s($envelem));
%CONFIG{$key} = nqp::p6box_s(nqp::iterval($envelem));
}
%CONFIG;
}
my $properties := do {
my %PROPS;
my $jenv := nqp::jvmgetproperties();
my Mu $enviter := nqp::iterator($jenv);
my $envelem;
my $key;
while $enviter {
$envelem := nqp::shift($enviter);
$key = nqp::p6box_s(nqp::iterkey_s($envelem));
%PROPS{$key} = nqp::p6box_s(nqp::iterval($envelem));
}
%PROPS;
}
VM.new(:$config,:$desc,:$properties);
#?endif
);
};
}

multi sub INITIALIZE_DYNAMIC('$*VM') {
PROCESS::<$VM> := INITIALIZE-A-VM-NOW();
}

# vim: ft=perl6 expandtab sw=4

0 comments on commit db49f3b

Please sign in to comment.