&if_true, &if_false, &fall_through);
{ AccumulatorValueContext context(this);
- VisitForTypeofValue(sub_expr);
+ VisitForTypeofValue(sub_expr->AsUnaryOperation()->expression());
}
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
Expression** expr,
Handle<String>* check) {
if (IsTypeof(left) && right->IsStringLiteral() && Token::IsEqualityOp(op)) {
- *expr = left->AsUnaryOperation()->expression();
+ *expr = left;
*check = Handle<String>::cast(right->AsLiteral()->value());
return true;
}
Expression* sub_expr,
Handle<String> check) {
CHECK_ALIVE(VisitForValue(sub_expr));
- HValue* value = Pop();
+ HTypeof* htypeof = HTypeof::cast(Pop());
+ HValue* value = htypeof->value();
HTypeofIsAndBranch* instr = new(zone()) HTypeofIsAndBranch(value, check);
instr->set_position(expr->position());
return ast_context()->ReturnControl(instr, expr->id());
&if_true, &if_false, &fall_through);
{ AccumulatorValueContext context(this);
- VisitForTypeofValue(sub_expr);
+ VisitForTypeofValue(sub_expr->AsUnaryOperation()->expression());
}
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
&if_true, &if_false, &fall_through);
{ AccumulatorValueContext context(this);
- VisitForTypeofValue(sub_expr);
+ VisitForTypeofValue(sub_expr->AsUnaryOperation()->expression());
}
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
&if_true, &if_false, &fall_through);
{ AccumulatorValueContext context(this);
- VisitForTypeofValue(sub_expr);
+ VisitForTypeofValue(sub_expr->AsUnaryOperation()->expression());
}
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);