| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/code-factory.h" | 5 #include "src/code-factory.h" |
| 6 #include "src/compiler/access-builder.h" | 6 #include "src/compiler/access-builder.h" |
| 7 #include "src/compiler/js-graph.h" | 7 #include "src/compiler/js-graph.h" |
| 8 #include "src/compiler/js-typed-lowering.h" | 8 #include "src/compiler/js-typed-lowering.h" |
| 9 #include "src/compiler/linkage.h" | 9 #include "src/compiler/linkage.h" |
| 10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
| (...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 // Perform checks whether the fast mode applies, by looking for any extension | 935 // Perform checks whether the fast mode applies, by looking for any extension |
| 936 // object which might shadow the optimistic declaration. | 936 // object which might shadow the optimistic declaration. |
| 937 uint32_t bitset = access.check_bitset(); | 937 uint32_t bitset = access.check_bitset(); |
| 938 Node* check_true = control; | 938 Node* check_true = control; |
| 939 Node* check_false = graph()->NewNode(common()->Merge(0)); | 939 Node* check_false = graph()->NewNode(common()->Merge(0)); |
| 940 for (int depth = 0; bitset != 0; bitset >>= 1, depth++) { | 940 for (int depth = 0; bitset != 0; bitset >>= 1, depth++) { |
| 941 if ((bitset & 1) == 0) continue; | 941 if ((bitset & 1) == 0) continue; |
| 942 Node* load = graph()->NewNode( | 942 Node* load = graph()->NewNode( |
| 943 javascript()->LoadContext(depth, Context::EXTENSION_INDEX, false), | 943 javascript()->LoadContext(depth, Context::EXTENSION_INDEX, false), |
| 944 context, context, effect); | 944 context, context, effect); |
| 945 Node* check = graph()->NewNode(simplified()->ObjectIsSmi(), load); | 945 Node* check = graph()->NewNode(simplified()->ReferenceEqual(Type::Tagged()), |
| 946 load, jsgraph()->ZeroConstant()); |
| 946 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), check, | 947 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), check, |
| 947 check_true); | 948 check_true); |
| 948 Node* if_true = graph()->NewNode(common()->IfTrue(), branch); | 949 Node* if_true = graph()->NewNode(common()->IfTrue(), branch); |
| 949 Node* if_false = graph()->NewNode(common()->IfFalse(), branch); | 950 Node* if_false = graph()->NewNode(common()->IfFalse(), branch); |
| 950 check_false->set_op(common()->Merge(check_false->InputCount() + 1)); | 951 check_false->set_op(common()->Merge(check_false->InputCount() + 1)); |
| 951 check_false->AppendInput(graph()->zone(), if_false); | 952 check_false->AppendInput(graph()->zone(), if_false); |
| 952 check_true = if_true; | 953 check_true = if_true; |
| 953 } | 954 } |
| 954 | 955 |
| 955 // Fast case, because variable is not shadowed. Perform global object load. | 956 // Fast case, because variable is not shadowed. Perform global object load. |
| (...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1540 } | 1541 } |
| 1541 | 1542 |
| 1542 | 1543 |
| 1543 MachineOperatorBuilder* JSTypedLowering::machine() const { | 1544 MachineOperatorBuilder* JSTypedLowering::machine() const { |
| 1544 return jsgraph()->machine(); | 1545 return jsgraph()->machine(); |
| 1545 } | 1546 } |
| 1546 | 1547 |
| 1547 } // namespace compiler | 1548 } // namespace compiler |
| 1548 } // namespace internal | 1549 } // namespace internal |
| 1549 } // namespace v8 | 1550 } // namespace v8 |
| OLD | NEW |