cii-text-analysis/vendor/rubix/tensor/optimizers/TensorGetNumThreadsOptimizer.php

62 lines
1.6 KiB
PHP
Raw Permalink Normal View History

2026-02-10 16:19:59 +01:00
<?php
namespace Zephir\Optimizers\FunctionCall;
use Zephir\Call;
use Zephir\CompilationContext;
use Zephir\CompiledExpression;
use Zephir\HeadersManager;
use Zephir\Exception\CompilerException;
use Zephir\Optimizers\OptimizerAbstract;
class TensorGetNumThreadsOptimizer extends OptimizerAbstract
{
/**
* @param mixed[] $expression
* @param \Zephir\Call $call
* @param \Zephir\CompilationContext $context
* @throws \Zephir\Exception\CompilerException
* @return \Zephir\CompiledExpression|bool
*/
public function optimize(array $expression, Call $call, CompilationContext $context)
{
$call->processExpectedReturn($context);
$symbolVariable = $call->getSymbolVariable();
if ($symbolVariable->getType() !== 'variable') {
throw new CompilerException(
'Return value must only be assigned to a dynamic variable.',
$expression
);
}
if ($call->mustInitSymbolVariable()) {
$symbolVariable->initVariant($context);
}
$context->headersManager->add(
'include/settings',
HeadersManager::POSITION_LAST
);
$resolvedParams = $call->getResolvedParams(
[],
$context,
$expression
);
$symbol = $context->backend->getVariableCode($symbolVariable);
$context->codePrinter->output(
"tensor_get_num_threads($symbol);"
);
return new CompiledExpression(
'variable',
$symbolVariable->getRealName(),
$expression
);
}
}