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

Side by Side Diff: src/code-stubs.cc

Issue 172523002: Create a function call IC (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments. Created 6 years, 9 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 static_cast<OverwriteMode>(mode)); 222 static_cast<OverwriteMode>(mode));
223 stub.GetCode(isolate); 223 stub.GetCode(isolate);
224 } 224 }
225 } 225 }
226 226
227 // Generate special versions of the stub. 227 // Generate special versions of the stub.
228 BinaryOpIC::State::GenerateAheadOfTime(isolate, &GenerateAheadOfTime); 228 BinaryOpIC::State::GenerateAheadOfTime(isolate, &GenerateAheadOfTime);
229 } 229 }
230 230
231 231
232 void CallICStub::GenerateAheadOfTime(Isolate* isolate) {
233 // Generate the uninitialized versions of the stub.
234 for (int arg_count = 0; arg_count < 4; arg_count++) {
235 CallICStub stub(CallIC::State::DefaultCallState(arg_count, CallIC::METHOD));
236 stub.GetCode(isolate);
237 CallICStub stub2(CallIC::State::DefaultCallState(arg_count,
238 CallIC::FUNCTION));
239 stub2.GetCode(isolate);
240 }
241 }
242
243
232 void BinaryOpICStub::PrintState(StringStream* stream) { 244 void BinaryOpICStub::PrintState(StringStream* stream) {
233 state_.Print(stream); 245 state_.Print(stream);
234 } 246 }
235 247
236 248
237 // static 249 // static
238 void BinaryOpICStub::GenerateAheadOfTime(Isolate* isolate, 250 void BinaryOpICStub::GenerateAheadOfTime(Isolate* isolate,
239 const BinaryOpIC::State& state) { 251 const BinaryOpIC::State& state) {
240 BinaryOpICStub stub(state); 252 BinaryOpICStub stub(state);
241 stub.GetCode(isolate); 253 stub.GetCode(isolate);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 506
495 507
496 Type* CompareNilICStub::GetInputType(Zone* zone, Handle<Map> map) { 508 Type* CompareNilICStub::GetInputType(Zone* zone, Handle<Map> map) {
497 Type* output_type = GetType(zone, map); 509 Type* output_type = GetType(zone, map);
498 Type* nil_type = 510 Type* nil_type =
499 nil_value_ == kNullValue ? Type::Null(zone) : Type::Undefined(zone); 511 nil_value_ == kNullValue ? Type::Null(zone) : Type::Undefined(zone);
500 return Type::Union(output_type, nil_type, zone); 512 return Type::Union(output_type, nil_type, zone);
501 } 513 }
502 514
503 515
516 void CallICStub::PrintState(StringStream* stream) {
517 state_.Print(stream);
518 }
519
520
504 void InstanceofStub::PrintName(StringStream* stream) { 521 void InstanceofStub::PrintName(StringStream* stream) {
505 const char* args = ""; 522 const char* args = "";
506 if (HasArgsInRegisters()) { 523 if (HasArgsInRegisters()) {
507 args = "_REGS"; 524 args = "_REGS";
508 } 525 }
509 526
510 const char* inline_check = ""; 527 const char* inline_check = "";
511 if (HasCallSiteInlineCheck()) { 528 if (HasCallSiteInlineCheck()) {
512 inline_check = "_INLINE"; 529 inline_check = "_INLINE";
513 } 530 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 case READ_ELEMENT: stream->Add("ReadElement"); break; 593 case READ_ELEMENT: stream->Add("ReadElement"); break;
577 case NEW_SLOPPY_FAST: stream->Add("NewSloppyFast"); break; 594 case NEW_SLOPPY_FAST: stream->Add("NewSloppyFast"); break;
578 case NEW_SLOPPY_SLOW: stream->Add("NewSloppySlow"); break; 595 case NEW_SLOPPY_SLOW: stream->Add("NewSloppySlow"); break;
579 case NEW_STRICT: stream->Add("NewStrict"); break; 596 case NEW_STRICT: stream->Add("NewStrict"); break;
580 } 597 }
581 } 598 }
582 599
583 600
584 void CallFunctionStub::PrintName(StringStream* stream) { 601 void CallFunctionStub::PrintName(StringStream* stream) {
585 stream->Add("CallFunctionStub_Args%d", argc_); 602 stream->Add("CallFunctionStub_Args%d", argc_);
586 if (RecordCallTarget()) stream->Add("_Recording");
587 } 603 }
588 604
589 605
590 void CallConstructStub::PrintName(StringStream* stream) { 606 void CallConstructStub::PrintName(StringStream* stream) {
591 stream->Add("CallConstructStub"); 607 stream->Add("CallConstructStub");
592 if (RecordCallTarget()) stream->Add("_Recording"); 608 if (RecordCallTarget()) stream->Add("_Recording");
593 } 609 }
594 610
595 611
596 void ArrayConstructorStub::PrintName(StringStream* stream) { 612 void ArrayConstructorStub::PrintName(StringStream* stream) {
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 InstallDescriptor(isolate, &stub3); 831 InstallDescriptor(isolate, &stub3);
816 } 832 }
817 833
818 InternalArrayConstructorStub::InternalArrayConstructorStub( 834 InternalArrayConstructorStub::InternalArrayConstructorStub(
819 Isolate* isolate) { 835 Isolate* isolate) {
820 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); 836 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate);
821 } 837 }
822 838
823 839
824 } } // namespace v8::internal 840 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698