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

Side by Side Diff: src/compiler.cc

Issue 1312713004: Remove CompilationInfo::MayUseThis() and replace it with what we really want to know: MustReplaceUn… (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months 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.h ('k') | src/compiler/ast-graph-builder.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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.h" 5 #include "src/compiler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "src/ast-numbering.h" 9 #include "src/ast-numbering.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 // type feedback vector. 250 // type feedback vector.
251 CHECK(!feedback_vector_->SpecDiffersFrom(literal()->feedback_vector_spec())); 251 CHECK(!feedback_vector_->SpecDiffersFrom(literal()->feedback_vector_spec()));
252 } 252 }
253 253
254 254
255 bool CompilationInfo::has_simple_parameters() { 255 bool CompilationInfo::has_simple_parameters() {
256 return scope()->has_simple_parameters(); 256 return scope()->has_simple_parameters();
257 } 257 }
258 258
259 259
260 bool CompilationInfo::MayUseThis() const {
261 return scope()->has_this_declaration() && scope()->receiver()->is_used();
262 }
263
264
265 int CompilationInfo::TraceInlinedFunction(Handle<SharedFunctionInfo> shared, 260 int CompilationInfo::TraceInlinedFunction(Handle<SharedFunctionInfo> shared,
266 SourcePosition position, 261 SourcePosition position,
267 int parent_id) { 262 int parent_id) {
268 DCHECK(track_positions_); 263 DCHECK(track_positions_);
269 264
270 int inline_id = static_cast<int>(inlined_function_infos_.size()); 265 int inline_id = static_cast<int>(inlined_function_infos_.size());
271 InlinedFunctionInfo info(parent_id, position, UnboundScript::kNoScriptId, 266 InlinedFunctionInfo info(parent_id, position, UnboundScript::kNoScriptId,
272 shared->start_position()); 267 shared->start_position());
273 if (!shared->script()->IsUndefined()) { 268 if (!shared->script()->IsUndefined()) {
274 Handle<Script> script(Script::cast(shared->script())); 269 Handle<Script> script(Script::cast(shared->script()));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 base::SmartArrayPointer<char> name(new char[len]); 316 base::SmartArrayPointer<char> name(new char[len]);
322 memcpy(name.get(), code_stub_debug_name_, len); 317 memcpy(name.get(), code_stub_debug_name_, len);
323 return name; 318 return name;
324 } else { 319 } else {
325 AllowHandleDereference allow_deref; 320 AllowHandleDereference allow_deref;
326 return literal()->debug_name()->ToCString(); 321 return literal()->debug_name()->ToCString();
327 } 322 }
328 } 323 }
329 324
330 325
326 bool CompilationInfo::MustReplaceUndefinedReceiverWithGlobalProxy() {
327 return is_sloppy(language_mode()) && !is_native() &&
328 scope()->has_this_declaration() && scope()->receiver()->is_used();
329 }
330
331
331 class HOptimizedGraphBuilderWithPositions: public HOptimizedGraphBuilder { 332 class HOptimizedGraphBuilderWithPositions: public HOptimizedGraphBuilder {
332 public: 333 public:
333 explicit HOptimizedGraphBuilderWithPositions(CompilationInfo* info) 334 explicit HOptimizedGraphBuilderWithPositions(CompilationInfo* info)
334 : HOptimizedGraphBuilder(info) { 335 : HOptimizedGraphBuilder(info) {
335 } 336 }
336 337
337 #define DEF_VISIT(type) \ 338 #define DEF_VISIT(type) \
338 void Visit##type(type* node) override { \ 339 void Visit##type(type* node) override { \
339 SourcePosition old_position = SourcePosition::Unknown(); \ 340 SourcePosition old_position = SourcePosition::Unknown(); \
340 if (node->position() != RelocInfo::kNoPosition) { \ 341 if (node->position() != RelocInfo::kNoPosition) { \
(...skipping 1402 matching lines...) Expand 10 before | Expand all | Expand 10 after
1743 // character is in the FLAG_trace_phase command line parameter. 1744 // character is in the FLAG_trace_phase command line parameter.
1744 AllowHandleDereference allow_deref; 1745 AllowHandleDereference allow_deref;
1745 bool tracing_on = info()->IsStub() 1746 bool tracing_on = info()->IsStub()
1746 ? FLAG_trace_hydrogen_stubs 1747 ? FLAG_trace_hydrogen_stubs
1747 : (FLAG_trace_hydrogen && 1748 : (FLAG_trace_hydrogen &&
1748 info()->closure()->PassesFilter(FLAG_trace_hydrogen_filter)); 1749 info()->closure()->PassesFilter(FLAG_trace_hydrogen_filter));
1749 return (tracing_on && 1750 return (tracing_on &&
1750 base::OS::StrChr(const_cast<char*>(FLAG_trace_phase), name_[0]) != NULL); 1751 base::OS::StrChr(const_cast<char*>(FLAG_trace_phase), name_[0]) != NULL);
1751 } 1752 }
1752 1753
1753
1754 #if DEBUG 1754 #if DEBUG
1755 void CompilationInfo::PrintAstForTesting() { 1755 void CompilationInfo::PrintAstForTesting() {
1756 PrintF("--- Source from AST ---\n%s\n", 1756 PrintF("--- Source from AST ---\n%s\n",
1757 PrettyPrinter(isolate(), zone()).PrintProgram(literal())); 1757 PrettyPrinter(isolate(), zone()).PrintProgram(literal()));
1758 } 1758 }
1759 #endif 1759 #endif
1760 } // namespace internal 1760 } // namespace internal
1761 } // namespace v8 1761 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler.h ('k') | src/compiler/ast-graph-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698