Chromium Code Reviews| Index: src/compiler/bytecode-graph-builder.cc |
| diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
| index c03b8962c58c39f28fcb1aa9d9a4c0569c5acae5..7c87e475e215fd2bae2ebbbea678bd2968732645 100644 |
| --- a/src/compiler/bytecode-graph-builder.cc |
| +++ b/src/compiler/bytecode-graph-builder.cc |
| @@ -915,6 +915,33 @@ void BytecodeGraphBuilder::VisitLdaLookupContextSlotInsideTypeof() { |
| BuildLdaLookupContextSlot(TypeofMode::INSIDE_TYPEOF); |
| } |
| +void BytecodeGraphBuilder::BuildLdaLookupGlobalSlot(TypeofMode typeof_mode) { |
| + // TODO(leszeks): Build the fast path here |
|
rmcilroy
2016/09/19 09:04:29
fullstops on comments.
Leszek Swirski
2016/09/19 10:34:51
Damn it. Done.
|
| + |
| + // Slow path, do a runtime load lookup |
| + { |
| + FrameStateBeforeAndAfter states(this); |
| + |
| + Node* name = |
| + jsgraph()->Constant(bytecode_iterator().GetConstantForIndexOperand(0)); |
| + |
| + const Operator* op = |
| + javascript()->CallRuntime(typeof_mode == TypeofMode::NOT_INSIDE_TYPEOF |
| + ? Runtime::kLoadLookupSlot |
| + : Runtime::kLoadLookupSlotInsideTypeof); |
| + Node* value = NewNode(op, name); |
| + environment()->BindAccumulator(value, &states); |
| + } |
| +} |
| + |
| +void BytecodeGraphBuilder::VisitLdaLookupGlobalSlot() { |
| + BuildLdaLookupGlobalSlot(TypeofMode::NOT_INSIDE_TYPEOF); |
| +} |
| + |
| +void BytecodeGraphBuilder::VisitLdaLookupGlobalSlotInsideTypeof() { |
| + BuildLdaLookupGlobalSlot(TypeofMode::INSIDE_TYPEOF); |
| +} |
| + |
| void BytecodeGraphBuilder::BuildStaLookupSlot(LanguageMode language_mode) { |
| FrameStateBeforeAndAfter states(this); |
| Node* value = environment()->LookupAccumulator(); |