@@ -48,8 +48,9 @@ int ICSetupInfo::totalSize() const {
48
48
static std::vector<std::pair<PatchpointInfo*, void * /* addr of func to call */ >> new_patchpoints;
49
49
50
50
ICSetupInfo* ICSetupInfo::initialize (bool has_return_value, int num_slots, int slot_size, ICType type,
51
- TypeRecorder* type_recorder) {
52
- ICSetupInfo* rtn = new ICSetupInfo (type, num_slots, slot_size, has_return_value, type_recorder);
51
+ TypeRecorder* type_recorder, bool has_const_arg_classes) {
52
+ ICSetupInfo* rtn
53
+ = new ICSetupInfo (type, num_slots, slot_size, has_return_value, type_recorder, has_const_arg_classes);
53
54
54
55
// We use size == CALL_ONLY_SIZE to imply that the call isn't patchable
55
56
assert (rtn->totalSize () > CALL_ONLY_SIZE);
@@ -258,6 +259,7 @@ void processStackmap(CompiledFunction* cf, StackMap* stackmap) {
258
259
start_addr, initialization_info.slowpath_start , initialization_info.continue_addr ,
259
260
initialization_info.slowpath_rtn_addr , ic, StackInfo (scratch_size, scratch_rsp_offset),
260
261
std::move (initialization_info.live_outs ));
262
+ icinfo->setHasConstArgClasses (ic->has_const_arg_classes );
261
263
262
264
assert (cf);
263
265
// TODO: unsafe. hard to use a unique_ptr here though.
@@ -333,9 +335,9 @@ ICSetupInfo* createDelattrIC(TypeRecorder* type_recorder) {
333
335
return ICSetupInfo::initialize (false , 1 , 144 , ICSetupInfo::Delattr, type_recorder);
334
336
}
335
337
336
- ICSetupInfo* createCallsiteIC (TypeRecorder* type_recorder, int num_args, ICInfo* bjit_ic_info) {
337
- return ICSetupInfo::initialize (true , numSlots (bjit_ic_info, 4 ), 640 + 48 * num_args, ICSetupInfo::Callsite ,
338
- type_recorder);
338
+ ICSetupInfo* createCallsiteIC (TypeRecorder* type_recorder, int num_args, ICInfo* bjit_ic_info, bool const_arg_classes ) {
339
+ return ICSetupInfo::initialize (true , const_arg_classes ? 1 : numSlots (bjit_ic_info, 4 ), 640 + 48 * num_args,
340
+ ICSetupInfo::Callsite, type_recorder, const_arg_classes );
339
341
}
340
342
341
343
ICSetupInfo* createGetGlobalIC (TypeRecorder* type_recorder) {
0 commit comments