示例#1
0
    def createOutlineFromCall(self, provider, values):
        from nuitka.optimizations.FunctionInlining import convertFunctionCallToOutline

        return convertFunctionCallToOutline(
            provider     = provider,
            function_ref = self.getFunctionRef(),
            values       = values
        )
示例#2
0
    def computeExpression(self, trace_collection):
        function = self.subnode_function
        function_body = function.subnode_function_ref.getFunctionBody()

        if function_body.mayRaiseException(BaseException):
            trace_collection.onExceptionRaiseExit(BaseException)

        values = self.subnode_values

        # Ask for function for its cost.
        cost = function_body.getFunctionInlineCost(values)

        if cost is not None and cost < 50:
            from nuitka.optimizations.FunctionInlining import (
                convertFunctionCallToOutline, )

            result = convertFunctionCallToOutline(
                provider=self.getParentVariableProvider(),
                function_body=function_body,
                values=values,
                call_source_ref=self.source_ref,
            )

            return (
                result,
                "new_statements",
                lambda: "Function call to '%s' in-lined." % function_body.
                getCodeName(),
            )

        self.variable_closure_traces = []

        for closure_variable in function_body.getClosureVariables():
            trace = trace_collection.getVariableCurrentTrace(closure_variable)
            trace.addNameUsage()

            self.variable_closure_traces.append((closure_variable, trace))

        return self, None, None
示例#3
0
 def createOutlineFromCall(self, provider, values):
     return convertFunctionCallToOutline(provider=provider,
                                         function_ref=self.getFunctionRef(),
                                         values=values)
示例#4
0
 def createOutlineFromCall(self, provider, values):
     return convertFunctionCallToOutline(
         provider     = provider,
         function_ref = self.getFunctionRef(),
         values       = values
     )
示例#5
0
    def createOutlineFromCall(self, provider, values):
        from nuitka.optimizations.FunctionInlining import convertFunctionCallToOutline

        return convertFunctionCallToOutline(
            provider=provider, function_ref=self.getFunctionRef(), values=values
        )