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

Side by Side Diff: src/compiler/js-typed-lowering.cc

Issue 2489863003: [compiler,modules] Introduce JS operators for module loads and stores. (Closed)
Patch Set: Remove unused variable. Created 4 years, 1 month 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
« no previous file with comments | « src/compiler/js-typed-lowering.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/compiler/js-typed-lowering.h" 5 #include "src/compiler/js-typed-lowering.h"
6 6
7 #include "src/ast/modules.h"
7 #include "src/builtins/builtins-utils.h" 8 #include "src/builtins/builtins-utils.h"
8 #include "src/code-factory.h" 9 #include "src/code-factory.h"
9 #include "src/compilation-dependencies.h" 10 #include "src/compilation-dependencies.h"
10 #include "src/compiler/access-builder.h" 11 #include "src/compiler/access-builder.h"
11 #include "src/compiler/js-graph.h" 12 #include "src/compiler/js-graph.h"
12 #include "src/compiler/linkage.h" 13 #include "src/compiler/linkage.h"
13 #include "src/compiler/node-matchers.h" 14 #include "src/compiler/node-matchers.h"
14 #include "src/compiler/node-properties.h" 15 #include "src/compiler/node-properties.h"
15 #include "src/compiler/operator-properties.h" 16 #include "src/compiler/operator-properties.h"
16 #include "src/compiler/type-cache.h" 17 #include "src/compiler/type-cache.h"
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 node->ReplaceInput(0, previous); 1483 node->ReplaceInput(0, previous);
1483 } 1484 }
1484 node->RemoveInput(2); 1485 node->RemoveInput(2);
1485 node->ReplaceInput(2, effect); 1486 node->ReplaceInput(2, effect);
1486 NodeProperties::ChangeOp( 1487 NodeProperties::ChangeOp(
1487 node, 1488 node,
1488 simplified()->StoreField(AccessBuilder::ForContextSlot(access.index()))); 1489 simplified()->StoreField(AccessBuilder::ForContextSlot(access.index())));
1489 return Changed(node); 1490 return Changed(node);
1490 } 1491 }
1491 1492
1493 Reduction JSTypedLowering::ReduceJSLoadModule(Node* node) {
1494 DCHECK_EQ(IrOpcode::kJSLoadModule, node->opcode());
1495 Node* effect = NodeProperties::GetEffectInput(node);
1496 Node* control = NodeProperties::GetControlInput(node);
1497
1498 int32_t cell_index = OpParameter<int32_t>(node);
1499 Node* module = NodeProperties::GetValueInput(node, 0);
1500
1501 Node* array;
1502 int index;
1503 if (ModuleDescriptor::GetCellIndexKind(cell_index) ==
1504 ModuleDescriptor::kExport) {
1505 array = effect = graph()->NewNode(
1506 simplified()->LoadField(AccessBuilder::ForModuleRegularExports()),
1507 module, effect, control);
1508 index = cell_index - 1;
1509 } else {
1510 DCHECK_EQ(ModuleDescriptor::GetCellIndexKind(cell_index),
1511 ModuleDescriptor::kImport);
1512 array = effect = graph()->NewNode(
1513 simplified()->LoadField(AccessBuilder::ForModuleRegularImports()),
1514 module, effect, control);
1515 index = -cell_index - 1;
1516 }
1517
1518 Node* cell = effect = graph()->NewNode(
1519 simplified()->LoadField(AccessBuilder::ForFixedArraySlot(index)), array,
1520 effect, control);
1521
1522 Node* value = effect =
1523 graph()->NewNode(simplified()->LoadField(AccessBuilder::ForCellValue()),
1524 cell, effect, control);
1525
1526 ReplaceWithValue(node, value, effect, control);
1527 return Changed(value);
1528 }
1529
1530 Reduction JSTypedLowering::ReduceJSStoreModule(Node* node) {
1531 DCHECK_EQ(IrOpcode::kJSStoreModule, node->opcode());
1532 Node* effect = NodeProperties::GetEffectInput(node);
1533 Node* control = NodeProperties::GetControlInput(node);
1534
1535 int32_t cell_index = OpParameter<int32_t>(node);
1536 Node* module = NodeProperties::GetValueInput(node, 0);
1537 Node* value = NodeProperties::GetValueInput(node, 1);
1538
1539 Node* array;
1540 int index;
1541 if (ModuleDescriptor::GetCellIndexKind(cell_index) ==
1542 ModuleDescriptor::kExport) {
1543 array = effect = graph()->NewNode(
1544 simplified()->LoadField(AccessBuilder::ForModuleRegularExports()),
1545 module, effect, control);
1546 index = cell_index - 1;
1547 } else {
1548 DCHECK_EQ(ModuleDescriptor::GetCellIndexKind(cell_index),
1549 ModuleDescriptor::kImport);
1550 array = effect = graph()->NewNode(
1551 simplified()->LoadField(AccessBuilder::ForModuleRegularImports()),
1552 module, effect, control);
1553 index = -cell_index - 1;
1554 }
1555
1556 Node* cell = effect = graph()->NewNode(
1557 simplified()->LoadField(AccessBuilder::ForFixedArraySlot(index)), array,
1558 effect, control);
1559
1560 effect =
1561 graph()->NewNode(simplified()->StoreField(AccessBuilder::ForCellValue()),
1562 cell, value, effect, control);
1563
1564 ReplaceWithValue(node, effect, effect, control);
1565 return Changed(value);
1566 }
1567
1492 Reduction JSTypedLowering::ReduceJSConvertReceiver(Node* node) { 1568 Reduction JSTypedLowering::ReduceJSConvertReceiver(Node* node) {
1493 DCHECK_EQ(IrOpcode::kJSConvertReceiver, node->opcode()); 1569 DCHECK_EQ(IrOpcode::kJSConvertReceiver, node->opcode());
1494 ConvertReceiverMode mode = ConvertReceiverModeOf(node->op()); 1570 ConvertReceiverMode mode = ConvertReceiverModeOf(node->op());
1495 Node* receiver = NodeProperties::GetValueInput(node, 0); 1571 Node* receiver = NodeProperties::GetValueInput(node, 0);
1496 Type* receiver_type = NodeProperties::GetType(receiver); 1572 Type* receiver_type = NodeProperties::GetType(receiver);
1497 Node* context = NodeProperties::GetContextInput(node); 1573 Node* context = NodeProperties::GetContextInput(node);
1498 Type* context_type = NodeProperties::GetType(context); 1574 Type* context_type = NodeProperties::GetType(context);
1499 Node* frame_state = NodeProperties::GetFrameStateInput(node); 1575 Node* frame_state = NodeProperties::GetFrameStateInput(node);
1500 Node* effect = NodeProperties::GetEffectInput(node); 1576 Node* effect = NodeProperties::GetEffectInput(node);
1501 Node* control = NodeProperties::GetControlInput(node); 1577 Node* control = NodeProperties::GetControlInput(node);
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 case IrOpcode::kJSLoadProperty: 2195 case IrOpcode::kJSLoadProperty:
2120 return ReduceJSLoadProperty(node); 2196 return ReduceJSLoadProperty(node);
2121 case IrOpcode::kJSStoreProperty: 2197 case IrOpcode::kJSStoreProperty:
2122 return ReduceJSStoreProperty(node); 2198 return ReduceJSStoreProperty(node);
2123 case IrOpcode::kJSInstanceOf: 2199 case IrOpcode::kJSInstanceOf:
2124 return ReduceJSInstanceOf(node); 2200 return ReduceJSInstanceOf(node);
2125 case IrOpcode::kJSLoadContext: 2201 case IrOpcode::kJSLoadContext:
2126 return ReduceJSLoadContext(node); 2202 return ReduceJSLoadContext(node);
2127 case IrOpcode::kJSStoreContext: 2203 case IrOpcode::kJSStoreContext:
2128 return ReduceJSStoreContext(node); 2204 return ReduceJSStoreContext(node);
2205 case IrOpcode::kJSLoadModule:
2206 return ReduceJSLoadModule(node);
2207 case IrOpcode::kJSStoreModule:
2208 return ReduceJSStoreModule(node);
2129 case IrOpcode::kJSConvertReceiver: 2209 case IrOpcode::kJSConvertReceiver:
2130 return ReduceJSConvertReceiver(node); 2210 return ReduceJSConvertReceiver(node);
2131 case IrOpcode::kJSCallConstruct: 2211 case IrOpcode::kJSCallConstruct:
2132 return ReduceJSCallConstruct(node); 2212 return ReduceJSCallConstruct(node);
2133 case IrOpcode::kJSCallFunction: 2213 case IrOpcode::kJSCallFunction:
2134 return ReduceJSCallFunction(node); 2214 return ReduceJSCallFunction(node);
2135 case IrOpcode::kJSForInNext: 2215 case IrOpcode::kJSForInNext:
2136 return ReduceJSForInNext(node); 2216 return ReduceJSForInNext(node);
2137 case IrOpcode::kJSGeneratorStore: 2217 case IrOpcode::kJSGeneratorStore:
2138 return ReduceJSGeneratorStore(node); 2218 return ReduceJSGeneratorStore(node);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2170 } 2250 }
2171 2251
2172 2252
2173 CompilationDependencies* JSTypedLowering::dependencies() const { 2253 CompilationDependencies* JSTypedLowering::dependencies() const {
2174 return dependencies_; 2254 return dependencies_;
2175 } 2255 }
2176 2256
2177 } // namespace compiler 2257 } // namespace compiler
2178 } // namespace internal 2258 } // namespace internal
2179 } // namespace v8 2259 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-typed-lowering.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698