Commit ae4bb13f by Ian Lance Taylor

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
parent 141abc6f
338f7434175bb71f3c8905e9ad7f480aec3afee6 297cf346f2400274946650ab9ecd039427fc986b
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -2747,7 +2747,7 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var, ...@@ -2747,7 +2747,7 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var,
location); location);
closure_ref = closure_ref =
Expression::make_dereference(closure_ref, Expression::make_dereference(closure_ref,
Expression::NIL_CHECK_DEFAULT, Expression::NIL_CHECK_NOT_NEEDED,
location); location);
// The closure structure holds pointers to the variables, so we need // 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, ...@@ -2755,7 +2755,8 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var,
Expression* e = Expression::make_field_reference(closure_ref, Expression* e = Expression::make_field_reference(closure_ref,
ins.first->index(), ins.first->index(),
location); 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); return Expression::make_enclosing_var_reference(e, var, location);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment