OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/hydrogen.h" | 5 #include "src/hydrogen.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/v8.h" | 9 #include "src/v8.h" |
10 | 10 |
(...skipping 5201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5212 | 5212 |
5213 if (fast) { | 5213 if (fast) { |
5214 // Check if the expected map still matches that of the enumerable. | 5214 // Check if the expected map still matches that of the enumerable. |
5215 // If not just deoptimize. | 5215 // If not just deoptimize. |
5216 Add<HCheckMapValue>(enumerable, environment()->ExpressionStackAt(3)); | 5216 Add<HCheckMapValue>(enumerable, environment()->ExpressionStackAt(3)); |
5217 Bind(each_var, key); | 5217 Bind(each_var, key); |
5218 } else { | 5218 } else { |
5219 HValue* function = AddLoadJSBuiltin(Builtins::FILTER_KEY); | 5219 HValue* function = AddLoadJSBuiltin(Builtins::FILTER_KEY); |
5220 Add<HPushArguments>(enumerable, key); | 5220 Add<HPushArguments>(enumerable, key); |
5221 key = Add<HInvokeFunction>(function, 2); | 5221 key = Add<HInvokeFunction>(function, 2); |
| 5222 Push(key); |
| 5223 Add<HSimulate>(stmt->FilterId()); |
| 5224 key = Pop(); |
5222 Bind(each_var, key); | 5225 Bind(each_var, key); |
| 5226 Add<HCheckHeapObject>(key); |
5223 Add<HSimulate>(stmt->AssignmentId()); | 5227 Add<HSimulate>(stmt->AssignmentId()); |
5224 Add<HCheckHeapObject>(key); | |
5225 } | 5228 } |
5226 | 5229 |
5227 BreakAndContinueInfo break_info(stmt, scope(), 5); | 5230 BreakAndContinueInfo break_info(stmt, scope(), 5); |
5228 { | 5231 { |
5229 BreakAndContinueScope push(&break_info, this); | 5232 BreakAndContinueScope push(&break_info, this); |
5230 CHECK_BAILOUT(VisitLoopBody(stmt, loop_entry)); | 5233 CHECK_BAILOUT(VisitLoopBody(stmt, loop_entry)); |
5231 } | 5234 } |
5232 | 5235 |
5233 HBasicBlock* body_exit = | 5236 HBasicBlock* body_exit = |
5234 JoinContinue(stmt, current_block(), break_info.continue_block()); | 5237 JoinContinue(stmt, current_block(), break_info.continue_block()); |
(...skipping 7914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13149 if (ShouldProduceTraceOutput()) { | 13152 if (ShouldProduceTraceOutput()) { |
13150 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13153 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13151 } | 13154 } |
13152 | 13155 |
13153 #ifdef DEBUG | 13156 #ifdef DEBUG |
13154 graph_->Verify(false); // No full verify. | 13157 graph_->Verify(false); // No full verify. |
13155 #endif | 13158 #endif |
13156 } | 13159 } |
13157 | 13160 |
13158 } } // namespace v8::internal | 13161 } } // namespace v8::internal |
OLD | NEW |