summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp48
-rw-r--r--src/binaryen-c.h24
-rw-r--r--src/js/binaryen.js-post.js30
3 files changed, 102 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 17c95c96e..fc16eee42 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -3958,6 +3958,54 @@ void BinaryenClearPassArguments(void) {
globalPassOptions.arguments.clear();
}
+BinaryenIndex BinaryenGetAlwaysInlineMaxSize(void) {
+ if (tracing) {
+ std::cout << " BinaryenGetAlwaysInlineMaxSize();\n";
+ }
+
+ return globalPassOptions.inlining.alwaysInlineMaxSize;
+}
+
+void BinaryenSetAlwaysInlineMaxSize(BinaryenIndex size) {
+ if (tracing) {
+ std::cout << " BinaryenSetAlwaysInlineMaxSize(" << size << ");\n";
+ }
+
+ globalPassOptions.inlining.alwaysInlineMaxSize = size;
+}
+
+BinaryenIndex BinaryenGetFlexibleInlineMaxSize(void) {
+ if (tracing) {
+ std::cout << " BinaryenGetFlexibleInlineMaxSize();\n";
+ }
+
+ return globalPassOptions.inlining.flexibleInlineMaxSize;
+}
+
+void BinaryenSetFlexibleInlineMaxSize(BinaryenIndex size) {
+ if (tracing) {
+ std::cout << " BinaryenSetFlexibleInlineMaxSize(" << size << ");\n";
+ }
+
+ globalPassOptions.inlining.flexibleInlineMaxSize = size;
+}
+
+BinaryenIndex BinaryenGetOneCallerInlineMaxSize(void) {
+ if (tracing) {
+ std::cout << " BinaryenGetOneCallerInlineMaxSize();\n";
+ }
+
+ return globalPassOptions.inlining.oneCallerInlineMaxSize;
+}
+
+void BinaryenSetOneCallerInlineMaxSize(BinaryenIndex size) {
+ if (tracing) {
+ std::cout << " BinaryenSetOneCallerInlineMaxSize(" << size << ");\n";
+ }
+
+ globalPassOptions.inlining.oneCallerInlineMaxSize = size;
+}
+
void BinaryenModuleRunPasses(BinaryenModuleRef module,
const char** passes,
BinaryenIndex numPasses) {
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 66a68e8d2..39e0aca33 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -1304,6 +1304,30 @@ BINARYEN_API void BinaryenSetPassArgument(const char* name, const char* value);
// Applies to all modules, globally.
BINARYEN_API void BinaryenClearPassArguments();
+// Gets the function size at which we always inline.
+// Applies to all modules, globally.
+BINARYEN_API BinaryenIndex BinaryenGetAlwaysInlineMaxSize(void);
+
+// Sets the function size at which we always inline.
+// Applies to all modules, globally.
+BINARYEN_API void BinaryenSetAlwaysInlineMaxSize(BinaryenIndex size);
+
+// Gets the function size which we inline when functions are lightweight.
+// Applies to all modules, globally.
+BINARYEN_API BinaryenIndex BinaryenGetFlexibleInlineMaxSize(void);
+
+// Sets the function size which we inline when functions are lightweight.
+// Applies to all modules, globally.
+BINARYEN_API void BinaryenSetFlexibleInlineMaxSize(BinaryenIndex size);
+
+// Gets the function size which we inline when there is only one caller.
+// Applies to all modules, globally.
+BINARYEN_API BinaryenIndex BinaryenGetOneCallerInlineMaxSize(void);
+
+// Sets the function size which we inline when there is only one caller.
+// Applies to all modules, globally.
+BINARYEN_API void BinaryenSetOneCallerInlineMaxSize(BinaryenIndex size);
+
// Runs the specified passes on the module. Uses the currently set global
// optimize and shrink level.
BINARYEN_API void BinaryenModuleRunPasses(BinaryenModuleRef module,
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index d41e9575b..3ef19fd7d 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -2928,6 +2928,36 @@ Module['clearPassArguments'] = function() {
Module['_BinaryenClearPassArguments']();
};
+// Gets the function size at which we always inline.
+Module['getAlwaysInlineMaxSize'] = function() {
+ return Module['_BinaryenGetAlwaysInlineMaxSize']();
+};
+
+// Sets the function size at which we always inline.
+Module['setAlwaysInlineMaxSize'] = function(size) {
+ Module['_BinaryenSetAlwaysInlineMaxSize'](size);
+};
+
+// Gets the function size which we inline when functions are lightweight.
+Module['getFlexibleInlineMaxSize'] = function() {
+ return Module['_BinaryenGetFlexibleInlineMaxSize']();
+};
+
+// Sets the function size which we inline when functions are lightweight.
+Module['setFlexibleInlineMaxSize'] = function(size) {
+ Module['_BinaryenSetFlexibleInlineMaxSize'](size);
+};
+
+// Gets the function size which we inline when there is only one caller.
+Module['getOneCallerInlineMaxSize'] = function() {
+ return Module['_BinaryenGetOneCallerInlineMaxSize']();
+};
+
+// Sets the function size which we inline when there is only one caller.
+Module['setOneCallerInlineMaxSize'] = function(size) {
+ Module['_BinaryenSetOneCallerInlineMaxSize'](size);
+};
+
// Enables or disables C-API tracing
Module['setAPITracing'] = function(on) {
return Module['_BinaryenSetAPITracing'](on);