MCPcopy Create free account
hub / github.com/nodejs/node / demangle

Function demangle

deps/v8/test/mjsunit/asm/embenchen/copy.js:896–1045  ·  view source on GitHub ↗
(func)

Source from the content-addressed store, hash-verified

894Module['stringToUTF32'] = stringToUTF32;
895
896function demangle(func) {
897 var i = 3;
898 // params, etc.
899 var basicTypes = {
900 'v': 'void',
901 'b': 'bool',
902 'c': 'char',
903 's': 'short',
904 'i': 'int',
905 'l': 'long',
906 'f': 'float',
907 'd': 'double',
908 'w': 'wchar_t',
909 'a': 'signed char',
910 'h': 'unsigned char',
911 't': 'unsigned short',
912 'j': 'unsigned int',
913 'm': 'unsigned long',
914 'x': 'long long',
915 'y': 'unsigned long long',
916 'z': '...'
917 };
918 var subs = [];
919 var first = true;
920 function dump(x) {
921 //return;
922 if (x) Module.print(x);
923 Module.print(func);
924 var pre = '';
925 for (var a = 0; a < i; a++) pre += ' ';
926 Module.print (pre + '^');
927 }
928 function parseNested() {
929 i++;
930 if (func[i] === 'K') i++; // ignore const
931 var parts = [];
932 while (func[i] !== 'E') {
933 if (func[i] === 'S') { // substitution
934 i++;
935 var next = func.indexOf('_', i);
936 var num = func.substring(i, next) || 0;
937 parts.push(subs[num] || '?');
938 i = next+1;
939 continue;
940 }
941 if (func[i] === 'C') { // constructor
942 parts.push(parts[parts.length-1]);
943 i += 2;
944 continue;
945 }
946 var size = parseInt(func.substr(i));
947 var pre = size.toString().length;
948 if (!size || !pre) { i--; break; } // counter i++ below us
949 var curr = func.substr(i + pre, size);
950 parts.push(curr);
951 subs.push(curr);
952 i += pre + size;
953 }

Callers 1

demangleAllFunction · 0.70

Calls 2

Pointer_stringifyFunction · 0.70
parseFunction · 0.70

Tested by

no test coverage detected