@@ -45,8 +45,9 @@ int ICSetupInfo::totalSize() const {
4545static  std::vector<std::pair<PatchpointInfo*, void * /*  addr of func to call */ 
4646
4747ICSetupInfo* ICSetupInfo::initialize (bool  has_return_value, int  num_slots, int  slot_size, ICType type,
48-                                      TypeRecorder* type_recorder) {
49-     ICSetupInfo* rtn = new  ICSetupInfo (type, num_slots, slot_size, has_return_value, type_recorder);
48+                                      TypeRecorder* type_recorder, bool  has_const_arg_classes) {
49+     ICSetupInfo* rtn
50+         = new  ICSetupInfo (type, num_slots, slot_size, has_return_value, type_recorder, has_const_arg_classes);
5051
5152    //  We use size == CALL_ONLY_SIZE to imply that the call isn't patchable
5253    assert (rtn->totalSize () > CALL_ONLY_SIZE);
@@ -255,6 +256,7 @@ void processStackmap(CompiledFunction* cf, StackMap* stackmap) {
255256            start_addr, initialization_info.slowpath_start , initialization_info.continue_addr ,
256257            initialization_info.slowpath_rtn_addr , ic, StackInfo (scratch_size, scratch_rsp_offset),
257258            std::move (initialization_info.live_outs ));
259+         icinfo->setHasConstArgClasses (ic->has_const_arg_classes );
258260
259261        assert (cf);
260262        //  TODO: unsafe.  hard to use a unique_ptr here though.
@@ -330,9 +332,9 @@ ICSetupInfo* createDelattrIC(TypeRecorder* type_recorder) {
330332    return  ICSetupInfo::initialize (false , 1 , 144 , ICSetupInfo::Delattr, type_recorder);
331333}
332334
333- ICSetupInfo* createCallsiteIC (TypeRecorder* type_recorder, int  num_args, ICInfo* bjit_ic_info) {
334-     return  ICSetupInfo::initialize (true , numSlots (bjit_ic_info, 4 ), 640  + 48  * num_args, ICSetupInfo::Callsite ,
335-                                    type_recorder);
335+ ICSetupInfo* createCallsiteIC (TypeRecorder* type_recorder, int  num_args, ICInfo* bjit_ic_info,  bool  const_arg_classes ) {
336+     return  ICSetupInfo::initialize (true , const_arg_classes ?  1  :  numSlots (bjit_ic_info, 4 ), 640  + 48  * num_args,
337+                                    ICSetupInfo::Callsite,  type_recorder, const_arg_classes );
336338}
337339
338340ICSetupInfo* createGetGlobalIC (TypeRecorder* type_recorder) {
0 commit comments