@@ -49,8 +49,9 @@ int ICSetupInfo::totalSize() const {
4949static  std::vector<std::pair<PatchpointInfo*, void * /*  addr of func to call */ 
5050
5151ICSetupInfo* ICSetupInfo::initialize (bool  has_return_value, int  num_slots, int  slot_size, ICType type,
52-                                      TypeRecorder* type_recorder) {
53-     ICSetupInfo* rtn = new  ICSetupInfo (type, num_slots, slot_size, has_return_value, type_recorder);
52+                                      TypeRecorder* type_recorder, bool  has_const_arg_classes) {
53+     ICSetupInfo* rtn
54+         = new  ICSetupInfo (type, num_slots, slot_size, has_return_value, type_recorder, has_const_arg_classes);
5455
5556    //  We use size == CALL_ONLY_SIZE to imply that the call isn't patchable
5657    assert (rtn->totalSize () > CALL_ONLY_SIZE);
@@ -325,6 +326,7 @@ void processStackmap(CompiledFunction* cf, StackMap* stackmap) {
325326            start_addr, initialization_info.slowpath_start , initialization_info.continue_addr ,
326327            initialization_info.slowpath_rtn_addr , ic, StackInfo (scratch_size, scratch_rsp_offset),
327328            std::move (initialization_info.live_outs ));
329+         icinfo->setHasConstArgClasses (ic->has_const_arg_classes );
328330
329331        assert (cf);
330332        //  TODO: unsafe.  hard to use a unique_ptr here though.
@@ -403,9 +405,9 @@ ICSetupInfo* createDelattrIC(TypeRecorder* type_recorder) {
403405    return  ICSetupInfo::initialize (false , 1 , 144 , ICSetupInfo::Delattr, type_recorder);
404406}
405407
406- ICSetupInfo* createCallsiteIC (TypeRecorder* type_recorder, int  num_args, ICInfo* bjit_ic_info) {
407-     return  ICSetupInfo::initialize (true , numSlots (bjit_ic_info, 4 ), 640  + 48  * num_args, ICSetupInfo::Callsite ,
408-                                    type_recorder);
408+ ICSetupInfo* createCallsiteIC (TypeRecorder* type_recorder, int  num_args, ICInfo* bjit_ic_info,  bool  const_arg_classes ) {
409+     return  ICSetupInfo::initialize (true , const_arg_classes ?  1  :  numSlots (bjit_ic_info, 4 ), 640  + 48  * num_args,
410+                                    ICSetupInfo::Callsite,  type_recorder, const_arg_classes );
409411}
410412
411413ICSetupInfo* createGetGlobalIC (TypeRecorder* type_recorder) {
0 commit comments