Files
hakorune/docs/archive/backends/llvm-inkwell-legacy/context.rs
Selfhosting Dev f0608e9bb1 feat: Phase 2.4 レガシーアーカイブ整理完了(151MB削減)
## 🎉 完了項目
-  plugin_box_legacy.rs削除(7.7KB、参照ゼロ確認済み)
-  REMOVEDコメント整理(encode.rs簡潔化)
-  venv削除(143MB節約、.gitignoreは既存)
-  llvm_legacyスタブ化(8KB、compile_error!による安全化)

## 🏆 成果
- **リポジトリサイズ改善**: 151MB削減
- **コード整理**: レガシーコード安全にアーカイブ
- **プラグインファースト**: StrictPluginFirst継続動作

##  検証完了
- cargo build --release --features llvm (警告のみ、エラーなし)
- LLVMハーネス実行: print出力正常
- プラグイン動作: StringBox等正常動作

codex先生の戦略に従った安全な段階的削除を実行

Co-Authored-By: codex <noreply@anthropic.com>
2025-09-24 14:13:15 +09:00

66 lines
2.2 KiB
Rust

/*!
* LLVM Context Management - Handle LLVM context, module, and target setup (legacy)
*/
/// Mock implementation when legacy inkwell backend is disabled
#[cfg(not(feature = "llvm-inkwell-legacy"))]
pub struct CodegenContext {
_phantom: std::marker::PhantomData<()>,
}
#[cfg(not(feature = "llvm-inkwell-legacy"))]
impl CodegenContext {
pub fn new(_module_name: &str) -> Result<Self, String> {
Ok(Self {
_phantom: std::marker::PhantomData,
})
}
}
// Real implementation (compiled only when feature "llvm-inkwell-legacy" is enabled)
#[cfg(feature = "llvm-inkwell-legacy")]
use inkwell::builder::Builder;
#[cfg(feature = "llvm-inkwell-legacy")]
use inkwell::context::Context;
#[cfg(feature = "llvm-inkwell-legacy")]
use inkwell::module::Module;
#[cfg(feature = "llvm-inkwell-legacy")]
use inkwell::targets::{InitializationConfig, Target, TargetMachine};
#[cfg(feature = "llvm-inkwell-legacy")]
pub struct CodegenContext<'ctx> {
pub context: &'ctx Context,
pub module: Module<'ctx>,
pub builder: Builder<'ctx>,
pub target_machine: TargetMachine,
}
#[cfg(feature = "llvm-inkwell-legacy")]
impl<'ctx> CodegenContext<'ctx> {
pub fn new(context: &'ctx Context, module_name: &str) -> Result<Self, String> {
Target::initialize_native(&InitializationConfig::default())
.map_err(|e| format!("Failed to initialize native target: {}", e))?;
let module = context.create_module(module_name);
let triple = TargetMachine::get_default_triple();
let target =
Target::from_triple(&triple).map_err(|e| format!("Failed to get target: {}", e))?;
let target_machine = target
.create_target_machine(
&triple,
"generic",
"",
inkwell::OptimizationLevel::None,
inkwell::targets::RelocMode::Default,
inkwell::targets::CodeModel::Default,
)
.ok_or_else(|| "Failed to create target machine".to_string())?;
let builder = context.create_builder();
Ok(Self {
context,
module,
builder,
target_machine,
})
}
}