| 857 | } |
| 858 | |
| 859 | GcByteArray* internByteArray(Thread* t, GcByteArray* array) |
| 860 | { |
| 861 | PROTECT(t, array); |
| 862 | |
| 863 | ACQUIRE(t, t->m->referenceLock); |
| 864 | |
| 865 | GcTriple* n = hashMapFindNode( |
| 866 | t, roots(t)->byteArrayMap(), array, byteArrayHash, byteArrayEqual); |
| 867 | if (n) { |
| 868 | return cast<GcByteArray>(t, cast<GcJreference>(t, n->first())->target()); |
| 869 | } else { |
| 870 | hashMapInsert(t, roots(t)->byteArrayMap(), array, 0, byteArrayHash); |
| 871 | addFinalizer(t, array, removeByteArray); |
| 872 | return array; |
| 873 | } |
| 874 | } |
| 875 | |
| 876 | unsigned parsePoolEntry(Thread* t, |
| 877 | Stream& s, |
no test coverage detected