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

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

Issue 8041035: Tighten up assertions checking GC-safety of stub calls. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 2 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 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 // operation result to the caller of the stub. 766 // operation result to the caller of the stub.
767 __ TailCallExternalReference( 767 __ TailCallExternalReference(
768 ExternalReference(IC_Utility(IC::kBinaryOp_Patch), 768 ExternalReference(IC_Utility(IC::kBinaryOp_Patch),
769 masm->isolate()), 769 masm->isolate()),
770 5, 770 5,
771 1); 771 1);
772 } 772 }
773 773
774 774
775 void BinaryOpStub::Generate(MacroAssembler* masm) { 775 void BinaryOpStub::Generate(MacroAssembler* masm) {
776 // Explicitly allow generation of nested stubs. It is safe here.
777 AllowStubCallsScope allow_stub_calls(masm, true);
778
776 switch (operands_type_) { 779 switch (operands_type_) {
777 case BinaryOpIC::UNINITIALIZED: 780 case BinaryOpIC::UNINITIALIZED:
778 GenerateTypeTransition(masm); 781 GenerateTypeTransition(masm);
779 break; 782 break;
780 case BinaryOpIC::SMI: 783 case BinaryOpIC::SMI:
781 GenerateSmiStub(masm); 784 GenerateSmiStub(masm);
782 break; 785 break;
783 case BinaryOpIC::INT32: 786 case BinaryOpIC::INT32:
784 UNREACHABLE(); 787 UNREACHABLE();
785 // The int32 case is identical to the Smi case. We avoid creating this 788 // The int32 case is identical to the Smi case. We avoid creating this
(...skipping 2556 matching lines...) Expand 10 before | Expand all | Expand 10 after
3342 Isolate::Current()->builtins()->ArgumentsAdaptorTrampoline(); 3345 Isolate::Current()->builtins()->ArgumentsAdaptorTrampoline();
3343 __ Jump(adaptor, RelocInfo::CODE_TARGET); 3346 __ Jump(adaptor, RelocInfo::CODE_TARGET);
3344 } 3347 }
3345 3348
3346 3349
3347 bool CEntryStub::NeedsImmovableCode() { 3350 bool CEntryStub::NeedsImmovableCode() {
3348 return false; 3351 return false;
3349 } 3352 }
3350 3353
3351 3354
3352 bool CEntryStub::CompilingCallsToThisStubIsGCSafe() { 3355 bool CEntryStub::IsPregenerated() {
3353 return result_size_ == 1; 3356 return result_size_ == 1;
3354 } 3357 }
3355 3358
3356 3359
3357 void CodeStub::GenerateStubsAheadOfTime() { 3360 void CodeStub::GenerateStubsAheadOfTime() {
3358 CEntryStub save_doubles(1, kSaveFPRegs); 3361 CEntryStub save_doubles(1, kSaveFPRegs);
3359 save_doubles.GetCode(); 3362 save_doubles.GetCode();
3360 StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(); 3363 StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime();
3361 // It is important that the store buffer overflow stubs are generated first. 3364 // It is important that the store buffer overflow stubs are generated first.
3362 RecordWriteStub::GenerateFixedRegStubsAheadOfTime(); 3365 RecordWriteStub::GenerateFixedRegStubsAheadOfTime();
(...skipping 2208 matching lines...) Expand 10 before | Expand all | Expand 10 after
5571 { rbx, r8, r9, EMIT_REMEMBERED_SET }, 5574 { rbx, r8, r9, EMIT_REMEMBERED_SET },
5572 // KeyedStoreIC::GenerateGeneric. 5575 // KeyedStoreIC::GenerateGeneric.
5573 { rbx, rdx, rcx, EMIT_REMEMBERED_SET}, 5576 { rbx, rdx, rcx, EMIT_REMEMBERED_SET},
5574 // KeyedStoreStubCompiler::GenerateStoreFastElement. 5577 // KeyedStoreStubCompiler::GenerateStoreFastElement.
5575 { rdi, rdx, rcx, EMIT_REMEMBERED_SET}, 5578 { rdi, rdx, rcx, EMIT_REMEMBERED_SET},
5576 // Null termination. 5579 // Null termination.
5577 { no_reg, no_reg, no_reg, EMIT_REMEMBERED_SET} 5580 { no_reg, no_reg, no_reg, EMIT_REMEMBERED_SET}
5578 }; 5581 };
5579 5582
5580 5583
5581 bool RecordWriteStub::CompilingCallsToThisStubIsGCSafe() { 5584 bool RecordWriteStub::IsPregenerated() {
5582 for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; 5585 for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime;
5583 !entry->object.is(no_reg); 5586 !entry->object.is(no_reg);
5584 entry++) { 5587 entry++) {
5585 if (object_.is(entry->object) && 5588 if (object_.is(entry->object) &&
5586 value_.is(entry->value) && 5589 value_.is(entry->value) &&
5587 address_.is(entry->address) && 5590 address_.is(entry->address) &&
5588 remembered_set_action_ == entry->action && 5591 remembered_set_action_ == entry->action &&
5589 save_fp_regs_mode_ == kDontSaveFPRegs) { 5592 save_fp_regs_mode_ == kDontSaveFPRegs) {
5590 return true; 5593 return true;
5591 } 5594 }
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
5819 5822
5820 // Fall through when we need to inform the incremental marker. 5823 // Fall through when we need to inform the incremental marker.
5821 } 5824 }
5822 5825
5823 5826
5824 #undef __ 5827 #undef __
5825 5828
5826 } } // namespace v8::internal 5829 } } // namespace v8::internal
5827 5830
5828 #endif // V8_TARGET_ARCH_X64 5831 #endif // V8_TARGET_ARCH_X64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698