commit | 44652d8763a56aaadb272584a5d3b090f364728f | [log] [tgz] |
---|---|---|
author | bobv@google.com <bobv@google.com@8db76d5a-ed1c-0410-87a9-c151d255dfc7> | Tue Nov 10 20:46:07 2009 +0000 |
committer | bobv@google.com <bobv@google.com@8db76d5a-ed1c-0410-87a9-c151d255dfc7> | Tue Nov 10 20:46:07 2009 +0000 |
tree | c8acaf3a948ee0fbbfe58994204dc3bfb310dd06 | |
parent | d6f1bd0d45acc5b721fb84e9edb2361291a0c712 [diff] |
Mark artificially-rescued fields as volatile. Patch by: bobv Review by: scottb (desk) git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6814 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JField.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JField.java index d983dba..921ecfe 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ast/JField.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JField.java
@@ -92,6 +92,13 @@ this.declStmt = declStmt; } + public void setVolatile() { + if (isFinal()) { + throw new IllegalStateException("Final fields cannot be set volatile"); + } + isVolatile = true; + } + public void traverse(JVisitor visitor, Context ctx) { if (visitor.visit(this, ctx)) { // Do not visit declStmt, it gets visited within its own code block.
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java index bf5aaf6..ed69e95 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -2534,6 +2534,9 @@ } currentClass.addArtificialRescue((JNode) node); + if (node instanceof JField) { + ((JField) node).setVolatile(); + } } } }