}
+void FastCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
+ Comment cmnt(masm_, "[ UnaryOperation");
+
+ switch (expr->op()) {
+ case Token::VOID:
+ Visit(expr->expression());
+ ASSERT_EQ(Expression::kEffect, expr->expression()->context());
+ switch (expr->context()) {
+ case Expression::kUninitialized:
+ UNREACHABLE();
+ break;
+ case Expression::kValue:
+ __ LoadRoot(ip, Heap::kUndefinedValueRootIndex);
+ __ push(ip);
+ break;
+ case Expression::kEffect:
+ break;
+ }
+ break;
+
+ default:
+ UNREACHABLE();
+ }
+}
+
+
void FastCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) {
switch (expr->op()) {
case Token::COMMA:
void CodeGenSelector::VisitUnaryOperation(UnaryOperation* expr) {
- BAILOUT("UnaryOperation");
+ switch (expr->op()) {
+ case Token::VOID:
+ ProcessExpression(expr->expression(), Expression::kEffect);
+ break;
+ default:
+ BAILOUT("UnaryOperation");
+ }
}
}
-void FastCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
- UNREACHABLE();
-}
-
-
void FastCodeGenerator::VisitCountOperation(CountOperation* expr) {
UNREACHABLE();
}
}
+void FastCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
+ Comment cmnt(masm_, "[ UnaryOperation");
+
+ switch (expr->op()) {
+ case Token::VOID:
+ Visit(expr->expression());
+ ASSERT_EQ(Expression::kEffect, expr->expression()->context());
+ switch (expr->context()) {
+ case Expression::kUninitialized:
+ UNREACHABLE();
+ break;
+ case Expression::kValue:
+ __ push(Immediate(Factory::undefined_value()));
+ break;
+ case Expression::kEffect:
+ break;
+ }
+ break;
+
+ default:
+ UNREACHABLE();
+ }
+}
+
+
void FastCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) {
switch (expr->op()) {
case Token::COMMA:
}
+void FastCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
+ Comment cmnt(masm_, "[ UnaryOperation");
+
+ switch (expr->op()) {
+ case Token::VOID:
+ Visit(expr->expression());
+ ASSERT_EQ(Expression::kEffect, expr->expression()->context());
+ switch (expr->context()) {
+ case Expression::kUninitialized:
+ UNREACHABLE();
+ break;
+ case Expression::kValue:
+ __ PushRoot(Heap::kUndefinedValueRootIndex);
+ break;
+ case Expression::kEffect:
+ break;
+ }
+ break;
+
+ default:
+ UNREACHABLE();
+ }
+}
+
+
void FastCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) {
switch (expr->op()) {
case Token::COMMA: