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.
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.