Bug 578618 - improve MarkerAttributeMap performance.

* avoid temporary intern() of arguments
* thread safety by using a copy on write Map.
* all bulk puts avoid copies for every entry
* hashed map by using IdentityHashMap for performance && small memory.
* use the IntegerCache of Integer.valueOf()
* use Boolean.valueOf()

This implementation does not longer expose the Map interface as it would
allow to insert null key or values or non interned keys via the iterator
if not a specific entrySet is implemented. The public API only publishes
Map copies via toMap().
However entrySet() does now conform to the java.util.Map
specification: The returned collection will be bound to this map and
will remain in sync with this map - however it is not used in that
way.

Change-Id: I7dfcc12af36cbf19c99176c7f6d0bae00523be67
Signed-off-by: Joerg Kubitz <jkubitz-eclipse@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.resources/+/190487
Tested-by: Platform Bot <platform-bot@eclipse.org>
16 files changed