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

Side by Side Diff: src/hydrogen.cc

Issue 6740023: Fix SlotRef::SlotAddress for parameters indices. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 3810 matching lines...) Expand 10 before | Expand all | Expand 10 after
3821 set_current_block(join); 3821 set_current_block(join);
3822 if (join->HasPredecessor()) { 3822 if (join->HasPredecessor()) {
3823 join->SetJoinId(expr->id()); 3823 join->SetJoinId(expr->id());
3824 if (!ast_context()->IsEffect()) ast_context()->ReturnValue(Pop()); 3824 if (!ast_context()->IsEffect()) ast_context()->ReturnValue(Pop());
3825 } 3825 }
3826 } 3826 }
3827 3827
3828 3828
3829 void HGraphBuilder::TraceInline(Handle<JSFunction> target, const char* reason) { 3829 void HGraphBuilder::TraceInline(Handle<JSFunction> target, const char* reason) {
3830 if (FLAG_trace_inlining) { 3830 if (FLAG_trace_inlining) {
3831 SmartPointer<char> callee = target->shared()->DebugName()->ToCString();
3832 SmartPointer<char> caller =
3833 info()->function()->debug_name()->ToCString();
3834 if (reason == NULL) { 3831 if (reason == NULL) {
3832 // We are currently in the context of inlined function thus we have
3833 // to go to an outer FunctionState to get caller.
3834 SmartPointer<char> callee = target->shared()->DebugName()->ToCString();
3835 SmartPointer<char> caller =
3836 function_state()->outer()->compilation_info()->function()->
3837 debug_name()->ToCString();
3835 PrintF("Inlined %s called from %s.\n", *callee, *caller); 3838 PrintF("Inlined %s called from %s.\n", *callee, *caller);
3836 } else { 3839 } else {
3840 SmartPointer<char> callee = target->shared()->DebugName()->ToCString();
3841 SmartPointer<char> caller =
3842 info()->function()->debug_name()->ToCString();
3837 PrintF("Did not inline %s called from %s (%s).\n", 3843 PrintF("Did not inline %s called from %s (%s).\n",
3838 *callee, *caller, reason); 3844 *callee, *caller, reason);
3839 } 3845 }
3840 } 3846 }
3841 } 3847 }
3842 3848
3843 3849
3844 bool HGraphBuilder::TryInline(Call* expr) { 3850 bool HGraphBuilder::TryInline(Call* expr) {
3845 if (!FLAG_use_inlining) return false; 3851 if (!FLAG_use_inlining) return false;
3846 3852
(...skipping 1239 matching lines...) Expand 10 before | Expand all | Expand 10 after
5086 5092
5087 void HGraphBuilder::GenerateIsStringWrapperSafeForDefaultValueOf( 5093 void HGraphBuilder::GenerateIsStringWrapperSafeForDefaultValueOf(
5088 CallRuntime* call) { 5094 CallRuntime* call) {
5089 BAILOUT("inlined runtime function: IsStringWrapperSafeForDefaultValueOf"); 5095 BAILOUT("inlined runtime function: IsStringWrapperSafeForDefaultValueOf");
5090 } 5096 }
5091 5097
5092 5098
5093 // Support for construct call checks. 5099 // Support for construct call checks.
5094 void HGraphBuilder::GenerateIsConstructCall(CallRuntime* call) { 5100 void HGraphBuilder::GenerateIsConstructCall(CallRuntime* call) {
5095 ASSERT(call->arguments()->length() == 0); 5101 ASSERT(call->arguments()->length() == 0);
5096 ast_context()->ReturnInstruction(new HIsConstructCall, call->id()); 5102 if (function_state()->outer() != NULL) {
5103 // We are generating graph for inlined function. Currently
5104 // constructor inlining is not supported and we can just return
5105 // false from %_IsConstructCall().
5106 ast_context()->ReturnValue(graph()->GetConstantFalse());
5107 } else {
5108 ast_context()->ReturnInstruction(new HIsConstructCall, call->id());
5109 }
5097 } 5110 }
5098 5111
5099 5112
5100 // Support for arguments.length and arguments[?]. 5113 // Support for arguments.length and arguments[?].
5101 void HGraphBuilder::GenerateArgumentsLength(CallRuntime* call) { 5114 void HGraphBuilder::GenerateArgumentsLength(CallRuntime* call) {
5102 ASSERT(call->arguments()->length() == 0); 5115 ASSERT(call->arguments()->length() == 0);
5103 HInstruction* elements = AddInstruction(new HArgumentsElements); 5116 HInstruction* elements = AddInstruction(new HArgumentsElements);
5104 HArgumentsLength* result = new HArgumentsLength(elements); 5117 HArgumentsLength* result = new HArgumentsLength(elements);
5105 ast_context()->ReturnInstruction(result, call->id()); 5118 ast_context()->ReturnInstruction(result, call->id());
5106 } 5119 }
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
5891 } 5904 }
5892 } 5905 }
5893 5906
5894 #ifdef DEBUG 5907 #ifdef DEBUG
5895 if (graph_ != NULL) graph_->Verify(); 5908 if (graph_ != NULL) graph_->Verify();
5896 if (allocator_ != NULL) allocator_->Verify(); 5909 if (allocator_ != NULL) allocator_->Verify();
5897 #endif 5910 #endif
5898 } 5911 }
5899 5912
5900 } } // namespace v8::internal 5913 } } // namespace v8::internal
OLDNEW
« src/deoptimizer.h ('K') | « src/hydrogen.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698