Rev 41975 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
## this should be keep in step with lazyLoad in R/lazyload.R.Internal(eval(quote({..lazyLoad <- function(filebase, envir = parent.frame()){#### bootstrapping definitions so we can load base##glue <- function (..., sep = " ", collapse = NULL).Internal(paste(list(...), sep, collapse))readRDS <- function (file) {halt <- function (message) .Internal(stop(TRUE, message))gzfile <- function (description, open).Internal(gzfile(description, open, "", 6))close <- function (con) .Internal(close(con, "rw"))if (! is.character(file)) halt("bad file name")con <- gzfile(file, "rb")on.exit(close(con)).Internal(unserializeFromConn(con, baseenv()))}`parent.env<-` <-function (env, value) .Internal(`parent.env<-`(env, value))existsInFrame <- function (x, env) .Internal(exists(x, env, "any", FALSE))getFromFrame <- function (x, env) .Internal(get(x, env, "any", FALSE))set <- function (x, value, env) .Internal(assign(x, value, env, FALSE))environment <- function () .Internal(environment(NULL))mkenv <- function() .Internal(new.env(TRUE, baseenv(), 29L))#### main body##mapfile <- glue(filebase, "rdx", sep = ".")datafile <- glue(filebase, "rdb", sep = ".")env <- mkenv()map <- readRDS(mapfile)vars <- names(map$variables)rvars <- names(map$references)compressed <- map$compressedfor (i in seq_along(rvars))set(rvars[i], map$references[[i]], env)envenv <- mkenv()envhook <- function(n) {if (existsInFrame(n, envenv))getFromFrame(n, envenv)else {e <- mkenv()set(n, e, envenv) # MUST do this immediatelykey <- getFromFrame(n, env)data <- lazyLoadDBfetch(key, datafile, compressed, envhook)parent.env(e) <- data$enclosvars <- names(data$bindings)for (i in seq_along(vars))set(vars[i], data$bindings[[i]], e)e}}expr <- quote(lazyLoadDBfetch(key, datafile, compressed, envhook))this <- environment().Internal(makeLazy(vars, map$variables, expr, this, envir))## reduce memory usemap <- NULLvars <- NULLrvars <- NULLmapfile <- NULLreadRDS <- NULL}existsInBase <- function (x).Internal(exists(x, .BaseNamespaceEnv, "any", TRUE))glue <- function (..., sep = " ", collapse = NULL).Internal(paste(list(...), sep, collapse))basedb <- glue(.Internal(R.home()), "library", "base", "R","base", sep= .Platform$file.sep)..lazyLoad(basedb, baseenv())}), .Internal(new.env(FALSE, baseenv(), 29L)), baseenv()))## keep in sync with R/zzz.Ras.numeric <- as.real <- as.doubleis.name <- is.symbol