• Put it in level 0, code it and junk it up... that way - on upload - each junk is sent to Espruio and processed, and only the final result is kept. For example:

    var cs = {};
    var hex="0123456789abcdef";
    function ld(cs,p,s) { console.log(p);
      var l=s.length, v=cs[p]=new Uint8Array(l/2), i=0, j=0;
      console.log(p);
      while (j<l) {
        v[i] = (hex.indexOf(s.charAt(j))<<4)|hex.indexO­f(s.charAt(j+1));
        i++; j+=2;
      }
    }
    console.log("uploading...");
    ld(cs,"80","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"81","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"82","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"83","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"84","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"85","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"86","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"87","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"88","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"89","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"90","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"91","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"92","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    ld(cs,"93","fffffffffffffffffffffffe0000­03ffffe0000002fffe0000000bffe07fff407ffe­07fffe02ffe07ffff41ffe07ffff81ffe07ffff8­1ffe07ffff42ffe07fffe02ffe07fff407ffe000­0001fffe0000007fffe000007ffffe07ffffffff­e07ffffffffe07ffffffffe07ffffffffe07ffff­ffffe07ffffffffe07ffffffffe07ffffffffe07­ffffffffe07fffffff");
    console.log("-----> console.log(\"ld 'still' there)\"");
    console.log((typeof ld === "undefined") ? "ld gone" : "ld 'still' there");
    delete ld; // <------ purging ld() function after it has done its duty... ;-)
    console.log("-----> console.log(\"ld gone)\"");
    console.log((typeof ld === "undefined") ? "ld gone" : "ld 'still' there");
    console.log("uploaded cs ld part");
    function onInit() {
      console.log("-----> dump():");
      dump();
      console.log("-----> console.log(cs):");
      console.log(cs);
      console.log("-----> console.log(\"ld gone)\"");
      console.log((typeof ld === "undefined") ? "ld gone" : "ld 'still' there");
      console.log("-----> console.log(process.memory():");
      console.log(process.memory());
    }
    

    What is taken advantage here is the fact that Espruino goes right to work on upload: it does not just parse the code, but execute it right away when a statement is complete... this is @Gordon's only option to live with as little as memory as a lot of MCs provide.

    As you can see from the additional code - the standalone console.log()s and the ones inonInit(), especially the one withdump();- is that your source code is not around anymore... only the executed result is there. Oupload it has been executed because it is in level 0... similar as you enter commands in the console (left pane) of the Espruino Web IDE. Actually, it is not just *similar* but *the very same*. You can verify that by copy-pasting statement by statement into the console and you will get the same result. (For the functions you best copy-paste all lines of the function at once.) You can push it even further and purge/delete theld()` load function after it has done its job.

    Console output:

    >reset();
    =undefined
     _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v86 Copyright 2016 G.Williams
    >echo(0);
    uploading...
    80
    80
    81
    81
    82
    82
    83
    83
    84
    84
    85
    85
    86
    86
    87
    87
    88
    88
    89
    89
    90
    90
    91
    91
    92
    92
    93
    93
    -----> console.log("ld 'still' there)"
    ld 'still' there
    -----> console.log("ld gone)"
    ld gone
    uploaded cs ld part
    =undefined
    >
    

    Now you enter in console onInit() and you get something like that as console output, which shows that your cs (chars) object is loaded and your source and load function ld are gone...

    >onInit()
    -----> dump():
    var cs = {
      "80": new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 0, 3, 255, 255, 224, 0, 0, 2, 255, 254, 0, 0, 0, 11, 255, 224, 127, 255, 64, 127, 254, 7, 255, 254, 2, 255, 224, 127, 255, 244, 31, 254, 7, 255, 255, 129, 255, 224, 127, 255, 248, 31, 254, 7, 255, 255, 66, 255, 224, 127, 255, 224, 47, 254, 7, 255, 244, 7, 255, 224, 0, 0, 1, 255, 254, 0, 0, 0, 127, 255, 224, 0, 0, 127, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255]),
      "81": ...
      "82": ...
      "83": ...
      "84": ...
      "85": ...
      "86": ...
      "87": ...
      "88": ...
      "89": ...
      "90": ...
      "91": ...
      "92": ...
      "93": new Uint8Array([255, ..., 255])
     };
    var hex = "0123456789abcdef";
    function onInit() {
      console.log("-----> dump():");
      dump();
      console.log("-----> console.log(cs):");
      console.log(cs);
      console.log("-----> console.log(\"ld gone)\"");
      console.log((typeof ld === "undefined") ? "ld gone" : "ld 'still' there");
      console.log("-----> console.log(process.memory():");
      console.log(process.memory());
    }
    -----> console.log(cs):
    {
      "80": new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 0, 3, 255, 255, 224, 0, 0, 2, 255, 254, 0, 0, 0, 11, 255, 224, 127, 255, 64, 127, 254, 7, 255, 254, 2, 255, 224, 127, 255, 244, 31, 254, 7, 255, 255, 129, 255, 224, 127, 255, 248, 31, 254, 7, 255, 255, 66, 255, 224, 127, 255, 224, 47, 254, 7, 255, 244, 7, 255, 224, 0, 0, 1, 255, 254, 0, 0, 0, 127, 255, 224, 0, 0, 127, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255, 254, 7, 255, 255, 255, 255, 224, 127, 255, 255, 255]),
      "81": ...
      "82": ...
      "83": ...
      "84": ...
      "85": ...
      "86": ...
      "87": ...
      "88": ...
      "89": ...
      "90": ...
      "91": ...
      "92": ...
      "93": new Uint8Array([255, ..., 255])
    }
    -----> console.log("ld gone)"
    ld gone
    -----> console.log(process.memory():
    { "free": 4850, "usage": 250, "total": 5100, "history": 481,
      "stackEndAddress": 536959096, "flash_start": 134217728, "flash_binary_end": 375472, "flash_code_start": 134234112, "flash_length": 393216 }
    =undefined
    > 
    

    Btw, what are you using this mass data for? ...image / font? ...odd length: 143 bytes each block...

About

Avatar for allObjects @allObjects started