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

Side by Side Diff: src/hydrogen.cc

Issue 136403005: Remove CALL_AS_FUNCTION and CALL_AS_METHOD. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Don't store/restore ecx/rcx/r5 given that it doesn't contain callkind anymore Created 6 years, 11 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
« no previous file with comments | « src/hydrogen.h ('k') | src/ia32/builtins-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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 7051 matching lines...) Expand 10 before | Expand all | Expand 10 after
7062 if (target_shared->dont_inline() || target_shared->dont_optimize()) { 7062 if (target_shared->dont_inline() || target_shared->dont_optimize()) {
7063 TraceInline(target, caller, "target contains unsupported syntax [early]"); 7063 TraceInline(target, caller, "target contains unsupported syntax [early]");
7064 return kNotInlinable; 7064 return kNotInlinable;
7065 } 7065 }
7066 7066
7067 int nodes_added = target_shared->ast_node_count(); 7067 int nodes_added = target_shared->ast_node_count();
7068 return nodes_added; 7068 return nodes_added;
7069 } 7069 }
7070 7070
7071 7071
7072 bool HOptimizedGraphBuilder::TryInline(CallKind call_kind, 7072 bool HOptimizedGraphBuilder::TryInline(Handle<JSFunction> target,
7073 Handle<JSFunction> target,
7074 int arguments_count, 7073 int arguments_count,
7075 HValue* implicit_return_value, 7074 HValue* implicit_return_value,
7076 BailoutId ast_id, 7075 BailoutId ast_id,
7077 BailoutId return_id, 7076 BailoutId return_id,
7078 InliningKind inlining_kind) { 7077 InliningKind inlining_kind) {
7079 int nodes_added = InliningAstSize(target); 7078 int nodes_added = InliningAstSize(target);
7080 if (nodes_added == kNotInlinable) return false; 7079 if (nodes_added == kNotInlinable) return false;
7081 7080
7082 Handle<JSFunction> caller = current_info()->closure(); 7081 Handle<JSFunction> caller = current_info()->closure();
7083 7082
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
7346 set_current_block(function_return()); 7345 set_current_block(function_return());
7347 } else { 7346 } else {
7348 set_current_block(NULL); 7347 set_current_block(NULL);
7349 } 7348 }
7350 delete target_state; 7349 delete target_state;
7351 return true; 7350 return true;
7352 } 7351 }
7353 7352
7354 7353
7355 bool HOptimizedGraphBuilder::TryInlineCall(Call* expr, bool drop_extra) { 7354 bool HOptimizedGraphBuilder::TryInlineCall(Call* expr, bool drop_extra) {
7356 // The function call we are inlining is a method call if the call 7355 return TryInline(expr->target(),
7357 // is a property call.
7358 CallKind call_kind = (expr->expression()->AsProperty() == NULL)
7359 ? CALL_AS_FUNCTION
7360 : CALL_AS_METHOD;
7361
7362 return TryInline(call_kind,
7363 expr->target(),
7364 expr->arguments()->length(), 7356 expr->arguments()->length(),
7365 NULL, 7357 NULL,
7366 expr->id(), 7358 expr->id(),
7367 expr->ReturnId(), 7359 expr->ReturnId(),
7368 drop_extra ? DROP_EXTRA_ON_RETURN : NORMAL_RETURN); 7360 drop_extra ? DROP_EXTRA_ON_RETURN : NORMAL_RETURN);
7369 } 7361 }
7370 7362
7371 7363
7372 bool HOptimizedGraphBuilder::TryInlineConstruct(CallNew* expr, 7364 bool HOptimizedGraphBuilder::TryInlineConstruct(CallNew* expr,
7373 HValue* implicit_return_value) { 7365 HValue* implicit_return_value) {
7374 return TryInline(CALL_AS_FUNCTION, 7366 return TryInline(expr->target(),
7375 expr->target(),
7376 expr->arguments()->length(), 7367 expr->arguments()->length(),
7377 implicit_return_value, 7368 implicit_return_value,
7378 expr->id(), 7369 expr->id(),
7379 expr->ReturnId(), 7370 expr->ReturnId(),
7380 CONSTRUCT_CALL_RETURN); 7371 CONSTRUCT_CALL_RETURN);
7381 } 7372 }
7382 7373
7383 7374
7384 bool HOptimizedGraphBuilder::TryInlineGetter(Handle<JSFunction> getter, 7375 bool HOptimizedGraphBuilder::TryInlineGetter(Handle<JSFunction> getter,
7385 BailoutId ast_id, 7376 BailoutId ast_id,
7386 BailoutId return_id) { 7377 BailoutId return_id) {
7387 return TryInline(CALL_AS_METHOD, 7378 return TryInline(getter,
7388 getter,
7389 0, 7379 0,
7390 NULL, 7380 NULL,
7391 ast_id, 7381 ast_id,
7392 return_id, 7382 return_id,
7393 GETTER_CALL_RETURN); 7383 GETTER_CALL_RETURN);
7394 } 7384 }
7395 7385
7396 7386
7397 bool HOptimizedGraphBuilder::TryInlineSetter(Handle<JSFunction> setter, 7387 bool HOptimizedGraphBuilder::TryInlineSetter(Handle<JSFunction> setter,
7398 BailoutId id, 7388 BailoutId id,
7399 BailoutId assignment_id, 7389 BailoutId assignment_id,
7400 HValue* implicit_return_value) { 7390 HValue* implicit_return_value) {
7401 return TryInline(CALL_AS_METHOD, 7391 return TryInline(setter,
7402 setter,
7403 1, 7392 1,
7404 implicit_return_value, 7393 implicit_return_value,
7405 id, assignment_id, 7394 id, assignment_id,
7406 SETTER_CALL_RETURN); 7395 SETTER_CALL_RETURN);
7407 } 7396 }
7408 7397
7409 7398
7410 bool HOptimizedGraphBuilder::TryInlineApply(Handle<JSFunction> function, 7399 bool HOptimizedGraphBuilder::TryInlineApply(Handle<JSFunction> function,
7411 Call* expr, 7400 Call* expr,
7412 int arguments_count) { 7401 int arguments_count) {
7413 return TryInline(CALL_AS_METHOD, 7402 return TryInline(function,
7414 function,
7415 arguments_count, 7403 arguments_count,
7416 NULL, 7404 NULL,
7417 expr->id(), 7405 expr->id(),
7418 expr->ReturnId(), 7406 expr->ReturnId(),
7419 NORMAL_RETURN); 7407 NORMAL_RETURN);
7420 } 7408 }
7421 7409
7422 7410
7423 bool HOptimizedGraphBuilder::TryInlineBuiltinFunctionCall(Call* expr, 7411 bool HOptimizedGraphBuilder::TryInlineBuiltinFunctionCall(Call* expr,
7424 bool drop_extra) { 7412 bool drop_extra) {
(...skipping 3541 matching lines...) Expand 10 before | Expand all | Expand 10 after
10966 if (ShouldProduceTraceOutput()) { 10954 if (ShouldProduceTraceOutput()) {
10967 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 10955 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
10968 } 10956 }
10969 10957
10970 #ifdef DEBUG 10958 #ifdef DEBUG
10971 graph_->Verify(false); // No full verify. 10959 graph_->Verify(false); // No full verify.
10972 #endif 10960 #endif
10973 } 10961 }
10974 10962
10975 } } // namespace v8::internal 10963 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/hydrogen.h ('k') | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698