This commit is contained in:
Sebastian Miasojed committed 2024-11-18 10:18:21 +01:00
1 parent f57ab96eed
commit cece20deb1
11 files changed
+56 -186

No files matched your search

+1 -1
View File
@@ -14,4 +14,4 @@ artifacts
tmp
package-lock.json
/*.html
/build
/js/resolc.*
+2 -2
View File
@@ -10,7 +10,7 @@ mkdir -p ${INSTALL_DIR}
# Build LLVM, clang
LLVM_SRC_PREFIX=${PWD}/llvm-project
LLVM_SRC_DIR=${LLVM_SRC_PREFIX}/llvm
LLVM_BUILD_DIR=${PWD}/build/llvm
LLVM_BUILD_DIR=${LLVM_SRC_PREFIX}/build/llvm
if [ ! -d ${LLVM_BUILD_DIR} ] ; then
mkdir -p ${LLVM_BUILD_DIR}
fi
@@ -33,7 +33,7 @@ cmake --install ${LLVM_BUILD_DIR}
# Build compiler builtins
COMPILER_RT_SRC_DIR=${LLVM_SRC_PREFIX}/compiler-rt
COMPILER_RT_BUILD_DIR=${PWD}/build/compiler-rt
COMPILER_RT_BUILD_DIR=${LLVM_SRC_PREFIX}/build/compiler-rt
if [ ! -d ${COMPILER_RT_BUILD_DIR} ] ; then
mkdir -p ${COMPILER_RT_BUILD_DIR}
fi
+15
View File
@@ -0,0 +1,15 @@
{
"name": "revive",
"version": "1.0.0",
"description": "Revive compiler",
"main": "run_revive.js",
"type": "module",
"dependencies": {
"deasync": "^0.1.15",
"solc": "^0.8.28"
},
"scripts": {
"init": "cp -r ../target/wasm32-unknown-emscripten/release/resolc.{js,wasm} .",
"test": "npm run init && node run_revive.js"
}
}
-16
View File
@@ -1,16 +0,0 @@
var Module = (() => {
var _scriptName = import.meta.url;
return (
async function(moduleArg = {}) {
var moduleRtn;
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url)}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url));readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>{if(isFileURI(url)){return new Promise((reject,resolve)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response)}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){___funcs_on_exit();callRuntimeCallbacks(__ATEXIT__);FS.quit();TTY.shutdown();runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependenciLine truncated
return moduleRtn;
}
);
})();
export default Module;
BIN
View File
Binary file not shown.
+29
View File
@@ -0,0 +1,29 @@
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
import solc from 'solc';
// Import the Emscripten module
import ModuleFactory from './resolc.js';
async function runCompiler() {
const Module = await ModuleFactory();
Module.solc = solc;
// Create input Solidity source code
const input = `
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
contract Baseline {
function baseline() public payable {}
}`;
// Write the input Solidity code to the Emscripten file system
Module.FS.writeFile('./input.sol', input);
// Compile the Solidity source code
Module.callMain(['./input.sol', '-O3','--bin']);
}
runCompiler().catch(err => {
console.error('Error:', err);
});
-49
View File
@@ -1,49 +0,0 @@
import { readFileSync } from 'fs';
import { fileURLToPath } from 'url';
import path from 'path';
import vm from 'vm';
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
// Import the Emscripten module
import ModuleFactory from './resolc.mjs';
async function initializeSolc() {
// Load soljson.js
const soljsonPath = path.join('./', 'soljson.js');
const soljsonCode = readFileSync(soljsonPath, 'utf8');
// Create a new VM context and run soljson.js in it
const soljsonContext = { Module: {} };
vm.createContext(soljsonContext); // Create a new context
vm.runInContext(soljsonCode, soljsonContext); // Execute soljson.js in the new context
// Return the initialized soljson module
return soljsonContext.Module;
}
async function runCompiler() {
const soljson = await initializeSolc();
const Module = await ModuleFactory();
// Expose soljson in the Module context
Module.soljson = soljson;
// Create input Solidity source code
const input = `
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
contract Baseline {
function baseline() public payable {}
}`;
// Write the input Solidity code to the Emscripten file system
Module.FS.writeFile('./input.sol', input);
// Compile the Solidity source code
Module.callMain(['./input.sol', '-O3','--bin']);
}
runCompiler().catch(err => {
console.error('Error:', err);
});
-111
View File
@@ -1,111 +0,0 @@
var Module = Module || {}; Module["wasmBinary"] = (function(source, uncompressedSize) {function base64DecToArr (sBase64) {
function b64ToUint6 (nChr) {
return nChr > 64 && nChr < 91 ?
nChr - 65
: nChr > 96 && nChr < 123 ?
nChr - 71
: nChr > 47 && nChr < 58 ?
nChr + 4
: nChr === 43 ?
62
: nChr === 47 ?
63
:
0;
}
var
nInLen = sBase64.length,
nOutLen = nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen);
for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
nMod4 = nInIdx & 3;
nUint24 |= b64ToUint6(sBase64.charCodeAt(nInIdx)) << 6 * (3 - nMod4);
if (nMod4 === 3 || nInLen - nInIdx === 1) {
for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
}
nUint24 = 0;
}
}
return taBytes;
}
function uncompress(source, uncompressedSize) {
function uncompressBlock (input, output, sIdx, eIdx) {
sIdx = sIdx || 0
eIdx = eIdx || (input.length - sIdx)
for (var i = sIdx, n = eIdx, j = 0; i < n;) {
var token = input[i++]
var literals_length = (token >> 4)
if (literals_length > 0) {
var l = literals_length + 240
while (l === 255) {
l = input[i++]
literals_length += l
}
var end = i + literals_length
while (i < end) output[j++] = input[i++]
if (i === n) return j
}
var offset = input[i++] | (input[i++] << 8)
if (offset === 0) return j
if (offset > j) return -(i-2)
var match_length = (token & 0xf)
var l = match_length + 240
while (l === 255) {
l = input[i++]
match_length += l
}
var pos = j - offset
var end = j + match_length + 4
while (j < end) output[j++] = output[pos++]
}
return j
}
var result = new ArrayBuffer(uncompressedSize);
var sourceIndex = 0;
var destIndex = 0;
var blockSize;
while((blockSize = (source[sourceIndex] | (source[sourceIndex + 1] << 8) | (source[sourceIndex + 2] << 16) | (source[sourceIndex + 3] << 24))) > 0)
{
sourceIndex += 4;
if (blockSize & 0x80000000)
{
blockSize &= 0x7FFFFFFFF;
for (var i = 0; i < blockSize; i++) {
result[destIndex++] = source[sourceIndex++];
}
}
else
{
destIndex += uncompressBlock(source, new Uint8Array(result, destIndex, uncompressedSize - destIndex), sourceIndex, sourceIndex + blockSize);
sourceIndex += blockSize;
}
}
return new Uint8Array(result, 0, uncompressedSize);
}
return uncompress(base64DecToArr(source), uncompressedSize);})(
"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 truncated
21094643);var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]Line truncated
Module["wasmBinary"] = undefined;
+3 -3
View File
@@ -1,11 +1,11 @@
mergeInto(LibraryManager.library, {
soljson_compile: function(inputPtr, inputLen) {
var inputJson = UTF8ToString(inputPtr, inputLen);
var output = Module.soljson.cwrap('solidity_compile', 'string', ['string'])(inputJson);
const inputJson = UTF8ToString(inputPtr, inputLen);
const output = Module.solc.compile(inputJson)
return stringToNewUTF8(output)
},
soljson_version: function() {
var version = Module.soljson.cwrap("solidity_version", "string", [])();
var version = Module.solc.version();
return stringToNewUTF8(version)
},
resolc_compile: function(inputPtr, inputLen) {
+2 -2
View File
@@ -1,9 +1,9 @@
// worker.js
// nodejs version
const { parentPort } = require('worker_threads');
import { parentPort } from 'worker_threads';
parentPort.on('message', async (inputJson) => {
const { default: ModuleFactory } = await import('./resolc.mjs');
const { default: ModuleFactory } = await import('./resolc.js');
const newModule = await ModuleFactory();
// Create a virtual file for stdin
+4 -2
View File
@@ -2,9 +2,11 @@
"name": "root",
"private": true,
"scripts": {
"test:cli": "npm run test -w crates/solidity/src/tests/cli-tests"
"test:cli": "npm run test -w crates/solidity/src/tests/cli-tests",
"test:revive": "npm run test -w js"
},
"workspaces": [
"crates/solidity/src/tests/cli-tests"
"crates/solidity/src/tests/cli-tests",
"js"
]
}