aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorCarl Shapiro <cshapiro@google.com>2011-01-11 17:16:48 -0800
committerCarl Shapiro <cshapiro@google.com>2011-01-11 17:33:46 -0800
commit15e4a6325289d37ae9264f6c072d5071905c6929 (patch)
treeec1d463afe9100f7f83c0e751674a53c278a8fb1 /vm/compiler/codegen/arm/CodegenDriver.c
parent05bdc2f83cf5c64555c3acc94449e8baeb4d48f8 (diff)
Handle the case of referent clearing during tracing.
Reference objects with non-null referent fields are collected during tracing for processing after the trace has completed. Before the trace was made concurrent there was no way for a reference with a non-null referent field to have its referent become null by any action of the garbage collector after it was discovered. Assertions were placed in the reference processing code to check this invariant. After the trace was made concurrent it became possible for a user to clear the referent field of an already discovered reference. This violates the assertions in the reference processing code. This change replaces the assertions in the reference processing code with logic to deal with null referent fields. The assert in the SoftReference preservation code has been converted to a continue that short circuits the preservation logic. The assert in the white reference clearing code short circuits the clearing and enqueueing. Change-Id: I77bd18cd1ad52e9f457b0f9b1d4e1403e5de1a98
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
0 files changed, 0 insertions, 0 deletions