On 2014/10/06 14:20:59, Dmitry Lomov (chromium) wrote:
Ok I figured out the BailoutId clash. The minimal test case is minimal:
function foobar() {
   var C = class  { }
}

foobar();

Just run it with "--harmony-classes --always-opt".
The (incomplete) fix is:
--- a/src/preparser.h
+++ b/src/preparser.h
@@ -2754,11 +2754,13 @@ typename ParserBase<Traits>::ExpressionT
ParserBase<Traits>::ParseClassLiteral(

    // TODO(arv): Implement scopes and name binding in class body only.
    // TODO(arv): Maybe add CLASS_SCOPE?
-  typename Traits::Type::ScopePtr extends_scope =
-      this->NewScope(scope_, BLOCK_SCOPE);
+  // typename Traits::Type::ScopePtr extends_scope =
+  //    this->NewScope(scope_, BLOCK_SCOPE);
+  /*
    FunctionState extends_function_state(
        &function_state_, &scope_, &extends_scope, zone(),
        this->ast_value_factory(), ast_node_id_gen_);
+  */
    scope_->SetStrictMode(STRICT);
    scope_->SetScopeName(name);

The FunctionState you are using here to enter the scope has a side effect of
resetting the ast_node_id_gen (the bailout id generator).
What should happen here instead is just entering the scopes without using
FunctionState.

Thanks for looking into this.

I need to enter some scope to change the code to be strict. I'll see what needs
to be done to achieve that.

https://codereview.chromium.org/631433002/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to