summaryrefslogtreecommitdiff
path: root/liboil/liboilfunction.c
diff options
context:
space:
mode:
Diffstat (limited to 'liboil/liboilfunction.c')
-rw-r--r--liboil/liboilfunction.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/liboil/liboilfunction.c b/liboil/liboilfunction.c
index fa1870c..f2eb440 100644
--- a/liboil/liboilfunction.c
+++ b/liboil/liboilfunction.c
@@ -367,6 +367,17 @@ oil_class_optimize (OilFunctionClass * klass)
OIL_ERROR ("class %s has no implmentations", klass->name);
return;
}
+
+ if (klass->first_impl->next == NULL) {
+ if (!oil_impl_is_runnable (klass->first_impl)) {
+ OIL_ERROR ("class %s has no runable implmentations", klass->name);
+ return;
+ }
+ OIL_DEBUG ("class %s has only one implementation %s", klass->name, klass->first_impl->name);
+ klass->chosen_impl = klass->first_impl;
+ klass->func = klass->first_impl->func;
+ return;
+ }
test = oil_test_new (klass);
if (test == NULL) {