The R Project SVN R

Rev

Rev 18678 | Rev 30531 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18678 Rev 24525
Line 77... Line 77...
77
    case SYMSXP:
77
    case SYMSXP:
78
    case ENVSXP:
78
    case ENVSXP:
79
    case SPECIALSXP:
79
    case SPECIALSXP:
80
    case BUILTINSXP:
80
    case BUILTINSXP:
81
    case EXTPTRSXP:
81
    case EXTPTRSXP:
-
 
82
#ifdef BYTECODE
-
 
83
    case BCODESXP:
-
 
84
#endif
82
    case WEAKREFSXP:
85
    case WEAKREFSXP:
83
	return s;
86
	return s;
84
    case CLOSXP:
87
    case CLOSXP:
85
	PROTECT(s);
88
	PROTECT(s);
86
	PROTECT(t = allocSExp(CLOSXP));
89
	PROTECT(t = allocSExp(CLOSXP));
Line 144... Line 147...
144
	/* direct copying and bypassing the write barrier is OK since
147
	/* direct copying and bypassing the write barrier is OK since
145
	   t was just allocated and so it cannot be older than any of
148
	   t was just allocated and so it cannot be older than any of
146
	   the elements in s.  LT */
149
	   the elements in s.  LT */
147
	DUPLICATE_ATOMIC_VECTOR(SEXP, STRING_PTR, t, s);
150
	DUPLICATE_ATOMIC_VECTOR(SEXP, STRING_PTR, t, s);
148
	break;
151
	break;
149
    case PROMSXP: /* duplication requires that we evaluate the promise */
-
 
150
#ifdef OLD
-
 
151
	if (PRVALUE(s) == R_UnboundValue) {
-
 
152
	    t = eval(PREXPR(s), PRENV(s));
-
 
153
	    PRVALUE(s) = t;
152
    case PROMSXP:
154
	}
-
 
155
	t = duplicate(PRVALUE(s));
-
 
156
#endif
-
 
157
	return s;
153
	return s;
158
	break;
154
	break;
159
    default:
155
    default:
160
	UNIMPLEMENTED("duplicate");
156
	UNIMPLEMENTED("duplicate");
161
	t = s;/* for -Wall */
157
	t = s;/* for -Wall */