OLD | NEW |
| (Empty) |
1 | |
2 // Copyright 2017 the V8 project authors. All rights reserved. | |
3 // Use of this source code is governed by a BSD-style license that can be | |
4 // found in the LICENSE file. | |
5 | |
6 #include "src/code-stub-assembler.h" | |
7 | |
8 namespace v8 { | |
9 namespace internal { | |
10 | |
11 class ForInBuiltinsAssembler : public CodeStubAssembler { | |
12 public: | |
13 explicit ForInBuiltinsAssembler(compiler::CodeAssemblerState* state) | |
14 : CodeStubAssembler(state) {} | |
15 | |
16 std::tuple<Node*, Node*, Node*> EmitForInPrepare(Node* object, Node* context, | |
17 Label* call_runtime, | |
18 Label* nothing_to_iterate); | |
19 | |
20 Node* ForInFilter(Node* key, Node* object, Node* context); | |
21 | |
22 private: | |
23 // Get the enumerable length from |map| and return the result as a Smi. | |
24 Node* EnumLength(Node* map); | |
25 void CheckPrototypeEnumCache(Node* receiver, Node* map, Label* use_cache, | |
26 Label* use_runtime); | |
27 // Check the cache validity for |receiver|. Branch to |use_cache| if | |
28 // the cache is valid, otherwise branch to |use_runtime|. | |
29 void CheckEnumCache(Node* receiver, Label* use_cache, | |
30 Label* nothing_to_iterate, Label* use_runtime); | |
31 }; | |
32 | |
33 } // namespace internal | |
34 } // namespace v8 | |
OLD | NEW |