performance enhancements to Startup...
diff --git a/packages/xdc/runtime/Startup.c b/packages/xdc/runtime/Startup.c
index 2f7207a..db9b917 100644
--- a/packages/xdc/runtime/Startup.c
+++ b/packages/xdc/runtime/Startup.c
@@ -30,14 +30,14 @@
 
     module->execFlag = TRUE;
 
-    for (i = 0; i < Startup_firstFxns.length; i++) {
-        Startup_firstFxns.elem[i]();
+    for (i = 0; i < Startup_firstFxnsLen; i++) {
+        Startup_firstFxns[i]();
     }
 
     (Startup_execImpl)();
 
-    for (i = 0; i < Startup_lastFxns.length; i++) {
-        Startup_lastFxns.elem[i]();
+    for (i = 0; i < Startup_lastFxnsLen; i++) {
+        Startup_lastFxns[i]();
     }
 }
 
diff --git a/packages/xdc/runtime/Startup.xdc b/packages/xdc/runtime/Startup.xdc
index ed89203..e0eb72b 100644
--- a/packages/xdc/runtime/Startup.xdc
+++ b/packages/xdc/runtime/Startup.xdc
@@ -131,14 +131,14 @@
      *  List of functions called before module startup
      *
      */
-    config InitFxn firstFxns[length] = [];
+    config InitFxn firstFxns[] = [];
 
     /*!
      *  ======== lastFxns ========
      *  List of functions called after module startup
      *
      */
-    config InitFxn lastFxns[length] = [];
+    config InitFxn lastFxns[] = [];
 
     /*!
      *  ======== resetFxn ========
@@ -217,6 +217,9 @@
      */
     config Bool sfxnRts[];
 
+    config Int firstFxnsLen;
+    config Int lastFxnsLen;
+
     struct Module_State {
         Int *stateTab;      /* initially null */
         Bool execFlag;	    /* if true, startup code processing started */
diff --git a/packages/xdc/runtime/Startup.xs b/packages/xdc/runtime/Startup.xs
index d6da56d..04aea36 100644
--- a/packages/xdc/runtime/Startup.xs
+++ b/packages/xdc/runtime/Startup.xs
@@ -24,6 +24,9 @@
  */
 function module$static$init(obj, params)
 {
+    this.firstFxnsLen = this.firstFxns.length;
+    this.lastFxnsLen = this.lastFxns.length;
+
     obj.stateTab = null;
     obj.execFlag = false;
     obj.rtsDoneFlag = false;