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 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1424 HObjectAccess access(HObjectAccess::ForMapInstanceTypeAndBitField()); | 1424 HObjectAccess access(HObjectAccess::ForMapInstanceTypeAndBitField()); |
1425 HValue* instance_type_and_bit_field = | 1425 HValue* instance_type_and_bit_field = |
1426 Add<HLoadNamedField>(map, static_cast<HValue*>(NULL), access); | 1426 Add<HLoadNamedField>(map, static_cast<HValue*>(NULL), access); |
1427 | 1427 |
1428 HValue* mask = Add<HConstant>(0x00FF | (bit_field_mask << 8)); | 1428 HValue* mask = Add<HConstant>(0x00FF | (bit_field_mask << 8)); |
1429 HValue* and_result = AddUncasted<HBitwise>(Token::BIT_AND, | 1429 HValue* and_result = AddUncasted<HBitwise>(Token::BIT_AND, |
1430 instance_type_and_bit_field, | 1430 instance_type_and_bit_field, |
1431 mask); | 1431 mask); |
1432 HValue* sub_result = AddUncasted<HSub>(and_result, | 1432 HValue* sub_result = AddUncasted<HSub>(and_result, |
1433 Add<HConstant>(JS_OBJECT_TYPE)); | 1433 Add<HConstant>(JS_OBJECT_TYPE)); |
1434 Add<HBoundsCheck>(sub_result, Add<HConstant>(0x100 - JS_OBJECT_TYPE)); | 1434 Add<HBoundsCheck>(sub_result, |
| 1435 Add<HConstant>(LAST_JS_OBJECT_TYPE + 1 - JS_OBJECT_TYPE)); |
1435 } | 1436 } |
1436 | 1437 |
1437 | 1438 |
1438 void HGraphBuilder::BuildKeyedIndexCheck(HValue* key, | 1439 void HGraphBuilder::BuildKeyedIndexCheck(HValue* key, |
1439 HIfContinuation* join_continuation) { | 1440 HIfContinuation* join_continuation) { |
1440 // The sometimes unintuitively backward ordering of the ifs below is | 1441 // The sometimes unintuitively backward ordering of the ifs below is |
1441 // convoluted, but necessary. All of the paths must guarantee that the | 1442 // convoluted, but necessary. All of the paths must guarantee that the |
1442 // if-true of the continuation returns a smi element index and the if-false of | 1443 // if-true of the continuation returns a smi element index and the if-false of |
1443 // the continuation returns either a symbol or a unique string key. All other | 1444 // the continuation returns either a symbol or a unique string key. All other |
1444 // object types cause a deopt to fall back to the runtime. | 1445 // object types cause a deopt to fall back to the runtime. |
(...skipping 10931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12376 if (ShouldProduceTraceOutput()) { | 12377 if (ShouldProduceTraceOutput()) { |
12377 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 12378 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
12378 } | 12379 } |
12379 | 12380 |
12380 #ifdef DEBUG | 12381 #ifdef DEBUG |
12381 graph_->Verify(false); // No full verify. | 12382 graph_->Verify(false); // No full verify. |
12382 #endif | 12383 #endif |
12383 } | 12384 } |
12384 | 12385 |
12385 } } // namespace v8::internal | 12386 } } // namespace v8::internal |
OLD | NEW |