compiler: no nil check needed for closure var dereferences
Add the "no nil check needed" annotation to the dereference operations created in Parse::enclosing_var_reference (this is safe since the closure object is under control of the compiler, and pointer fields in it will always be non-nil). Reviewed-on: https://go-review.googlesource.com/81795 From-SVN: r255400
This commit is contained in:
parent
141abc6f1e
commit
ae4bb13f0d
2 changed files with 4 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
|||
338f7434175bb71f3c8905e9ad7f480aec3afee6
|
||||
297cf346f2400274946650ab9ecd039427fc986b
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -2747,7 +2747,7 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var,
|
|||
location);
|
||||
closure_ref =
|
||||
Expression::make_dereference(closure_ref,
|
||||
Expression::NIL_CHECK_DEFAULT,
|
||||
Expression::NIL_CHECK_NOT_NEEDED,
|
||||
location);
|
||||
|
||||
// The closure structure holds pointers to the variables, so we need
|
||||
|
@ -2755,7 +2755,8 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var,
|
|||
Expression* e = Expression::make_field_reference(closure_ref,
|
||||
ins.first->index(),
|
||||
location);
|
||||
e = Expression::make_dereference(e, Expression::NIL_CHECK_DEFAULT, location);
|
||||
e = Expression::make_dereference(e, Expression::NIL_CHECK_NOT_NEEDED,
|
||||
location);
|
||||
return Expression::make_enclosing_var_reference(e, var, location);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue