| Index: src/interpreter/bytecode-generator.cc
|
| diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc
|
| index f67e7b927c28e4a9502c50b1ae98b1c652d48cf9..a3ef2471b6c207c43c35ec6b03e0565821395436 100644
|
| --- a/src/interpreter/bytecode-generator.cc
|
| +++ b/src/interpreter/bytecode-generator.cc
|
| @@ -1093,6 +1093,12 @@ void BytecodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
|
| builder()->SetStatementPosition(stmt);
|
| VisitForAccumulatorValue(stmt->expression());
|
|
|
| + if (stmt->HasTypeProfileSlot()) {
|
| + FeedbackSlot collect_type_feedback_slot = stmt->TypeProfileSlot();
|
| + builder()->CollectTypeProfile(stmt->position(),
|
| + feedback_index(collect_type_feedback_slot));
|
| + }
|
| +
|
| if (stmt->is_async_return()) {
|
| execution_control()->AsyncReturnAccumulator();
|
| } else {
|
| @@ -2211,34 +2217,18 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) {
|
| LhsKind assign_type = Property::GetAssignType(property);
|
|
|
| // Evaluate LHS expression.
|
| - Register lhs_name;
|
| - if (expr->HasTypeProfileSlot()) {
|
| - lhs_name = register_allocator()->NewRegister();
|
| - }
|
| -
|
| switch (assign_type) {
|
| case VARIABLE:
|
| - if (expr->HasTypeProfileSlot()) {
|
| - builder()
|
| - ->LoadLiteral(expr->target()->AsVariableProxy()->var()->raw_name())
|
| - .StoreAccumulatorInRegister(lhs_name);
|
| - }
|
| // Nothing to do to evaluate variable assignment LHS.
|
| break;
|
| case NAMED_PROPERTY: {
|
| object = VisitForRegisterValue(property->obj());
|
| name = property->key()->AsLiteral()->AsRawPropertyName();
|
| - if (expr->HasTypeProfileSlot()) {
|
| - builder()->LoadLiteral(name).StoreAccumulatorInRegister(lhs_name);
|
| - }
|
| break;
|
| }
|
| case KEYED_PROPERTY: {
|
| object = VisitForRegisterValue(property->obj());
|
| key = VisitForRegisterValue(property->key());
|
| - if (expr->HasTypeProfileSlot()) {
|
| - builder()->StoreAccumulatorInRegister(lhs_name);
|
| - }
|
| break;
|
| }
|
| case NAMED_SUPER_PROPERTY: {
|
| @@ -2251,9 +2241,6 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) {
|
| builder()
|
| ->LoadLiteral(property->key()->AsLiteral()->AsRawPropertyName())
|
| .StoreAccumulatorInRegister(super_property_args[2]);
|
| - if (expr->HasTypeProfileSlot()) {
|
| - builder()->StoreAccumulatorInRegister(lhs_name);
|
| - }
|
| break;
|
| }
|
| case KEYED_SUPER_PROPERTY: {
|
| @@ -2264,10 +2251,6 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) {
|
| VisitForRegisterValue(super_property->home_object(),
|
| super_property_args[1]);
|
| VisitForRegisterValue(property->key(), super_property_args[2]);
|
| - if (expr->HasTypeProfileSlot()) {
|
| - builder()->StoreAccumulatorInRegister(lhs_name);
|
| - }
|
| -
|
| break;
|
| }
|
| }
|
| @@ -2358,10 +2341,12 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) {
|
| }
|
|
|
| // Value is in accumulator.
|
| - if (expr->HasTypeProfileSlot()) {
|
| + // TODO(franzih): Collect type profile once we can handle more than just
|
| + // return statements.
|
| + if (false && expr->HasTypeProfileSlot()) {
|
| FeedbackSlot collect_type_feedback_slot = expr->TypeProfileSlot();
|
|
|
| - builder()->CollectTypeProfile(lhs_name,
|
| + builder()->CollectTypeProfile(expr->position(),
|
| feedback_index(collect_type_feedback_slot));
|
| }
|
| }
|
|
|