To check ignition timing you need a timing light.
Remove the idle air bypass pipe and check it carefully - they perish and split. I also assume yu are happy the stepper motor is sealed against the plenum? The gasket, if original likely fell to bits, I found a smear of RTV silicon was effective.
600RPM is a bit high for base idle, should be 525+/- 25rpm although I'm not convinced that would prevent the ecu being able to maintain the correct idle speed.
According to my Range Rover workshop manual the following settings apply to the 3.9 engine.
Idle all loads off in neutral should be 665 to 735rpm.
Auto, in gear and AC on 650 +/-28 rpm
Auto, in gear AC off 600 +/- 28 rpm
Manual box, 700 +/- 28rpm
Manual box AC on 750 +/- 28 rpm
Double check you don't have an inlet leak and the EFI is trying to compensate although this typically presents as an unstable idle and stalling. However, this is exactly what you describe.."When stopped in traffic or signal light the RPM goes up and down and the engine stalls".
You should check all inputs to the ecu that affect idle stabilisation:
Throttle potentiometer base voltage.
Speed sensor.
Air conditioning.
If auto, gear selector switch.
Also, a bit left field, check your alternator and battery.
I also assume you are checking/setting things with a warm engine?
I can't say I recall the idle being at 600rpm but I worked on the basis I was happy with it being anything under 800rpm. When cold, the idle is higher due to mixture enrichment, by increasing the injector pulse duration IIRC.
You don't say if this is cat or non-cat, I assume it is cat tune, in which case CO Trim should be 1.8v IIRC, if non-cat it will probably be lower, I an't remember where I used to run mine, less than 1.0v though, but mine was non-cat. If catalyst, then maybe check lambda switching and that the O2 sensors are working correctly, Lambda control alters fuelling to maintain the correct lambda value especially at idle and part throttle. Lambda is ignored at WOT. Accordingly, if there is an inlet leak, the ECU would try to make the mixture richer to balance lambda, it then goes rich so it backs it off and this continues until essentially the ecu can't get the mixture under control and the engine dies although I would expect the EFI warning light to come on - assuming the D1 had an EFI warning light. I'm sure Discool can confirm.
HTH