@@ -483,7 +483,10 @@ type public TcGlobals =
483483 range_op_vref: ValRef ;
484484 range_int32_op_vref: ValRef ;
485485//range_step_op_vref : ValRef;
486- array_get_vref_map: ValRef [];
486+ array_get_vref: ValRef ;
487+ array2D_get_vref: ValRef ;
488+ array3D_get_vref: ValRef ;
489+ array4D_get_vref: ValRef ;
487490 seq_collect_vref: ValRef ;
488491 seq_collect_info: IntrinsicValRef ;
489492 seq_using_info: IntrinsicValRef ;
@@ -511,8 +514,11 @@ type public TcGlobals =
511514 lazy_force_info: IntrinsicValRef ;
512515 lazy_create_info: IntrinsicValRef ;
513516
517+ array_get_info: IntrinsicValRef ;
514518 array_length_info: IntrinsicValRef ;
515- array_get_info_map: IntrinsicValRef [];
519+ array2D_get_info: IntrinsicValRef ;
520+ array3D_get_info: IntrinsicValRef ;
521+ array4D_get_info: IntrinsicValRef ;
516522 unpickle_quoted_info: IntrinsicValRef ;
517523 cast_quotation_info: IntrinsicValRef ;
518524 lift_value_info: IntrinsicValRef ;
@@ -907,18 +913,9 @@ let mkTcGlobals (compilingFslib,sysCcu,ilg,fslibCcu,directoryToResolveRelativePa
907913let enum_info = makeIntrinsicValRef( fslib_ MFOperators_ nleref, " enum" , None, Some" ToEnum" ,[ vara], ([[ int_ ty]], varaTy))
908914let range_op_info = makeIntrinsicValRef( fslib_ MFOperators_ nleref, " op_Range" , None, None,[ vara], ([[ varaTy];[ varaTy]], mkSeqTy varaTy))
909915let range_int32_op_info = makeIntrinsicValRef( fslib_ MFOperatorIntrinsics_ nleref, " RangeInt32" , None, None,[], ([[ int_ ty];[ int_ ty];[ int_ ty]], mkSeqTy int_ ty))
910-
911- let array_get_info_map =
912- Array.init32 ( fun idx ->
913- let rank = idx+ 1
914- let intrinsicMethodName =
915- if rank= 1 then " GetArray"
916- else sprintf" GetArray%i D" rank
917- let argTypes =
918- [ mkArrayType rank varaTy] :: ( List.replicate rank[ int_ ty])
919- makeIntrinsicValRef( fslib_ MFIntrinsicFunctions_ nleref, intrinsicMethodName, None, None,[ vara], ( argTypes, varaTy)))
920-
921- let array_length_info = makeIntrinsicValRef( fslib_ MFArrayModule_ nleref, " length" , None, Some" Length" ,[ vara], ([[ mkArrayType1 varaTy]], varaTy))
916+ let array2D_get_info = makeIntrinsicValRef( fslib_ MFIntrinsicFunctions_ nleref, " GetArray2D" , None, None,[ vara], ([[ mkArrayType2 varaTy];[ int_ ty]; [ int_ ty]], varaTy))
917+ let array3D_get_info = makeIntrinsicValRef( fslib_ MFIntrinsicFunctions_ nleref, " GetArray3D" , None, None,[ vara], ([[ mkArrayType3 varaTy];[ int_ ty]; [ int_ ty]; [ int_ ty]], varaTy))
918+ let array4D_get_info = makeIntrinsicValRef( fslib_ MFIntrinsicFunctions_ nleref, " GetArray4D" , None, None,[ vara], ([[ mkArrayType4 varaTy];[ int_ ty]; [ int_ ty]; [ int_ ty]; [ int_ ty]], varaTy))
922919
923920let seq_collect_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " collect" , None, Some" Collect" ,[ vara; varb; varc],([[ varaTy- -> varbTy]; [ mkSeqTy varaTy]], mkSeqTy varcTy))
924921let seq_delay_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " delay" , None, Some" Delay" ,[ varb], ([[ unit_ ty- -> mkSeqTy varbTy]], mkSeqTy varbTy))
@@ -928,7 +925,7 @@ let mkTcGlobals (compilingFslib,sysCcu,ilg,fslibCcu,directoryToResolveRelativePa
928925let seq_finally_info = makeIntrinsicValRef( fslib_ MFRuntimeHelpers_ nleref, " EnumerateThenFinally" , None, None,[ varb], ([[ mkSeqTy varbTy]; [ unit_ ty- -> unit_ ty]], mkSeqTy varbTy))
929926let seq_of_functions_info = makeIntrinsicValRef( fslib_ MFRuntimeHelpers_ nleref, " EnumerateFromFunctions" , None, None,[ vara; varb],([[ unit_ ty- -> varaTy]; [ varaTy- -> bool_ ty]; [ varaTy- -> varbTy]], mkSeqTy varbTy))
930927let create_event_info = makeIntrinsicValRef( fslib_ MFRuntimeHelpers_ nleref, " CreateEvent" , None, None,[ vara; varb],([[ varaTy- -> unit_ ty]; [ varaTy- -> unit_ ty]; [( obj_ ty- -> ( varbTy- -> unit_ ty)) - -> varaTy]], TType_ app( fslib_ IEvent2_ tcr, [ varaTy; varbTy])))
931- let seq_to_array_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " toArray" , None, Some" ToArray" ,[ varb], ([[ mkSeqTy varbTy]], mkArrayType1 varbTy))
928+ let seq_to_array_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " toArray" , None, Some" ToArray" ,[ varb], ([[ mkSeqTy varbTy]], mkArrayType1 varbTy))
932929let seq_to_list_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " toList" , None, Some" ToList" ,[ varb], ([[ mkSeqTy varbTy]], mkListTy varbTy))
933930let seq_map_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " map" , None, Some" Map" ,[ vara; varb],([[ varaTy- -> varbTy]; [ mkSeqTy varaTy]], mkSeqTy varbTy))
934931let seq_singleton_info = makeIntrinsicValRef( fslib_ MFSeqModule_ nleref, " singleton" , None, Some" Singleton" ,[ vara], ([[ varaTy]], mkSeqTy varaTy))
@@ -943,6 +940,8 @@ let mkTcGlobals (compilingFslib,sysCcu,ilg,fslibCcu,directoryToResolveRelativePa
943940let splice_expr_info = makeIntrinsicValRef( fslib_ MFExtraTopLevelOperators_ nleref, " op_Splice" , None, None,[ vara], ([[ mkQuotedExprTy varaTy]], varaTy))
944941let splice_raw_expr_info = makeIntrinsicValRef( fslib_ MFExtraTopLevelOperators_ nleref, " op_SpliceUntyped" , None, None,[ vara], ([[ mkRawQuotedExprTy]], varaTy))
945942let new_decimal_info = makeIntrinsicValRef( fslib_ MFIntrinsicFunctions_ nleref, " MakeDecimal" , None, None,[], ([[ int_ ty]; [ int_ ty]; [ int_ ty]; [ bool_ ty]; [ byte_ ty]], decimal_ ty))
943+ let array_get_info = makeIntrinsicValRef( fslib_ MFIntrinsicFunctions_ nleref, " GetArray" , None, None,[ vara], ([[ mkArrayType1 varaTy]; [ int_ ty]], varaTy))
944+ let array_length_info = makeIntrinsicValRef( fslib_ MFArrayModule_ nleref, " length" , None, Some" Length" ,[ vara], ([[ mkArrayType1 varaTy]], varaTy))
946945let unpickle_quoted_info = makeIntrinsicValRef( fslib_ MFQuotations_ nleref, " Deserialize" , Some" Expr" , None,[], ([[ system_ Type_ typ; mkListTy system_ Type_ typ; mkListTy mkRawQuotedExprTy; mkArrayType1 byte_ ty]], mkRawQuotedExprTy))
947946let cast_quotation_info = makeIntrinsicValRef( fslib_ MFQuotations_ nleref, " Cast" , Some" Expr" , None,[ vara], ([[ mkRawQuotedExprTy]], mkQuotedExprTy varaTy))
948947let lift_value_info = makeIntrinsicValRef( fslib_ MFQuotations_ nleref, " Value" , Some" Expr" , None,[ vara], ([[ varaTy]], mkRawQuotedExprTy))
@@ -1354,7 +1353,10 @@ let mkTcGlobals (compilingFslib,sysCcu,ilg,fslibCcu,directoryToResolveRelativePa
13541353 range_ int32_ op_ vref= ValRefForIntrinsic range_ int32_ op_ info;
13551354//range_step_op_vref = ValRefForIntrinsic range_step_op_info;
13561355 array_ length_ info= array_ length_ info
1357- array_ get_ vref_ map= array_ get_ info_ map|> Array.map ValRefForIntrinsic;
1356+ array_ get_ vref= ValRefForIntrinsic array_ get_ info;
1357+ array2D_ get_ vref= ValRefForIntrinsic array2D_ get_ info;
1358+ array3D_ get_ vref= ValRefForIntrinsic array3D_ get_ info;
1359+ array4D_ get_ vref= ValRefForIntrinsic array4D_ get_ info;
13581360 seq_ singleton_ vref= ValRefForIntrinsic seq_ singleton_ info;
13591361 seq_ collect_ vref= ValRefForIntrinsic seq_ collect_ info;
13601362 seq_ collect_ info= seq_ collect_ info;
@@ -1396,7 +1398,10 @@ let mkTcGlobals (compilingFslib,sysCcu,ilg,fslibCcu,directoryToResolveRelativePa
13961398 create_ event_ info= create_ event_ info;
13971399 seq_ to_ list_ info= seq_ to_ list_ info;
13981400 seq_ to_ array_ info= seq_ to_ array_ info;
1399- array_ get_ info_ map= array_ get_ info_ map;
1401+ array_ get_ info= array_ get_ info;
1402+ array2D_ get_ info= array2D_ get_ info;
1403+ array3D_ get_ info= array3D_ get_ info;
1404+ array4D_ get_ info= array4D_ get_ info;
14001405 unpickle_ quoted_ info= unpickle_ quoted_ info;
14011406 cast_ quotation_ info= cast_ quotation_ info;
14021407 lift_ value_ info= lift_ value_ info;