@@ -153,7 +153,7 @@ static jl_value_t *jl_new_bits_internal(jl_value_t *dt, void *data, size_t *len)
153
153
return v ;
154
154
}
155
155
156
- jl_value_t * jl_new_bits (jl_value_t * bt , void * data )
156
+ DLLEXPORT jl_value_t * jl_new_bits (jl_value_t * bt , void * data )
157
157
{
158
158
size_t len = 0 ;
159
159
return jl_new_bits_internal (bt , data , & len );
@@ -173,7 +173,7 @@ void jl_assign_bits(void *dest, jl_value_t *bits)
173
173
}
174
174
}
175
175
176
- int jl_field_index (jl_datatype_t * t , jl_sym_t * fld , int err )
176
+ DLLEXPORT int jl_field_index (jl_datatype_t * t , jl_sym_t * fld , int err )
177
177
{
178
178
jl_svec_t * fn = t -> name -> names ;
179
179
for (size_t i = 0 ; i < jl_svec_len (fn ); i ++ ) {
@@ -187,7 +187,7 @@ int jl_field_index(jl_datatype_t *t, jl_sym_t *fld, int err)
187
187
return -1 ;
188
188
}
189
189
190
- jl_value_t * jl_get_nth_field (jl_value_t * v , size_t i )
190
+ DLLEXPORT jl_value_t * jl_get_nth_field (jl_value_t * v , size_t i )
191
191
{
192
192
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
193
193
assert (i < jl_datatype_nfields (st ));
@@ -198,7 +198,7 @@ jl_value_t *jl_get_nth_field(jl_value_t *v, size_t i)
198
198
return jl_new_bits (jl_field_type (st ,i ), (char * )v + offs );
199
199
}
200
200
201
- jl_value_t * jl_get_nth_field_checked (jl_value_t * v , size_t i )
201
+ DLLEXPORT jl_value_t * jl_get_nth_field_checked (jl_value_t * v , size_t i )
202
202
{
203
203
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
204
204
if (i >= jl_datatype_nfields (st ))
@@ -213,7 +213,7 @@ jl_value_t *jl_get_nth_field_checked(jl_value_t *v, size_t i)
213
213
return jl_new_bits (jl_field_type (st ,i ), (char * )v + offs );
214
214
}
215
215
216
- void jl_set_nth_field (jl_value_t * v , size_t i , jl_value_t * rhs )
216
+ DLLEXPORT void jl_set_nth_field (jl_value_t * v , size_t i , jl_value_t * rhs )
217
217
{
218
218
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
219
219
size_t offs = jl_field_offset (st ,i );
@@ -226,7 +226,7 @@ void jl_set_nth_field(jl_value_t *v, size_t i, jl_value_t *rhs)
226
226
}
227
227
}
228
228
229
- int jl_field_isdefined (jl_value_t * v , size_t i )
229
+ DLLEXPORT int jl_field_isdefined (jl_value_t * v , size_t i )
230
230
{
231
231
jl_datatype_t * st = (jl_datatype_t * )jl_typeof (v );
232
232
size_t offs = jl_field_offset (st ,i );
@@ -441,12 +441,12 @@ static jl_sym_t *_jl_symbol(const char *str, size_t len)
441
441
return * pnode ;
442
442
}
443
443
444
- jl_sym_t * jl_symbol (const char * str )
444
+ DLLEXPORT jl_sym_t * jl_symbol (const char * str )
445
445
{
446
446
return _jl_symbol (str , strlen (str ));
447
447
}
448
448
449
- jl_sym_t * jl_symbol_lookup (const char * str )
449
+ DLLEXPORT jl_sym_t * jl_symbol_lookup (const char * str )
450
450
{
451
451
return * symtab_lookup (& symtab , str , strlen (str ), NULL );
452
452
}
@@ -496,7 +496,7 @@ DLLEXPORT jl_sym_t *jl_tagged_gensym(const char *str, int32_t len)
496
496
497
497
// allocating types -----------------------------------------------------------
498
498
499
- jl_typename_t * jl_new_typename (jl_sym_t * name )
499
+ DLLEXPORT jl_typename_t * jl_new_typename (jl_sym_t * name )
500
500
{
501
501
jl_typename_t * tn = (jl_typename_t * )newobj ((jl_value_t * )jl_typename_type , NWORDS (sizeof (jl_typename_t )));
502
502
tn -> name = name ;
@@ -517,8 +517,8 @@ jl_datatype_t *jl_new_abstracttype(jl_value_t *name, jl_datatype_t *super,
517
517
return dt ;
518
518
}
519
519
520
- jl_datatype_t * jl_new_uninitialized_datatype (size_t nfields ,
521
- int8_t fielddesc_type )
520
+ DLLEXPORT jl_datatype_t * jl_new_uninitialized_datatype (size_t nfields ,
521
+ int8_t fielddesc_type )
522
522
{
523
523
// fielddesc_type is specified manually for builtin types
524
524
// and is (will be) calculated automatically for user defined types.
@@ -589,10 +589,11 @@ void jl_compute_field_offsets(jl_datatype_t *st)
589
589
590
590
extern int jl_boot_file_loaded ;
591
591
592
- jl_datatype_t * jl_new_datatype (jl_sym_t * name , jl_datatype_t * super ,
593
- jl_svec_t * parameters ,
594
- jl_svec_t * fnames , jl_svec_t * ftypes ,
595
- int abstract , int mutabl , int ninitialized )
592
+ DLLEXPORT jl_datatype_t * jl_new_datatype (jl_sym_t * name , jl_datatype_t * super ,
593
+ jl_svec_t * parameters ,
594
+ jl_svec_t * fnames , jl_svec_t * ftypes ,
595
+ int abstract , int mutabl ,
596
+ int ninitialized )
596
597
{
597
598
jl_datatype_t * t = NULL ;
598
599
jl_typename_t * tn = NULL ;
@@ -659,8 +660,8 @@ jl_datatype_t *jl_new_datatype(jl_sym_t *name, jl_datatype_t *super,
659
660
return t ;
660
661
}
661
662
662
- jl_datatype_t * jl_new_bitstype (jl_value_t * name , jl_datatype_t * super ,
663
- jl_svec_t * parameters , size_t nbits )
663
+ DLLEXPORT jl_datatype_t * jl_new_bitstype (jl_value_t * name , jl_datatype_t * super ,
664
+ jl_svec_t * parameters , size_t nbits )
664
665
{
665
666
jl_datatype_t * bt = jl_new_datatype ((jl_sym_t * )name , super , parameters ,
666
667
jl_emptysvec , jl_emptysvec , 0 , 0 , 0 );
@@ -684,16 +685,16 @@ jl_typector_t *jl_new_type_ctor(jl_svec_t *params, jl_value_t *body)
684
685
685
686
// bits constructors ----------------------------------------------------------
686
687
687
- #define BOXN_FUNC (nb ,nw ) \
688
- jl_value_t *jl_box##nb(jl_datatype_t *t, int##nb##_t x) \
689
- { \
690
- assert(jl_isbits(t)); \
691
- assert(jl_datatype_size(t) == sizeof(x)); \
692
- jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
693
- jl_set_typeof(v, t); \
694
- *(int##nb##_t*)jl_data_ptr(v) = x; \
695
- return v; \
696
- }
688
+ #define BOXN_FUNC (nb ,nw ) \
689
+ DLLEXPORT jl_value_t *jl_box##nb(jl_datatype_t *t, int##nb##_t x) \
690
+ { \
691
+ assert(jl_isbits(t)); \
692
+ assert(jl_datatype_size(t) == sizeof(x)); \
693
+ jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
694
+ jl_set_typeof(v, t); \
695
+ *(int##nb##_t*)jl_data_ptr(v) = x; \
696
+ return v; \
697
+ }
697
698
BOXN_FUNC (8 , 1 )
698
699
BOXN_FUNC (16 , 1 )
699
700
BOXN_FUNC (32 , 1 )
@@ -704,12 +705,12 @@ BOXN_FUNC(64, 2)
704
705
#endif
705
706
706
707
#define UNBOX_FUNC (j_type ,c_type ) \
707
- c_type jl_unbox_##j_type(jl_value_t *v) \
708
- { \
709
- assert(jl_is_bitstype(jl_typeof(v))); \
710
- assert(jl_datatype_size(jl_typeof(v)) == sizeof(c_type)); \
711
- return *(c_type*)jl_data_ptr(v); \
712
- }
708
+ DLLEXPORT c_type jl_unbox_##j_type(jl_value_t *v) \
709
+ { \
710
+ assert(jl_is_bitstype(jl_typeof(v))); \
711
+ assert(jl_datatype_size(jl_typeof(v)) == sizeof(c_type)); \
712
+ return *(c_type*)jl_data_ptr(v); \
713
+ }
713
714
UNBOX_FUNC (int8 , int8_t )
714
715
UNBOX_FUNC (uint8 , uint8_t )
715
716
UNBOX_FUNC (int16 , int16_t )
@@ -724,14 +725,14 @@ UNBOX_FUNC(float64, double)
724
725
UNBOX_FUNC (voidpointer , void * )
725
726
UNBOX_FUNC (gensym , ssize_t )
726
727
727
- #define BOX_FUNC (typ ,c_type ,pfx ,nw ) \
728
- jl_value_t * pfx ##_ ##typ (c_type x) \
729
- { \
730
- jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
731
- jl_set_typeof(v, jl_##typ##_type); \
732
- *(c_type*)jl_data_ptr(v) = x; \
733
- return v; \
734
- }
728
+ #define BOX_FUNC (typ ,c_type ,pfx ,nw ) \
729
+ DLLEXPORT jl_value_t * pfx ##_ ##typ (c_type x) \
730
+ { \
731
+ jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
732
+ jl_set_typeof(v, jl_##typ##_type); \
733
+ *(c_type*)jl_data_ptr(v) = x; \
734
+ return v; \
735
+ }
735
736
BOX_FUNC (float32 , float , jl_box , 1 )
736
737
BOX_FUNC (voidpointer , void * , jl_box , 1 )
737
738
#ifdef _P64
@@ -742,29 +743,29 @@ BOX_FUNC(float64, double, jl_box, 2)
742
743
743
744
#define NBOX_C 1024
744
745
745
- #define SIBOX_FUNC (typ ,c_type ,nw ) \
746
- static jl_value_t *boxed_##typ##_cache[NBOX_C]; \
747
- jl_value_t *jl_box_##typ(c_type x) \
748
- { \
749
- c_type idx = x+NBOX_C/2; \
750
- if ((u##c_type)idx < (u##c_type)NBOX_C) \
751
- return boxed_##typ##_cache[idx]; \
752
- jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
753
- jl_set_typeof(v, jl_##typ##_type); \
754
- *(c_type*)jl_data_ptr(v) = x; \
755
- return v; \
756
- }
757
- #define UIBOX_FUNC (typ ,c_type ,nw ) \
758
- static jl_value_t *boxed_##typ##_cache[NBOX_C]; \
759
- jl_value_t *jl_box_##typ(c_type x) \
760
- { \
761
- if (x < NBOX_C) \
762
- return boxed_##typ##_cache[x]; \
763
- jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
764
- jl_set_typeof(v, jl_##typ##_type); \
765
- *(c_type*)jl_data_ptr(v) = x; \
766
- return v; \
767
- }
746
+ #define SIBOX_FUNC (typ ,c_type ,nw ) \
747
+ static jl_value_t *boxed_##typ##_cache[NBOX_C]; \
748
+ DLLEXPORT jl_value_t *jl_box_##typ(c_type x) \
749
+ { \
750
+ c_type idx = x+NBOX_C/2; \
751
+ if ((u##c_type)idx < (u##c_type)NBOX_C) \
752
+ return boxed_##typ##_cache[idx]; \
753
+ jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
754
+ jl_set_typeof(v, jl_##typ##_type); \
755
+ *(c_type*)jl_data_ptr(v) = x; \
756
+ return v; \
757
+ }
758
+ #define UIBOX_FUNC (typ ,c_type ,nw ) \
759
+ static jl_value_t *boxed_##typ##_cache[NBOX_C]; \
760
+ DLLEXPORT jl_value_t *jl_box_##typ(c_type x) \
761
+ { \
762
+ if (x < NBOX_C) \
763
+ return boxed_##typ##_cache[x]; \
764
+ jl_value_t *v = (jl_value_t*)jl_gc_alloc_##nw##w(); \
765
+ jl_set_typeof(v, jl_##typ##_type); \
766
+ *(c_type*)jl_data_ptr(v) = x; \
767
+ return v; \
768
+ }
768
769
SIBOX_FUNC (int16 , int16_t , 1 )
769
770
SIBOX_FUNC (int32 , int32_t , 1 )
770
771
UIBOX_FUNC (uint16 , uint16_t , 1 )
0 commit comments