Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: src/compiler/bytecode-graph-builder.cc

Issue 2557593004: [ignition] desugar GetIterator() via bytecode rather than via AST (Closed)
Patch Set: get tests passing Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/compiler/bytecode-graph-builder.h" 5 #include "src/compiler/bytecode-graph-builder.h"
6 6
7 #include "src/ast/ast.h" 7 #include "src/ast/ast.h"
8 #include "src/ast/scopes.h" 8 #include "src/ast/scopes.h"
9 #include "src/compilation-info.h" 9 #include "src/compilation-info.h"
10 #include "src/compiler/compiler-source-position-table.h" 10 #include "src/compiler/compiler-source-position-table.h"
11 #include "src/compiler/linkage.h" 11 #include "src/compiler/linkage.h"
12 #include "src/compiler/operator-properties.h" 12 #include "src/compiler/operator-properties.h"
13 #include "src/compiler/simplified-operator.h"
13 #include "src/interpreter/bytecodes.h" 14 #include "src/interpreter/bytecodes.h"
14 #include "src/objects-inl.h" 15 #include "src/objects-inl.h"
15 16
16 namespace v8 { 17 namespace v8 {
17 namespace internal { 18 namespace internal {
18 namespace compiler { 19 namespace compiler {
19 20
20 // The abstract execution environment simulates the content of the interpreter 21 // The abstract execution environment simulates the content of the interpreter
21 // register file. The environment performs SSA-renaming of all tracked nodes at 22 // register file. The environment performs SSA-renaming of all tracked nodes at
22 // split and merge points in the control flow. 23 // split and merge points in the control flow.
(...skipping 1666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1689 void BytecodeGraphBuilder::VisitJumpIfToBooleanFalseConstant() { 1690 void BytecodeGraphBuilder::VisitJumpIfToBooleanFalseConstant() {
1690 BuildJumpIfToBooleanFalse(); 1691 BuildJumpIfToBooleanFalse();
1691 } 1692 }
1692 1693
1693 void BytecodeGraphBuilder::VisitJumpIfNotHole() { BuildJumpIfNotHole(); } 1694 void BytecodeGraphBuilder::VisitJumpIfNotHole() { BuildJumpIfNotHole(); }
1694 1695
1695 void BytecodeGraphBuilder::VisitJumpIfNotHoleConstant() { 1696 void BytecodeGraphBuilder::VisitJumpIfNotHoleConstant() {
1696 BuildJumpIfNotHole(); 1697 BuildJumpIfNotHole();
1697 } 1698 }
1698 1699
1700 void BytecodeGraphBuilder::VisitJumpIfJSReceiver() { BuildJumpIfJSReceiver(); }
1701
1702 void BytecodeGraphBuilder::VisitJumpIfJSReceiverConstant() {
1703 BuildJumpIfJSReceiver();
1704 }
1705
1699 void BytecodeGraphBuilder::VisitJumpIfNull() { 1706 void BytecodeGraphBuilder::VisitJumpIfNull() {
1700 BuildJumpIfEqual(jsgraph()->NullConstant()); 1707 BuildJumpIfEqual(jsgraph()->NullConstant());
1701 } 1708 }
1702 1709
1703 void BytecodeGraphBuilder::VisitJumpIfNullConstant() { 1710 void BytecodeGraphBuilder::VisitJumpIfNullConstant() {
1704 BuildJumpIfEqual(jsgraph()->NullConstant()); 1711 BuildJumpIfEqual(jsgraph()->NullConstant());
1705 } 1712 }
1706 1713
1707 void BytecodeGraphBuilder::VisitJumpIfUndefined() { 1714 void BytecodeGraphBuilder::VisitJumpIfUndefined() {
1708 BuildJumpIfEqual(jsgraph()->UndefinedConstant()); 1715 BuildJumpIfEqual(jsgraph()->UndefinedConstant());
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
2000 } 2007 }
2001 2008
2002 void BytecodeGraphBuilder::BuildJumpIfNotHole() { 2009 void BytecodeGraphBuilder::BuildJumpIfNotHole() {
2003 Node* accumulator = environment()->LookupAccumulator(); 2010 Node* accumulator = environment()->LookupAccumulator();
2004 Node* condition = 2011 Node* condition =
2005 NewNode(javascript()->StrictEqual(CompareOperationHint::kAny), 2012 NewNode(javascript()->StrictEqual(CompareOperationHint::kAny),
2006 accumulator, jsgraph()->TheHoleConstant()); 2013 accumulator, jsgraph()->TheHoleConstant());
2007 BuildJumpIfNot(condition); 2014 BuildJumpIfNot(condition);
2008 } 2015 }
2009 2016
2017 void BytecodeGraphBuilder::BuildJumpIfJSReceiver() {
2018 Node* accumulator = environment()->LookupAccumulator();
2019 Node* condition = NewNode(simplified()->ObjectIsReceiver(), accumulator);
2020 BuildJumpIf(condition);
2021 }
2022
2010 Node** BytecodeGraphBuilder::EnsureInputBufferSize(int size) { 2023 Node** BytecodeGraphBuilder::EnsureInputBufferSize(int size) {
2011 if (size > input_buffer_size_) { 2024 if (size > input_buffer_size_) {
2012 size = size + kInputBufferSizeIncrement + input_buffer_size_; 2025 size = size + kInputBufferSizeIncrement + input_buffer_size_;
2013 input_buffer_ = local_zone()->NewArray<Node*>(size); 2026 input_buffer_ = local_zone()->NewArray<Node*>(size);
2014 input_buffer_size_ = size; 2027 input_buffer_size_ = size;
2015 } 2028 }
2016 return input_buffer_; 2029 return input_buffer_;
2017 } 2030 }
2018 2031
2019 void BytecodeGraphBuilder::EnterAndExitExceptionHandlers(int current_offset) { 2032 void BytecodeGraphBuilder::EnterAndExitExceptionHandlers(int current_offset) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2202 it->source_position().ScriptOffset(), start_position_.InliningId())); 2215 it->source_position().ScriptOffset(), start_position_.InliningId()));
2203 it->Advance(); 2216 it->Advance();
2204 } else { 2217 } else {
2205 DCHECK_GT(it->code_offset(), offset); 2218 DCHECK_GT(it->code_offset(), offset);
2206 } 2219 }
2207 } 2220 }
2208 2221
2209 } // namespace compiler 2222 } // namespace compiler
2210 } // namespace internal 2223 } // namespace internal
2211 } // namespace v8 2224 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698