arnaucube
arnaucube/circomPublic Self-hosted repository
BigArray in CBuild
Jordi Baylina jordi@baylina.cat
Wed, 29 Jul 2020 19:40:24 +0200
commit

0e1a1bcc2305b69f83263364450a93b0a514820c

parent

989987bfc258c937b35d99905ab5ea57d713ebf0

3 files changed, 15 insertions(+), 8 deletions(-)

jump to
M ports/c/builder.js → ports/c/builder.js

@@ -3,6 +3,7 @@ const utils = require("../../src/utils");

const assert = require("assert"); const Scalar = require("ffjavascript").Scalar; const F1Field = require("ffjavascript").F1Field; +const BigArray = require("../../src/bigarray"); function ref2src(c) { if ((c[0] == "R")||(c[0] == "RI")) {

@@ -341,16 +342,17 @@

} class BuilderC { - constructor(p) { + constructor(p, verbose) { this.F = new F1Field(p); this.hashMaps={}; - this.componentEntriesTables={}; + this.componentEntriesTables=new BigArray(); this.sizes ={}; this.constants = []; this.functions = []; - this.components = []; + this.components = new BigArray(); this.usedConstants = {}; + this.verbose = verbose; } setHeader(header) {

@@ -363,7 +365,10 @@ this.hashMaps[name] = hm;

} addComponentEntriesTable(name, cet) { - this.componentEntriesTables[name] = cet; + this.componentEntriesTables.push({ + name: name, + cet: cet + }); } addSizes(name, accSizes) {

@@ -444,8 +449,10 @@ }

_buildComponentEntriesTables(code) { code.push("// Component Entry tables"); - for (let cetName in this.componentEntriesTables) { - const cet = this.componentEntriesTables[cetName]; + for (let i=0; i< this.componentEntriesTables.length; i++) { + if ((this.verbose)&&(i%100000 ==0)) console.log(`_buildComponentEntriesTables ${i}/${this.componentEntriesTables.length}`); + const cetName = this.componentEntriesTables[i].name; + const cet = this.componentEntriesTables[i].cet; code.push(`Circom_ComponentEntry ${cetName}[${cet.length}] = {`); for (let j=0; j<cet.length; j++) {
M src/build.js → src/build.js

@@ -61,7 +61,7 @@ function buildEntryTables(ctx) {

const definedHashMaps = {}; for (let i=0; i<ctx.components.length; i++) { - if (ctx.verbose && (i%1000 ==0)) console.log(`buildEntryTables component: ${i}/${ctx.components.length}`); + if (ctx.verbose && (i%100000 ==0)) console.log(`buildEntryTables component: ${i}/${ctx.components.length}`); const {htName, htMap} = addHashTable(i); const componentEntriesTableName = ctx.getUniqueName("_entryTable" + ctx.components[i].template);
M src/compiler.js → src/compiler.js

@@ -132,7 +132,7 @@

if (options.cSourceWriteStream) { if (ctx.verbose) console.log("Generating c..."); measures.generateC = -performance.now(); - ctx.builder = new BuilderC(options.prime); + ctx.builder = new BuilderC(options.prime, ctx.verbose); build(ctx); const rdStream = ctx.builder.build(); rdStream.pipe(options.cSourceWriteStream);