shouldn't have + V3 здесь выражает неодобрение по поводу действия в прошлом (Джек не должен был смеяться, но сделал это).