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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "src/v8.h" | 9 #include "src/v8.h" |
10 | 10 |
(...skipping 7183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7194 VariableProxy* proxy = expr->obj()->AsVariableProxy(); | 7194 VariableProxy* proxy = expr->obj()->AsVariableProxy(); |
7195 if (proxy == NULL) return false; | 7195 if (proxy == NULL) return false; |
7196 if (!proxy->var()->IsStackAllocated()) return false; | 7196 if (!proxy->var()->IsStackAllocated()) return false; |
7197 if (!environment()->Lookup(proxy->var())->CheckFlag(HValue::kIsArguments)) { | 7197 if (!environment()->Lookup(proxy->var())->CheckFlag(HValue::kIsArguments)) { |
7198 return false; | 7198 return false; |
7199 } | 7199 } |
7200 | 7200 |
7201 HInstruction* result = NULL; | 7201 HInstruction* result = NULL; |
7202 if (expr->key()->IsPropertyName()) { | 7202 if (expr->key()->IsPropertyName()) { |
7203 Handle<String> name = expr->key()->AsLiteral()->AsPropertyName(); | 7203 Handle<String> name = expr->key()->AsLiteral()->AsPropertyName(); |
7204 if (!name->IsOneByteEqualTo(STATIC_ASCII_VECTOR("length"))) return false; | 7204 if (!String::Equals(name, isolate()->factory()->length_string())) { |
| 7205 return false; |
| 7206 } |
7205 | 7207 |
7206 if (function_state()->outer() == NULL) { | 7208 if (function_state()->outer() == NULL) { |
7207 HInstruction* elements = Add<HArgumentsElements>(false); | 7209 HInstruction* elements = Add<HArgumentsElements>(false); |
7208 result = New<HArgumentsLength>(elements); | 7210 result = New<HArgumentsLength>(elements); |
7209 } else { | 7211 } else { |
7210 // Number of arguments without receiver. | 7212 // Number of arguments without receiver. |
7211 int argument_count = environment()-> | 7213 int argument_count = environment()-> |
7212 arguments_environment()->parameter_count() - 1; | 7214 arguments_environment()->parameter_count() - 1; |
7213 result = New<HConstant>(argument_count); | 7215 result = New<HConstant>(argument_count); |
7214 } | 7216 } |
(...skipping 5266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12481 if (ShouldProduceTraceOutput()) { | 12483 if (ShouldProduceTraceOutput()) { |
12482 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 12484 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
12483 } | 12485 } |
12484 | 12486 |
12485 #ifdef DEBUG | 12487 #ifdef DEBUG |
12486 graph_->Verify(false); // No full verify. | 12488 graph_->Verify(false); // No full verify. |
12487 #endif | 12489 #endif |
12488 } | 12490 } |
12489 | 12491 |
12490 } } // namespace v8::internal | 12492 } } // namespace v8::internal |
OLD | NEW |