Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Some bits of CompUnit::PrecompilationStore
  • Loading branch information
niner committed Oct 24, 2015
1 parent 323c7aa commit b3918c4
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/core/CompUnit.pm
Expand Up @@ -10,7 +10,11 @@ class CompUnit {
has Bool $.has-precomp;
has Bool $.is-loaded;
has Mu $!module_ctx;

# The CompUnit::Repository that loaded this CompUnit.
has CompUnit::Repository $.repo is required;
# That repository's identifier for the compilation unit. This is not globally unique.
# has Str:D $.repo-id is required;

my Lock $global = Lock.new;
my $default-from = 'Perl6';
Expand Down
28 changes: 28 additions & 0 deletions src/core/CompUnit/PrecompilationStore.pm
@@ -0,0 +1,28 @@
subset CompUnit::PrecompilationId of Str:D
where { 2 < .chars < 64 && $_ ~~ /^<[A..Za..z0..9_]>+$/ };

role CompUnit::PrecompilationStore {
# Load the precompilation identified by the pairing of the specified
# compiler and precompilation ID.
method load(CompUnit::PrecompilationId $compiler-id,
CompUnit::PrecompilationId $precomp-id)
{ ... }

# Store the file at the specified path in the precompilation store,
# under the given compiler ID and precompilation ID.
method store(CompUnit::PrecompilationId $compiler-id,
CompUnit::PrecompilationId $precomp-id,
Str:D $path)
{ ... }

# Delete an individual precompilation.
method delete(CompUnit::PrecompilationId $compiler-id,
CompUnit::PrecompilationId $precomp-id)
{ ... }

# Delete all precompilations for a particular compiler.
method delete-by-compiler(CompUnit::PrecompilationId $compiler-id)
{ ... }
}

# vim: ft=perl6 expandtab sw=4
29 changes: 29 additions & 0 deletions src/core/CompUnit/PrecompilationStore/File.pm
@@ -0,0 +1,29 @@
class CompUnit::PrecompilationStore::File does CompUnit::PrecompilationStore {
has Str $.prefix is required;

method load(CompUnit::PrecompilationId $compiler-id,
CompUnit::PrecompilationId $precomp-id)
{
}

method store(CompUnit::PrecompilationId $compiler-id,
CompUnit::PrecompilationId $precomp-id,
Str:D $path)
{
my $dest = self.prefix.IO
.child($compiler-id.IO)
.child($precomp-id.substr(0, 2).IO);
$dest.mkdir;
$path.IO.copy($dest.child($precomp-id.IO));
}

method delete(CompUnit::PrecompilationId $compiler-id, CompUnit::PrecompilationId $precomp-id)
{
}

method delete-by-compiler(CompUnit::PrecompilationId $compiler-id)
{
}
}

# vim: ft=perl6 expandtab sw=4
2 changes: 2 additions & 0 deletions tools/build/Makefile-JVM.in
Expand Up @@ -204,6 +204,8 @@ J_CORE_SOURCES = \
src/core/CompUnit/DependencySpecification.pm \
src/core/CompUnit/Handle.pm \
src/core/CompUnit/Loader.pm \
src/core/CompUnit/PrecompilationStore.pm \
src/core/CompUnit/PrecompilationStore/File.pm \
src/core/CompUnit/PrecompilationRepository.pm \
src/core/CompUnit/Repository.pm \
src/core/CompUnit.pm \
Expand Down
2 changes: 2 additions & 0 deletions tools/build/moar_core_sources
Expand Up @@ -153,6 +153,8 @@ src/core/Distribution.pm
src/core/CompUnit/DependencySpecification.pm
src/core/CompUnit/Handle.pm
src/core/CompUnit/Loader.pm
src/core/CompUnit/PrecompilationStore.pm
src/core/CompUnit/PrecompilationStore/File.pm
src/core/CompUnit/PrecompilationRepository.pm
src/core/CompUnit/Repository.pm
src/core/CompUnit.pm
Expand Down

0 comments on commit b3918c4

Please sign in to comment.