@@ -100,9 +100,9 @@ jl_value_t *jl_new_bits(jl_datatype_t *bt, void *data)
100
100
101
101
size_t nb = jl_datatype_size (bt );
102
102
jl_value_t * v =
103
- (jl_value_t * )allocobj ((NWORDS (LLT_ALIGN (nb ,sizeof (void * )))+ 1 )*
104
- sizeof (void * ));
105
- v -> type = (jl_value_t * )bt ;
103
+ (( jl_value_t * )allocobj ((NWORDS (LLT_ALIGN (nb ,sizeof (void * )))+ 1 )*
104
+ sizeof (void * ))) ;
105
+ jl_typeof ( v ) = (jl_value_t * )bt ;
106
106
switch (nb ) {
107
107
case 1 : * (int8_t * ) jl_data_ptr (v ) = * (int8_t * )data ; break ;
108
108
case 2 : * (int16_t * ) jl_data_ptr (v ) = * (int16_t * )data ; break ;
@@ -143,7 +143,7 @@ int jl_field_index(jl_datatype_t *t, jl_sym_t *fld, int err)
143
143
jl_value_t * jl_get_nth_field (jl_value_t * v , size_t i )
144
144
{
145
145
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
146
- size_t offs = jl_field_offset (st ,i ) + sizeof ( void * ) ;
146
+ size_t offs = jl_field_offset (st ,i );
147
147
if (st -> fields [i ].isptr ) {
148
148
return * (jl_value_t * * )((char * )v + offs );
149
149
}
@@ -156,7 +156,7 @@ int jl_field_isdefined(jl_value_t *v, jl_sym_t *fld, int err)
156
156
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
157
157
int i = jl_field_index (st , fld , err );
158
158
if (i == -1 ) return 0 ;
159
- size_t offs = jl_field_offset (st ,i ) + sizeof ( void * ) ;
159
+ size_t offs = jl_field_offset (st ,i );
160
160
if (st -> fields [i ].isptr ) {
161
161
return * (jl_value_t * * )((char * )v + offs ) != NULL ;
162
162
}
@@ -166,7 +166,7 @@ int jl_field_isdefined(jl_value_t *v, jl_sym_t *fld, int err)
166
166
jl_value_t * jl_set_nth_field (jl_value_t * v , size_t i , jl_value_t * rhs )
167
167
{
168
168
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
169
- size_t offs = jl_field_offset (st ,i ) + sizeof ( void * ) ;
169
+ size_t offs = jl_field_offset (st ,i );
170
170
if (st -> fields [i ].isptr ) {
171
171
* (jl_value_t * * )((char * )v + offs ) = rhs ;
172
172
}
@@ -201,7 +201,7 @@ DLLEXPORT jl_value_t *jl_new_structv(jl_datatype_t *type, jl_value_t **args, uin
201
201
}
202
202
for (size_t i = na ; i < nf ; i ++ ) {
203
203
if (type -> fields [i ].isptr )
204
- * (jl_value_t * * )((char * )jv + jl_field_offset (type ,i )+ sizeof ( void * ) ) = NULL ;
204
+ * (jl_value_t * * )((char * )jv + jl_field_offset (type ,i )) = NULL ;
205
205
}
206
206
if (type -> size == 0 ) type -> instance = jv ;
207
207
return jv ;
@@ -212,7 +212,7 @@ DLLEXPORT jl_value_t *jl_new_struct_uninit(jl_datatype_t *type)
212
212
if (type -> instance != NULL ) return type -> instance ;
213
213
jl_value_t * jv = newstruct (type );
214
214
if (type -> size == 0 ) type -> instance = jv ;
215
- else memset (& ((void * * )jv )[1 ], 0 , type -> size );
215
+ else memset (& ((void * * )jv )[0 ], 0 , type -> size );
216
216
return jv ;
217
217
}
218
218
@@ -241,7 +241,7 @@ jl_tuple_t *jl_tuple1(void *a)
241
241
#else
242
242
jl_tuple_t * t = (jl_tuple_t * )alloc_3w ();
243
243
#endif
244
- t -> type = (jl_value_t * )jl_tuple_type ;
244
+ jl_typeof ( t ) = (jl_value_t * )jl_tuple_type ;
245
245
jl_tuple_set_len_unsafe (t , 1 );
246
246
jl_tupleset (t , 0 , a );
247
247
return t ;
@@ -254,7 +254,7 @@ jl_tuple_t *jl_tuple2(void *a, void *b)
254
254
#else
255
255
jl_tuple_t * t = (jl_tuple_t * )alloc_4w ();
256
256
#endif
257
- t -> type = (jl_value_t * )jl_tuple_type ;
257
+ jl_typeof ( t ) = (jl_value_t * )jl_tuple_type ;
258
258
jl_tuple_set_len_unsafe (t , 2 );
259
259
jl_tupleset (t , 0 , a );
260
260
jl_tupleset (t , 1 , b );
@@ -312,7 +312,7 @@ DLLEXPORT jl_function_t *jl_new_closure(jl_fptr_t fptr, jl_value_t *env,
312
312
jl_lambda_info_t * linfo )
313
313
{
314
314
jl_function_t * f = (jl_function_t * )alloc_4w ();
315
- f -> type = (jl_value_t * )jl_function_type ;
315
+ jl_typeof ( f ) = (jl_value_t * )jl_function_type ;
316
316
f -> fptr = (fptr != NULL ? fptr : linfo -> fptr );
317
317
f -> env = env ;
318
318
f -> linfo = linfo ;
@@ -363,8 +363,8 @@ static jl_sym_t *mk_symbol(const char *str)
363
363
jl_sym_t * sym ;
364
364
size_t len = strlen (str );
365
365
366
- sym = (jl_sym_t * )malloc ((sizeof (jl_sym_t )- sizeof (void * )+ len + 1 + 7 )& -8 );
367
- sym -> type = (jl_value_t * )jl_sym_type ;
366
+ sym = (jl_sym_t * )(( char * ) malloc ((sizeof (jl_sym_t )+ sizeof (void * )+ len + 1 + 7 )& -8 ) + sizeof ( void * ) );
367
+ jl_typeof ( sym ) = (jl_value_t * )jl_sym_type ;
368
368
sym -> left = sym -> right = NULL ;
369
369
#ifdef _P64
370
370
sym -> hash = memhash (str , len )^0xAAAAAAAAAAAAAAAAL ;
@@ -378,7 +378,7 @@ static jl_sym_t *mk_symbol(const char *str)
378
378
static void unmark_symbols_ (jl_sym_t * root )
379
379
{
380
380
while (root != NULL ) {
381
- root -> type = (jl_value_t * )(((uptrint_t )root -> type )& ~1UL );
381
+ jl_typeof ( root ) = (jl_value_t * )(((uptrint_t )jl_typeof ( root ) )& ~1UL );
382
382
unmark_symbols_ (root -> left );
383
383
root = root -> right ;
384
384
}
@@ -528,7 +528,7 @@ jl_datatype_t *jl_new_uninitialized_datatype(size_t nfields)
528
528
{
529
529
return (jl_datatype_t * )
530
530
newobj ((jl_value_t * )jl_datatype_type ,
531
- NWORDS (sizeof (jl_datatype_t ) - sizeof (void * ) +
531
+ NWORDS (sizeof (jl_datatype_t ) + sizeof (void ) +
532
532
(nfields - 1 )* sizeof (jl_fielddesc_t )));
533
533
}
534
534
@@ -659,7 +659,7 @@ jl_value_t *jl_box##nb(jl_datatype_t *t, int##nb##_t x) \
659
659
assert(jl_is_bitstype(t)); \
660
660
assert(jl_datatype_size(t) == sizeof(x)); \
661
661
jl_value_t *v = alloc_##nw##w(); \
662
- v->type = (jl_value_t*)t; \
662
+ jl_typeof(v) = (jl_value_t*)t; \
663
663
*(int##nb##_t*)jl_data_ptr(v) = x; \
664
664
return v; \
665
665
}
@@ -696,7 +696,7 @@ UNBOX_FUNC(voidpointer, void*)
696
696
jl_value_t * pfx ##_ ##typ (c_type x) \
697
697
{ \
698
698
jl_value_t *v = alloc_##nw##w(); \
699
- v->type = (jl_value_t*)jl_##typ##_type; \
699
+ jl_typeof(v) = (jl_value_t*)jl_##typ##_type; \
700
700
*(c_type*)jl_data_ptr(v) = x; \
701
701
return v; \
702
702
}
@@ -718,7 +718,7 @@ jl_value_t *jl_box_##typ(c_type x) \
718
718
if ((u##c_type)idx < (u##c_type)NBOX_C) \
719
719
return boxed_##typ##_cache[idx]; \
720
720
jl_value_t *v = alloc_##nw##w(); \
721
- v->type = (jl_value_t*)jl_##typ##_type; \
721
+ jl_typeof(v) = (jl_value_t*)jl_##typ##_type; \
722
722
*(c_type*)jl_data_ptr(v) = x; \
723
723
return v; \
724
724
}
@@ -729,7 +729,7 @@ jl_value_t *jl_box_##typ(c_type x) \
729
729
if (x < NBOX_C) \
730
730
return boxed_##typ##_cache[x]; \
731
731
jl_value_t *v = alloc_##nw##w(); \
732
- v->type = (jl_value_t*)jl_##typ##_type; \
732
+ jl_typeof(v) = (jl_value_t*)jl_##typ##_type; \
733
733
*(c_type*)jl_data_ptr(v) = x; \
734
734
return v; \
735
735
}
@@ -816,7 +816,7 @@ jl_expr_t *jl_exprn(jl_sym_t *head, size_t n)
816
816
jl_array_t * ar = n == 0 ? (jl_array_t * )jl_an_empty_cell : jl_alloc_cell_1d (n );
817
817
JL_GC_PUSH (& ar );
818
818
jl_expr_t * ex = (jl_expr_t * )alloc_4w ();
819
- ex -> type = (jl_value_t * )jl_expr_type ;
819
+ jl_typeof ( ex ) = (jl_value_t * )jl_expr_type ;
820
820
ex -> head = head ;
821
821
ex -> args = ar ;
822
822
ex -> etype = (jl_value_t * )jl_any_type ;
@@ -835,7 +835,7 @@ JL_CALLABLE(jl_f_new_expr)
835
835
for (size_t i = 1 ; i < nargs ; i ++ )
836
836
jl_cellset (ar , i - 1 , args [i ]);
837
837
jl_expr_t * ex = (jl_expr_t * )alloc_4w ();
838
- ex -> type = (jl_value_t * )jl_expr_type ;
838
+ jl_typeof ( ex ) = (jl_value_t * )jl_expr_type ;
839
839
ex -> head = (jl_sym_t * )args [0 ];
840
840
ex -> args = ar ;
841
841
ex -> etype = (jl_value_t * )jl_any_type ;
@@ -847,7 +847,7 @@ JL_CALLABLE(jl_f_new_box)
847
847
{
848
848
JL_NARGS (Box , 1 , 1 );
849
849
jl_value_t * box = (jl_value_t * )alloc_2w ();
850
- box -> type = jl_box_any_type ;
850
+ jl_typeof ( box ) = jl_box_any_type ;
851
851
((jl_value_t * * )box )[1 ] = args [0 ];
852
852
return box ;
853
853
}
0 commit comments