@@ -352,12 +352,13 @@ void Rewriter::emitGuardJump(bool useJne) {
352
352
assembler->je (assembler::JumpDestination::fromStart (rewrite->getSlotSize ()));
353
353
}
354
354
} else {
355
+ // TODO use ForwardJump here rather than emulating it
355
356
if (useJne) {
356
- assembler->jne (assembler::JumpDestination::fromStart (( 1 << 31 ) - 2 ));
357
+ assembler->jne (assembler::JumpDestination::fromStart (std::numeric_limits< int >:: max ( ) - 1 ));
357
358
} else {
358
- assembler->je (assembler::JumpDestination::fromStart (( 1 << 31 ) - 2 ));
359
+ assembler->je (assembler::JumpDestination::fromStart (std::numeric_limits< int >:: max ( ) - 1 ));
359
360
}
360
-
361
+
361
362
if (should_use_second_guard_destination) {
362
363
assert (marked_inside_ic);
363
364
}
@@ -1787,7 +1788,7 @@ TypeRecorder* Rewriter::getTypeRecorder() {
1787
1788
return rewrite->getTypeRecorder ();
1788
1789
}
1789
1790
1790
- Rewriter::Rewriter (std::unique_ptr<ICSlotRewrite> rewrite, int num_args, const LiveOutSet& live_outs)
1791
+ Rewriter::Rewriter (std::unique_ptr<ICSlotRewrite> rewrite, int num_args, LiveOutSet live_outs)
1791
1792
: rewrite(std::move(rewrite)),
1792
1793
assembler (this ->rewrite->getAssembler ()),
1793
1794
picked_slot(NULL ),
@@ -2134,7 +2135,8 @@ PatchpointInitializationInfo initializePatchpoint3(void* slowpath_func, uint8_t*
2134
2135
assem.fillWithNops ();
2135
2136
assert (!assem.hasFailed ());
2136
2137
2137
- return PatchpointInitializationInfo (patchpoint_start, slowpath_start, slowpath_rtn_addr, continue_addr, 0 );
2138
+ return PatchpointInitializationInfo (patchpoint_start, slowpath_start, slowpath_rtn_addr, continue_addr,
2139
+ LiveOutSet ());
2138
2140
}
2139
2141
2140
2142
void * Rewriter::RegionAllocator::alloc (size_t bytes) {
@@ -2149,19 +2151,19 @@ void* Rewriter::RegionAllocator::alloc(size_t bytes) {
2149
2151
return rtn;
2150
2152
}
2151
2153
2152
- llvm::SmallVector<std::pair<RewriterVar*, llvm::SmallVector<Location, 4 > >, 8 > VarLocations::_varLocationsConstruct (
2153
- llvm::SmallVector<RewriterVar*, 8 > const & vars) {
2154
- llvm::SmallVector<std::pair<RewriterVar*, llvm::SmallVector<Location, 4 > >, 8 > v;
2154
+ llvm::SmallVector<std::pair<RewriterVar*, llvm::SmallVector<Location, 4 >>, 8 >
2155
+ VarLocations::_varLocationsConstruct ( llvm::SmallVector<RewriterVar*, 8 > const & vars) {
2156
+ llvm::SmallVector<std::pair<RewriterVar*, llvm::SmallVector<Location, 4 >>, 8 > v;
2155
2157
for (RewriterVar* var : vars) {
2156
2158
v.push_back (std::make_pair (var, var->locations ));
2157
2159
}
2158
2160
return v;
2159
2161
}
2160
- VarLocations::VarLocations (llvm::SmallVector<RewriterVar*, 8 > const & vars)
2161
- : vars(_varLocationsConstruct(vars)) { }
2162
+ VarLocations::VarLocations (llvm::SmallVector<RewriterVar*, 8 > const & vars) : vars(_varLocationsConstruct(vars)) {
2163
+ }
2162
2164
2163
2165
void VarLocations::arrangeAsArgs (Rewriter* rewriter) {
2164
- assembler::Assembler * assembler = rewriter->assembler ;
2166
+ assembler::Assembler* assembler = rewriter->assembler ;
2165
2167
2166
2168
llvm::SmallVector<Location, 8 > locs;
2167
2169
int argInReg[16 ];
@@ -2210,7 +2212,8 @@ void VarLocations::arrangeAsArgs(Rewriter* rewriter) {
2210
2212
2211
2213
Location curLoc = locs[i];
2212
2214
Location targetLoc = Location::forArg (i);
2213
- if (curLoc == targetLoc) continue ;
2215
+ if (curLoc == targetLoc)
2216
+ continue ;
2214
2217
if (targetLoc.type == Location::Stack) {
2215
2218
if (curLoc.type == Location::Register) {
2216
2219
assembler->mov (curLoc.asRegister (), assembler::Indirect (assembler::RSP, targetLoc.stack_offset ));
@@ -2219,7 +2222,9 @@ void VarLocations::arrangeAsArgs(Rewriter* rewriter) {
2219
2222
} else {
2220
2223
assembler::Register r = getFreeReg ();
2221
2224
assert (curLoc.type == Location::Scratch);
2222
- assembler->mov (assembler::Indirect (assembler::RSP, rewriter->rewrite ->getScratchRspOffset () + curLoc.scratch_offset ), r);
2225
+ assembler->mov (assembler::Indirect (assembler::RSP,
2226
+ rewriter->rewrite ->getScratchRspOffset () + curLoc.scratch_offset ),
2227
+ r);
2223
2228
assembler->mov (r, assembler::Indirect (assembler::RSP, targetLoc.stack_offset ));
2224
2229
locs[i] = targetLoc;
2225
2230
}
@@ -2237,7 +2242,9 @@ void VarLocations::arrangeAsArgs(Rewriter* rewriter) {
2237
2242
argInReg[curLoc.asRegister ().regnum ] = -1 ;
2238
2243
} else {
2239
2244
assert (curLoc.type == Location::Scratch);
2240
- assembler->mov (assembler::Indirect (assembler::RSP, rewriter->rewrite ->getScratchRspOffset () + curLoc.scratch_offset ), targetLoc.asRegister ());
2245
+ assembler->mov (assembler::Indirect (assembler::RSP,
2246
+ rewriter->rewrite ->getScratchRspOffset () + curLoc.scratch_offset ),
2247
+ targetLoc.asRegister ());
2241
2248
}
2242
2249
2243
2250
locs[i] = targetLoc;
@@ -2258,5 +2265,4 @@ void VarLocations::arrangeAsArgs(Rewriter* rewriter) {
2258
2265
}
2259
2266
}
2260
2267
}
2261
-
2262
2268
}
0 commit comments