Skip to content

Commit

Permalink
Broken version -- plea for help!
Browse files Browse the repository at this point in the history
  • Loading branch information
Arch D. Robison committed Feb 26, 2016
1 parent ef8c1fd commit 82c5b22
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 7 deletions.
5 changes: 5 additions & 0 deletions base/boot.jl
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@
#abstract Ref{T}
#bitstype {32|64} Ptr{T} <: Ref{T}

#immutable Banana{T}
# value::T
#end

# types for the front end

#type Expr
Expand Down Expand Up @@ -124,6 +128,7 @@ export
Any, DataType, Vararg, ANY, NTuple,
Tuple, Type, TypeConstructor, TypeName, TypeVar, Union, Void,
SimpleVector, AbstractArray, DenseArray,
Banana,
# special objects
Box, Function, Builtin, IntrinsicFunction, LambdaInfo, Method, MethodTable,
Module, Symbol, Task, Array, WeakRef,
Expand Down
1 change: 1 addition & 0 deletions src/builtins.c
Original file line number Diff line number Diff line change
Expand Up @@ -1146,6 +1146,7 @@ void jl_init_primitives(void)
add_builtin("TypeConstructor", (jl_value_t*)jl_typector_type);
add_builtin("Tuple", (jl_value_t*)jl_anytuple_type);
add_builtin("NTuple", (jl_value_t*)jl_ntuple_type);
add_builtin("Banana", (jl_value_t*)jl_banana_type);
add_builtin("Vararg", (jl_value_t*)jl_vararg_type);
add_builtin("Type", (jl_value_t*)jl_type_type);
add_builtin("DataType", (jl_value_t*)jl_datatype_type);
Expand Down
17 changes: 10 additions & 7 deletions src/cgutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,16 @@ static Value *julia_binding_gv(jl_binding_t *b)
return julia_binding_gv(bv);
}

static int is_banana_type(jl_value_t* t)
{
assert(jl_is_datatype(t));
printf("t = %s\n", jl_symbol_name_(((jl_datatype_t*)(t))->name->name));
printf("jl_banana_type = %s\n", jl_symbol_name_(((jl_datatype_t*)(jl_banana_type))->name->name));
bool result = ((jl_datatype_t*)(t))->name == ((jl_datatype_t*)(jl_banana_type))->name;
printf("result = %d\n", result);
return result;
}

// --- mapping between julia and llvm types ---

static Type *julia_struct_to_llvm(jl_value_t *jt, bool *isboxed);
Expand Down Expand Up @@ -949,13 +959,6 @@ JL_DLLEXPORT Type *julia_type_to_llvm(jl_value_t *jt, bool *isboxed)
}
}

static bool is_banana_type(jl_value_t*ty) {
jl_datatype_t *jst = (jl_datatype_t*)ty;
const char *name = jl_symbol_name_(jst->name->name);
size_t ntypes = jl_datatype_nfields(jst);
return ntypes==1 && !jst->mutabl && strcmp(name,"Banana")==0;
}

static Type *julia_struct_to_llvm(jl_value_t *jt, bool *isboxed)
{
// this function converts a Julia Type into the equivalent LLVM struct
Expand Down
9 changes: 9 additions & 0 deletions src/jltypes.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ jl_typename_t *jl_tuple_typename;
jl_tupletype_t *jl_anytuple_type;
jl_datatype_t *jl_ntuple_type;
jl_typename_t *jl_ntuple_typename;
jl_datatype_t *jl_banana_type;
jl_datatype_t *jl_vararg_type;
jl_datatype_t *jl_tvar_type;
jl_datatype_t *jl_uniontype_type;
Expand Down Expand Up @@ -3528,6 +3529,14 @@ void jl_init_types(void)
(jl_datatype_t*)jl_apply_type((jl_value_t*)jl_ref_type, tv), tv,
sizeof(void*)*8);

// Banana{T}
tv = jl_svec1(tvar("T"));
jl_banana_type =
jl_new_datatype(jl_symbol("Banana"), jl_any_type, tv,
jl_svec(1, jl_symbol("value")),
tv,
0, 0, 1);

// Type{T}
jl_typetype_tvar = jl_new_typevar(jl_symbol("T"),
(jl_value_t*)jl_bottom_type,(jl_value_t*)jl_any_type);
Expand Down
1 change: 1 addition & 0 deletions src/julia.h
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,7 @@ extern JL_DLLEXPORT jl_datatype_t *jl_symbol_type;
extern JL_DLLEXPORT jl_datatype_t *jl_gensym_type;
extern JL_DLLEXPORT jl_datatype_t *jl_simplevector_type;
extern JL_DLLEXPORT jl_typename_t *jl_tuple_typename;
extern JL_DLLEXPORT jl_datatype_t *jl_banana_type;
extern JL_DLLEXPORT jl_datatype_t *jl_anytuple_type;
#define jl_tuple_type jl_anytuple_type
extern JL_DLLEXPORT jl_datatype_t *jl_ntuple_type;
Expand Down

0 comments on commit 82c5b22

Please sign in to comment.