Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: compiled/shell.js

Issue 29333474: Issue 4125 - [emscripten] Convert filter classes to C++ (Closed)
Patch Set: Back to manual approach for API Created Jan. 18, 2016, 12:41 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « compiled/api.cpp ('k') | lib/filterClassesNew.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compiled/shell.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/compiled/shell.js
@@ -0,0 +1,200 @@
+"Compiled from https://hg.adblockplus.org/adblockplus/ with Emscripten {{{EMSCRIPTEN_VERSION}}}";
+
+var sizeofString = 0;
+
+function createString(str)
+{
+ var length = 0;
+ var buffer = 0;
+ if (str)
+ {
+ length = str.length;
+ buffer = Runtime.stackAlloc(length * 2);
+ for (var i = 0, pointer = (buffer >> 1); i < length; i++, pointer++)
+ HEAP16[pointer] = str.charCodeAt(i);
+ }
+
+ if (!sizeofString)
+ sizeofString = Module._GetSizeofString();
+ var result = Module.Runtime.stackAlloc(sizeofString);
+ Module._InitString(result, buffer, length);
+ return result;
+}
+
+function getStringData(str)
+{
+ var length = Module._GetStringLength(str);
+ var pointer = Module._GetStringData(str) >> 1;
+ return String.fromCharCode.apply(String, HEAP16.slice(pointer, pointer + length));
+}
+
+function convertGetter(call)
+{
+ return function()
+ {
+ return call(this._pointer);
+ };
+}
+
+function convertSetter(call)
+{
+ return function(value)
+ {
+ call(this._pointer, value);
+ }
+}
+
+function convertMethod(call)
+{
+ return function()
+ {
+ var params = Array.slice(arguments);
+ params.unshift(this._pointer);
+ return call.apply(this, params);
+ };
+}
+
+var regexps =
+{
+ _data: Object.create(null),
+ _counter: 0,
+
+ create: function(source, matchCase)
+ {
+ var id = ++this._counter;
+ try
+ {
+ this._data[id] = new RegExp(getStringData(source), matchCase ? "" : "i");
+ }
+ catch (e)
+ {
+ this._data[id] = String(e);
+ }
+ return id;
+ },
+
+ getError: function(id)
+ {
+ if (typeof this._data[id] == "string")
+ return createString(this._data[id]);
+ else
+ return 0;
+ },
+
+ delete: function(id)
+ {
+ delete this._data[id];
+ },
+
+ test: function(id, str)
+ {
+ return this._data[id].test(getStringData(str));
+ }
+};
+
+var Module =
+{
+ preRun: [],
+ postRun: [],
+ print: console.log.bind(console),
+ printErr: console.error.bind(console),
+
+ createClass: function(superclass)
+ {
+ var result = function(pointer)
+ {
+ this._pointer = pointer;
+ };
+ if (superclass)
+ result.prototype = Object.create(superclass.prototype);
+ result.prototype.delete = function()
+ {
+ Module._DeletePointer(this._pointer);
+ };
+ return result;
+ },
+
+ wrapCall: function(call)
+ {
+ return function()
+ {
+ var sp = Module.Runtime.stackSave();
+ try
+ {
+ return call.apply(this, arguments);
+ }
+ catch (e)
+ {
+ throw typeof e == "number" ? new Error(Module.AsciiToString(Module._GetException(e))) : e;
+ }
+ finally
+ {
+ Module.Runtime.stackRestore(sp);
+ }
+ };
+ },
+
+ stringArg: function(argPos, call)
+ {
+ return function()
+ {
+ var params = Array.slice(arguments);
+ params[argPos] = createString(params[argPos]);
+ try
+ {
+ return call.apply(this, params);
+ }
+ finally
+ {
+ Module._DestroyString(params[argPos]);
+ }
+ };
+ },
+
+ stringResult: function(call)
+ {
+ return function()
+ {
+ var params = Array.slice(arguments);
+ try
+ {
+ params.unshift(createString());
+ call.apply(this, params);
+ return getStringData(params[0]);
+ }
+ finally
+ {
+ Module._DestroyString(params[0]);
+ }
+ };
+ },
+
+ defineProperty: function(cls, name, getter, setter)
+ {
+ var descriptor =
+ {
+ enumerable: true,
+ get: Module.wrapCall(convertGetter(getter))
+ };
+ if (setter)
+ descriptor.set = Module.wrapCall(convertSetter(setter));
+ Object.defineProperty(cls.prototype, name, descriptor);
+ },
+
+ defineStringProperty: function(cls, name, getter, setter)
+ {
+ Module.defineProperty(cls, name, Module.stringResult(getter),
+ (setter ? Module.stringArg(1, setter) : null));
+ },
+
+ defineMethod: function(cls, name, method)
+ {
+ cls.prototype[name] = Module.wrapCall(convertMethod(method));
+ }
+};
+var ENVIRONMENT_IS_WEB = false, ENVIRONMENT_IS_NODE = false,
+ ENVIRONMENT_IS_WORKER = false, ENVIRONMENT_IS_SHELL = true;
+
+{{BODY}}
+
+Object.assign(exports, Module);
« no previous file with comments | « compiled/api.cpp ('k') | lib/filterClassesNew.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld