@@ -977,10 +977,16 @@ CheerpWriter::COMPILE_INSTRUCTION_FEEDBACK CheerpWriter::handleBuiltinCall(const
977977 stream << " new Blob([" << threadingObject << " ." << blobText << " ])" ;
978978 return COMPILE_OK;
979979 }
980- else if (intrinsicId==Intrinsic::cheerp_thread_setup_resolve )
980+ else if (intrinsicId==Intrinsic::cheerp_get_thread_setup_resolve )
981981 {
982982 StringRef threadSetupResolve = namegen.getBuiltinName (NameGenerator::Builtin::THREADSETUPRESOLVE);
983- stream << threadSetupResolve << " ();" << NewLine;
983+ stream << threadSetupResolve;
984+ return COMPILE_OK;
985+ }
986+ else if (intrinsicId==Intrinsic::cheerp_get_thread_setup_reject)
987+ {
988+ StringRef threadSetupReject = namegen.getBuiltinName (NameGenerator::Builtin::THREADSETUPREJECT);
989+ stream << threadSetupReject;
984990 return COMPILE_OK;
985991 }
986992 else if (intrinsicId==Intrinsic::abs)
@@ -7153,8 +7159,10 @@ void CheerpWriter::compileThreadingObject()
71537159 // First create the promise and resolve variables for threading setup.
71547160 StringRef threadPromise = namegen.getBuiltinName (NameGenerator::Builtin::THREADSETUPPROMISE);
71557161 StringRef threadResolve = namegen.getBuiltinName (NameGenerator::Builtin::THREADSETUPRESOLVE);
7162+ StringRef threadReject = namegen.getBuiltinName (NameGenerator::Builtin::THREADSETUPREJECT);
71567163 stream << " var " << threadResolve << " =null;" << NewLine;
7157- stream << " var " << threadPromise << " =new Promise((r)=>{" << threadResolve << " =r;});" << NewLine;
7164+ stream << " var " << threadReject << " =null;" << NewLine;
7165+ stream << " var " << threadPromise << " =new Promise((f,r)=>{" << threadResolve << " =f;" << threadReject << " =r});" << NewLine;
71587166
71597167 // Then create the rest of the threading variables.
71607168 StringRef threadObject = namegen.getBuiltinName (NameGenerator::Builtin::THREADINGOBJECT);
0 commit comments