From 51969a04ed629e9f71a66a9ab25056a2a5f87ec6 Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Thu, 14 Sep 2017 13:30:11 +0200 Subject: [PATCH] Generated proper package structure using 'package.skeleton()' --- com.oracle.truffle.r.pkgs/refcmp/NAMESPACE | 1 + .../refcmp/R/actParsToList.R | 15 +++ com.oracle.truffle.r.pkgs/refcmp/R/refcmp.R | 119 ------------------ com.oracle.truffle.r.pkgs/refcmp/R/snapshot.R | 9 ++ .../refcmp/R/snapshot.check.R | 28 +++++ .../refcmp/R/snapshot.id.R | 9 ++ .../refcmp/R/snapshot.init.R | 13 ++ .../refcmp/R/snapshot.isFastR.R | 4 + .../refcmp/R/snapshot.named.R | 9 ++ .../refcmp/R/snapshot.record.R | 11 ++ .../refcmp/R/snapshot.show.R | 12 ++ 11 files changed, 111 insertions(+), 119 deletions(-) create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/actParsToList.R delete mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/refcmp.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.check.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.id.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.init.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.isFastR.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.named.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.record.R create mode 100644 com.oracle.truffle.r.pkgs/refcmp/R/snapshot.show.R diff --git a/com.oracle.truffle.r.pkgs/refcmp/NAMESPACE b/com.oracle.truffle.r.pkgs/refcmp/NAMESPACE index 211930545b..a48008ffac 100644 --- a/com.oracle.truffle.r.pkgs/refcmp/NAMESPACE +++ b/com.oracle.truffle.r.pkgs/refcmp/NAMESPACE @@ -4,3 +4,4 @@ export(snapshot) export(snapshot.init) export(snapshot_id) export(snapshot.show) +export(snapshot.named) diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/actParsToList.R b/com.oracle.truffle.r.pkgs/refcmp/R/actParsToList.R new file mode 100644 index 0000000000..d08ef9546c --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/actParsToList.R @@ -0,0 +1,15 @@ +actParsToList <- +function (pars, env) { + l <- list() + for (i in seq_along(pars)) { + strrep <- as.character(pars[[i]]) + if (is.symbol(pars[[i]])) { + value <- eval(pars[[i]], envir = env) + l[[strrep]] <- value + } + else { + warning(paste0("Skipping '", strrep, "' because only symbols are allowed")) + } + } + l +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/refcmp.R b/com.oracle.truffle.r.pkgs/refcmp/R/refcmp.R deleted file mode 100644 index fc88e77f79..0000000000 --- a/com.oracle.truffle.r.pkgs/refcmp/R/refcmp.R +++ /dev/null @@ -1,119 +0,0 @@ -## - # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. - # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - # - # This code is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License version 2 only, as - # published by the Free Software Foundation. - # - # This code is distributed in the hope that it will be useful, but WITHOUT - # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - # version 2 for more details (a copy is included in the LICENSE file that - # accompanied this code). - # - # You should have received a copy of the GNU General Public License version - # 2 along with this work; if not, write to the Free Software Foundation, - # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - # - # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - # or visit www.oracle.com if you need additional information or have any - # questions. -## - -refcmpEnv <- new.env(parent = emptyenv()) -refcmpEnv$snapshot_dir <- 'snapshots' -refcmpEnv$snapshot_id <- 0L - -snapshot.isFastR <- function() { - length(grep('FastR', R.Version()$version.string)) != 0 -} -refcmpEnv$isReferenceRun <- function() !snapshot.isFastR() - -snapshot.init <- function(dir) { - if(!missing(dir)) { - refcmpEnv$snaphost_dir <- dir - } - refcmpEnv$snapshot_id <- 0 -} - -snapshot <- function(...) { - # the actual parameter expessions - actParExprs <- as.list(match.call()[-1]) - valueList <- actParsToList(actParExprs, parent.frame()) - try({ - snapshot_id(refcmpEnv$snapshot_id, valueList) - refcmpEnv$snapshot_id <- refcmpEnv$snapshot_id + 1 - }) -} - -snapshot_id <- function(id, valueList, env = parent.frame()) { - if(refcmpEnv$isReferenceRun()) { - snapshot.record(id, valueList) - } else { - snapshot.check(id, valueList) - } -} - -snapshot.record <- function(id, valueList) { - dumpDir <- file.path(refcmpEnv$snapshot_dir) - if(!dir.exists(dumpDir)) { - dir.create(dumpDir) - } - fcon <- file(file.path(refcmpEnv$snapshot_dir, paste0("snapshot", id, ".obj"))) - saveRDS(valueList, file=fcon) - close(fcon) -} - -snapshot.check <- function(id, valueList) { - fcon <- file(file.path(refcmpEnv$snapshot_dir, paste0("snapshot", id, ".obj"))) - restoredVars <- readRDS(file=fcon) - close(fcon) - - if(length(restoredVars) < length(vars)) { - stop(paste("recorded snapshot has", length(restoredVars), "recorded variables but expected", length(vars))) - } - - var_names <- names(vars) - restored_names <- names(restoredVars) - for(i in seq_along(var_names)) { - if(var_names[[i]] %in% restored_names) { - actualVal <- vars[[var_names[[i]]]] - expectedVal <- restoredVars[[var_names[[i]]]] - if(!identical(expectedVal, actualVal)) { - stop(paste0("Value of variable '", var_names[[i]], "' differs. Expected ", expectedVal, " but was ", actualVal)) - } - } else { - stop(paste0("Missing variable '", var_names[[i]], "' in recorded variables")) - } - } -} - -snapshot.show <- function(id = refcmpEnv$snapshot_id) { - snapshot_filename <- file.path(refcmpEnv$snapshot_dir, paste0("snapshot", id, ".obj")) - if(!file.exists(snapshot_filename)) { - stop(paste0("Snapshot with ID=", id, " does not exist")) - } - fcon <- file(snapshot_filename) - restoredVars <- readRDS(file=fcon) - close(fcon) - - return (restoredVars) -} - -actParsToList <- function(pars, env) { - l <- list() - for(i in seq_along(pars)) { - strrep <- as.character(pars[[i]]) - if (is.symbol(pars[[i]])) { - value <- eval(pars[[i]], envir=env) - # cat(i, ": ", strrep, " = ", value, "\n") - l[[strrep]] <- value - } else { - warning(paste0("Skipping '", strrep, "' because only symbols are allowed")) - } - } - l -} - - diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.R new file mode 100644 index 0000000000..495f770334 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.R @@ -0,0 +1,9 @@ +snapshot <- +function (...) { + actParExprs <- as.list(match.call()[-1]) + valueList <- actParsToList(actParExprs, parent.frame()) + try({ + snapshot.id(refcmpEnv$snapshot_id, valueList) + }) + refcmpEnv$snapshot_id <- refcmpEnv$snapshot_id + 1 +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.check.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.check.R new file mode 100644 index 0000000000..493b6089d4 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.check.R @@ -0,0 +1,28 @@ +snapshot.check <- +function (id, valueList) { + fcon <- file(file.path(refcmpEnv$snapshot_dir, paste0("snapshot", + id, ".obj"))) + restoredVars <- readRDS(file = fcon) + close(fcon) + if (length(restoredVars) < length(valueList)) { + stop(paste("recorded snapshot has", length(restoredVars), + "recorded variables but expected", length(valueList))) + } + var_names <- names(valueList) + restored_names <- names(restoredVars) + for (i in seq_along(var_names)) { + if (var_names[[i]] %in% restored_names) { + actualVal <- valueList[[var_names[[i]]]] + expectedVal <- restoredVars[[var_names[[i]]]] + if (!refcmpEnv$equals(expectedVal, actualVal)) { + stop(paste0("Value of variable '", var_names[[ + i]], "' differs. Expected ", expectedVal, " but was ", + actualVal)) + } + } + else { + stop(paste0("Missing variable '", var_names[[i]], + "' in recorded variables")) + } + } +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.id.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.id.R new file mode 100644 index 0000000000..02db534a33 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.id.R @@ -0,0 +1,9 @@ +snapshot.id <- +function (id, valueList, env = parent.frame()) { + if (refcmpEnv$isReferenceRun()) { + snapshot.record(id, valueList) + } + else { + snapshot.check(id, valueList) + } +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.init.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.init.R new file mode 100644 index 0000000000..75ecb48979 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.init.R @@ -0,0 +1,13 @@ +snapshot.init <- +function (dir, referenceRunPredicate, equalityFunction) { + if (!missing(dir)) { + refcmpEnv$snaphost_dir <- dir + } + if (!missing(referenceRunPredicate)) { + refcmpEnv$isReferenceRun <- referenceRunPredicate + } + if (!missing(equalityFunction)) { + refcmpEnv$equals <- equalityFunction + } + refcmpEnv$snapshot_id <- 0 +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.isFastR.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.isFastR.R new file mode 100644 index 0000000000..dcdb7eb18a --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.isFastR.R @@ -0,0 +1,4 @@ +snapshot.isFastR <- +function () { + length(grep("FastR", R.Version()$version.string)) != 0 +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.named.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.named.R new file mode 100644 index 0000000000..4706fed2b9 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.named.R @@ -0,0 +1,9 @@ +snapshot.named <- +function (...) { + args <- list(...) + valueList <- args[names(args) != ""] + try({ + snapshot.id(refcmpEnv$snapshot_id, valueList) + refcmpEnv$snapshot_id <- refcmpEnv$snapshot_id + 1 + }) +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.record.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.record.R new file mode 100644 index 0000000000..c108c9d827 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.record.R @@ -0,0 +1,11 @@ +snapshot.record <- +function (id, valueList) { + dumpDir <- file.path(refcmpEnv$snapshot_dir) + if (!dir.exists(dumpDir)) { + dir.create(dumpDir) + } + fcon <- file(file.path(refcmpEnv$snapshot_dir, paste0("snapshot", + id, ".obj"))) + saveRDS(valueList, file = fcon) + close(fcon) +} diff --git a/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.show.R b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.show.R new file mode 100644 index 0000000000..82805dc2d2 --- /dev/null +++ b/com.oracle.truffle.r.pkgs/refcmp/R/snapshot.show.R @@ -0,0 +1,12 @@ +snapshot.show <- +function (id = refcmpEnv$snapshot_id) { + snapshot_filename <- file.path(refcmpEnv$snapshot_dir, paste0( + "snapshot", id, ".obj")) + if (!file.exists(snapshot_filename)) { + stop(paste0("Snapshot with ID=", id, " does not exist")) + } + fcon <- file(snapshot_filename) + restoredVars <- readRDS(file = fcon) + close(fcon) + return(restoredVars) +} -- GitLab