MCPcopy Create free account
hub / github.com/ReadyTalk/avian / pickRegisterTarget

Function pickRegisterTarget

src/codegen/compiler/regalloc.cpp:59–86  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

57}
58
59bool pickRegisterTarget(Context* c,
60 Register i,
61 Value* v,
62 RegisterMask mask,
63 Register* target,
64 unsigned* cost,
65 CostCalculator* costCalculator)
66{
67 if (mask.contains(i)) {
68 RegisterResource* r = c->registerResources + i.index();
69 unsigned myCost
70 = resourceCost(
71 c,
72 v,
73 r,
74 SiteMask(lir::Operand::RegisterPairMask, RegisterMask(i), NoFrameIndex),
75 costCalculator) + Target::MinimumRegisterCost;
76
77 if (mask.containsExactly(i)) {
78 *cost = myCost;
79 return true;
80 } else if (myCost < *cost) {
81 *cost = myCost;
82 *target = i;
83 }
84 }
85 return false;
86}
87
88Register pickRegisterTarget(Context* c,
89 Value* v,

Callers 3

acquireTemporaryMethod · 0.85
acquireMethod · 0.85
pickTargetFunction · 0.85

Calls 7

resourceCostFunction · 0.85
RegisterMaskClass · 0.85
TargetClass · 0.85
containsExactlyMethod · 0.80
SiteMaskClass · 0.70
containsMethod · 0.65
indexMethod · 0.65

Tested by

no test coverage detected