Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions mjbase/dev_plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -919,3 +919,8 @@ mjt-deobf 侧尚在 mbase 栈消费的 opt pass 逐件裁决;"结构性吸收"
对 reflection_interpreter 的反射改写面消费保留为 asm⇒reference 单向。
终态零环:analysis⇏asm、spi⇏pass,全部跨模块边单向
(asm⇒{analysis,reference}、reference⇒asm、pass⇒spi)。
→ 补记(2026-10-29,reflection-interpreter 归位):上句申报与事实不
符——asm⇒reference 与 reference⇒asm 并存即模块环。reflection_interpreter
本就是体级分析件(只吃 analysis/cp_refs + asm/analyzer 面),整迁
asm/analyzer/(ns reference→asm_analyzer),member_remapper 消费转模
块内。终态真零环:asm⇏reference,唯一方向 reference⇒asm。
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "mjbase/reference/reflection_interpreter.hpp"
#include "mjbase/asm/analyzer/reflection_interpreter.hpp"

#include <string>
#include <vector>
Expand All @@ -9,7 +9,7 @@
#include "mjbase/analysis/cp_refs.hpp"
#include "mjbase/asm/analyzer/frame_query.hpp"

namespace mjbase::reference {
namespace mjbase::asm_analyzer {

using jbc::core::Op;
using jbc::core::Shape;
Expand Down Expand Up @@ -775,4 +775,4 @@ ReflectionSnapshot snapshotReflectionFacts(const ReflectionQueryContext& ctx)
return ReflectionSnapshot{}; // 注入不收敛:保守 fail-open
}

} // namespace mjbase::reference
} // namespace mjbase::asm_analyzer
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@

namespace mjbase::asm_analyzer {
class AliasAnalysis;
} // namespace mjbase::analysis
} // namespace mjbase::asm_analyzer

namespace mjbase::reference {
namespace mjbase::asm_analyzer {

/// @brief 类名归一化:`(Lfoo/Bar;)V` 描述符形态与点分名统一为 internal name。
///
Expand Down Expand Up @@ -161,4 +161,4 @@ struct ReflectionQueryContext
/// @brief 计算方法内反射数据流快照(域引擎 + 迭代探测-注入 + FrameQuery 收口)。
ReflectionSnapshot snapshotReflectionFacts(const ReflectionQueryContext& ctx);

} // namespace mjbase::reference
} // namespace mjbase::asm_analyzer
14 changes: 7 additions & 7 deletions mjbase/src/mjbase/asm/remapper/member_remapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

#include "mjbase/asm/analyzer/alias_analysis.hpp"
#include "mjbase/jasm/classfile_utf8.hpp"
#include "mjbase/reference/reflection_interpreter.hpp"
#include "mjbase/asm/analyzer/reflection_interpreter.hpp"

namespace mjbase::asm_remapper {
namespace {
Expand Down Expand Up @@ -1166,7 +1166,7 @@ bool remapReflectionNames(const RemapCtx& ctx, CodeUnit& code, std::string_view
}
else if (c.kind == ClassSession::ConstSem::Kind::Class) {
const std::string decoded = cpToUtf8(c.str);
const std::string_view tracking = reference::classLiteralTrackingName(decoded);
const std::string_view tracking = asm_analyzer::classLiteralTrackingName(decoded);
if (!tracking.empty() && (!hasOwner || !hasLastString)) {
reflectionOwner.assign(tracking);
hasOwner = true;
Expand Down Expand Up @@ -1226,15 +1226,15 @@ bool remapReflectionNames(const RemapCtx& ctx, CodeUnit& code, std::string_view

// —— 数据流轨道(alias 快照;fail-open:引擎拒斥时保留线性轨道成果)——
if (aliases == nullptr) return changed;
reference::ReflectionQueryContext query;
asm_analyzer::ReflectionQueryContext query;
query.code = &code;
query.cp = &ctx.cf.cp;
query.owner = className;
query.name = methodName;
query.desc = methodDesc;
query.isStatic = isStatic;
query.aliases = aliases;
const reference::ReflectionSnapshot snapshot = reference::snapshotReflectionFacts(query);
const asm_analyzer::ReflectionSnapshot snapshot = asm_analyzer::snapshotReflectionFacts(query);
if (!snapshot.ok) return changed;

for (ca::usize pos = 0; pos < order.size(); ++pos) {
Expand All @@ -1247,15 +1247,15 @@ bool remapReflectionNames(const RemapCtx& ctx, CodeUnit& code, std::string_view
if (!methodLookup && !fieldLookup) continue;
const auto it = snapshot.receivers.find(static_cast<ca::u32>(pos));
if (it == snapshot.receivers.end()) continue;
reference::ReflectionValue receiver = it->second;
asm_analyzer::ReflectionValue receiver = it->second;
if (const auto* alias = aliases->reflectionReceiverOf(
className, methodName, methodDesc, static_cast<ca::i32>(pos))) {
if (alias->isKnown() && alias->identity.rfind("class:", 0) == 0) {
receiver.kind = reference::ReflectionValue::Kind::Class;
receiver.kind = asm_analyzer::ReflectionValue::Kind::Class;
receiver.owner = alias->identity.substr(6);
}
}
if (receiver.kind != reference::ReflectionValue::Kind::Class) continue;
if (receiver.kind != asm_analyzer::ReflectionValue::Kind::Class) continue;

for (ca::usize cursor = pos; cursor-- > 0;) {
const Insn* cand = code.dom.peek(order[cursor]);
Expand Down
10 changes: 9 additions & 1 deletion mjbase/src/mjbase/reference/reference_index.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#include "mjbase/analysis/class_scan.hpp"
#include "mjbase/analysis/cp_refs.hpp"
#include "mjbase/hierarchy/summary.hpp"
#include "mjbase/reference/reflection_interpreter.hpp"
#include "mjbase/asm/analyzer/reflection_interpreter.hpp"

namespace mjbase::reference {

Expand All @@ -28,6 +28,14 @@ using jbc::ir::SymbolId;
using ConstSem = jbc::ir::ClassSession::ConstSem;
using MemberRefSem = mjbase::analysis::MemberRefSem;
using mjbase::asm_analyzer::aliasInterned;
using mjbase::asm_analyzer::ReflectionExecutionTarget;
using mjbase::asm_analyzer::ReflectionQueryContext;
using mjbase::asm_analyzer::ReflectionSnapshot;
using mjbase::asm_analyzer::ReflectionValue;
using mjbase::asm_analyzer::normalizeClassName;
using mjbase::asm_analyzer::reflectionArgumentDescriptor;
using mjbase::asm_analyzer::resolveReflectionExecution;
using mjbase::asm_analyzer::snapshotReflectionFacts;
using mjbase::analysis::resolveClassName;
using mjbase::analysis::resolveMemberRef;

Expand Down
5 changes: 4 additions & 1 deletion mjbase/src/mjbase/reference/reflection_binding_analyzer.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "mjbase/reference/reflection_binding_analyzer.hpp"
#include "mjbase/asm/analyzer/reflection_interpreter.hpp"

#include <algorithm>
#include <cstring>
Expand All @@ -14,7 +15,6 @@
#include "mjbase/analysis/cp_refs.hpp"
#include "mjbase/asm/analyzer/frame_query.hpp"
#include "mjbase/hierarchy/summary.hpp"
#include "mjbase/reference/reflection_interpreter.hpp"

namespace mjbase::reference {

Expand All @@ -27,6 +27,9 @@ using ConstSem = jbc::ir::ClassSession::ConstSem;
using MemberRefSem = mjbase::analysis::MemberRefSem;
using mjbase::analysis::resolveClassName;
using mjbase::analysis::resolveMemberRef;
using mjbase::asm_analyzer::intConstantOf;
using mjbase::asm_analyzer::normalizeClassName;
using mjbase::asm_analyzer::regionHasIncomingBranches;

namespace {

Expand Down
Loading