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

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

Issue 678843004: Use shared function info for eval cache key. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/compiler.cc ('k') | src/ia32/full-codegen-ia32.cc » ('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/ast-graph-builder.h" 5 #include "src/compiler/ast-graph-builder.h"
6 6
7 #include "src/compiler.h" 7 #include "src/compiler.h"
8 #include "src/compiler/control-builders.h" 8 #include "src/compiler/control-builders.h"
9 #include "src/compiler/machine-operator.h" 9 #include "src/compiler/machine-operator.h"
10 #include "src/compiler/node-properties.h" 10 #include "src/compiler/node-properties.h"
(...skipping 1290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 // will mutate the callee and receiver values pushed onto the environment. 1301 // will mutate the callee and receiver values pushed onto the environment.
1302 if (possibly_eval && args->length() > 0) { 1302 if (possibly_eval && args->length() > 0) {
1303 int arg_count = args->length(); 1303 int arg_count = args->length();
1304 1304
1305 // Extract callee and source string from the environment. 1305 // Extract callee and source string from the environment.
1306 Node* callee = environment()->Peek(arg_count + 1); 1306 Node* callee = environment()->Peek(arg_count + 1);
1307 Node* source = environment()->Peek(arg_count - 1); 1307 Node* source = environment()->Peek(arg_count - 1);
1308 1308
1309 // Create node to ask for help resolving potential eval call. This will 1309 // Create node to ask for help resolving potential eval call. This will
1310 // provide a fully resolved callee and the corresponding receiver. 1310 // provide a fully resolved callee and the corresponding receiver.
1311 Node* function = GetFunctionClosure();
1311 Node* receiver = environment()->Lookup(info()->scope()->receiver()); 1312 Node* receiver = environment()->Lookup(info()->scope()->receiver());
1312 Node* strict = jsgraph()->Constant(strict_mode()); 1313 Node* strict = jsgraph()->Constant(strict_mode());
1313 Node* position = jsgraph()->Constant(info()->scope()->start_position()); 1314 Node* position = jsgraph()->Constant(info()->scope()->start_position());
1314 const Operator* op = 1315 const Operator* op =
1315 javascript()->CallRuntime(Runtime::kResolvePossiblyDirectEval, 5); 1316 javascript()->CallRuntime(Runtime::kResolvePossiblyDirectEval, 6);
1316 Node* pair = NewNode(op, callee, source, receiver, strict, position); 1317 Node* pair =
1318 NewNode(op, callee, source, function, receiver, strict, position);
1317 PrepareFrameState(pair, expr->EvalOrLookupId(), 1319 PrepareFrameState(pair, expr->EvalOrLookupId(),
1318 OutputFrameStateCombine::PokeAt(arg_count + 1)); 1320 OutputFrameStateCombine::PokeAt(arg_count + 1));
1319 Node* new_callee = NewNode(common()->Projection(0), pair); 1321 Node* new_callee = NewNode(common()->Projection(0), pair);
1320 Node* new_receiver = NewNode(common()->Projection(1), pair); 1322 Node* new_receiver = NewNode(common()->Projection(1), pair);
1321 1323
1322 // Patch callee and receiver on the environment. 1324 // Patch callee and receiver on the environment.
1323 environment()->Poke(arg_count + 1, new_callee); 1325 environment()->Poke(arg_count + 1, new_callee);
1324 environment()->Poke(arg_count + 0, new_receiver); 1326 environment()->Poke(arg_count + 0, new_receiver);
1325 } 1327 }
1326 1328
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after
2128 DCHECK(NodeProperties::GetFrameStateInput(node)->opcode() == 2130 DCHECK(NodeProperties::GetFrameStateInput(node)->opcode() ==
2129 IrOpcode::kDead); 2131 IrOpcode::kDead);
2130 NodeProperties::ReplaceFrameStateInput( 2132 NodeProperties::ReplaceFrameStateInput(
2131 node, environment()->Checkpoint(ast_id, combine)); 2133 node, environment()->Checkpoint(ast_id, combine));
2132 } 2134 }
2133 } 2135 }
2134 2136
2135 } 2137 }
2136 } 2138 }
2137 } // namespace v8::internal::compiler 2139 } // namespace v8::internal::compiler
OLDNEW
« no previous file with comments | « src/compiler.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698