File tree Expand file tree Collapse file tree 2 files changed +80
-1
lines changed Expand file tree Collapse file tree 2 files changed +80
-1
lines changed Original file line number Diff line number Diff line change 3030 @cd target && rm -f * .ll && rm -f * .bc && rm -rf * .dSYM && rm -f testout* && rm -f out* && rm -f * .o
3131
3232bench :
33- @cargo bench --all
33+ @cd immix && cargo bench
34+ @cd vm && cargo bench
3435
3536bench-simple-gc :
3637 @cd vm && cargo bench --features=simple_gc --no-default-features
Original file line number Diff line number Diff line change 1+ # Generic
2+ ``` mermaid
3+ graph TD
4+ Def-->StructAddSymbol-->StructDef-->NodeEmit
5+ subgraph Def
6+ DefStruct("Struct X< T >{y:T}")
7+ end
8+ subgraph StructAddSymbol
9+ %% SetUpGenericMap
10+ subgraph SetUpGenericMap
11+ subgraph PLType::STType
12+ GenericMap
13+ Fields
14+ end
15+ subgraph PLType::Generic
16+ CurrentType
17+ end
18+ None
19+ EmptyVec("vec![]")
20+ CurrentType-->None
21+ Fields-->EmptyVec
22+ GenericMap--T-->PLType::Generic
23+ end
24+ %% GenLLVMCode
25+ subgraph GenLLVMCode
26+ Code("生成占位符,不带泛型签名,A = type {}")
27+ end
28+ AddType("ctx.add_type(X)")
29+ SetUpGenericMap-->GenLLVMCode-->AddType
30+ end
31+
32+ subgraph StructDef
33+ Move(CtxApi::MoveGenericMap 保存泛型表上下文)
34+ Reset(CtxApi::ResetGenericMap 恢复泛型表上下文)
35+ AddGeneric(将泛型T加入ctx中泛型表)
36+ GetType("ctx.get_type(X)")
37+ subgraph EmitStructDef
38+ direction TB
39+ Move-->AddGeneric-->GetType-->Reset
40+ end
41+ end
42+
43+ subgraph NodeEmit
44+ HightLight
45+ end
46+
47+ ```
48+ ``` mermaid
49+ graph TD
50+ subgraph CtxApi
51+ subgraph Ctx
52+ GenericTypesMap("generict_types:HashMap< String,PLType >
53+ //用来存泛型类型的临时表")
54+ PLMod::types("plmod.types:HashMap< String,PLType >")
55+ end
56+ GenericTypesMap--clone-->MoveGenericMap
57+ ResetGenericMap--store-->GenericTypesMap
58+ GetType--T-->GenericTypesMap
59+ GetType--i64-->PLMod::types
60+ end
61+ ```
62+ ``` mermaid
63+ graph TD
64+ subgraph typenameNode
65+ GenericParam
66+ subgraph exidNode
67+ ModName
68+ subgraph VarNode
69+ ID
70+ end
71+ end
72+ end
73+ ```
74+ PLType::STType {
75+ field: {
76+ PLType::STType
77+ }
78+ }
You can’t perform that action at this time.
0 commit comments