Index: src/full-codegen.h |
diff --git a/src/full-codegen.h b/src/full-codegen.h |
index 217f9e9bc986013521fae7c74f4de986236114e6..f5bdfdb8a607dd289ff1c6ca749f0815984235dc 100644 |
--- a/src/full-codegen.h |
+++ b/src/full-codegen.h |
@@ -370,9 +370,14 @@ class FullCodeGenerator: public AstVisitor { |
PrepareForBailout(expr, TOS_REG); |
} |
- void VisitForStackValue(Expression* expr) { |
+ void VisitForStackValue(Expression* expr, bool allow_super = false) { |
StackValueContext context(this); |
- Visit(expr); |
+ if (allow_super && expr->IsSuperReference()) { |
Dmitry Lomov (no reviews)
2015/03/31 10:09:42
Do not do this.
Instead, call EmitLoadSuperConstr
|
+ EmitLoadSuperConstructor(); |
+ context.Plug(result_register()); |
+ } else { |
+ Visit(expr); |
+ } |
PrepareForBailout(expr, NO_REGISTERS); |
} |
@@ -659,6 +664,7 @@ class FullCodeGenerator: public AstVisitor { |
void EmitSetHomeObjectIfNeeded(Expression* initializer, int offset); |
void EmitLoadSuperConstructor(); |
+ void EmitInitializeThisAfterSuper(SuperReference* super_ref); |
void CallIC(Handle<Code> code, |
TypeFeedbackId id = TypeFeedbackId::None()); |