SEXP duplicate(SEXP s){ SEXP t; #ifdef R_PROFILING duplicate_counter++; #endif t = duplicate1(s, TRUE); #ifdef R_MEMORY_PROFILING if (RTRACE(s) && !(TYPEOF(s) == CLOSXP || TYPEOF(s) == BUILTINSXP || TYPEOF(s) == SPECIALSXP || TYPEOF(s) == PROMSXP || TYPEOF(s) == ENVSXP)){ memtrace_report(s,t); SET_RTRACE(t,1); } #endif return t; }
static SEXP duplicate_child(SEXP s, Rboolean deep) { if (deep) return duplicate1(s, TRUE); else return lazy_duplicate(s); }