From cefa4cc148aef6cdbddf5300949027c50acc5d25 Mon Sep 17 00:00:00 2001 From: "kmillikin@chromium.org" Date: Wed, 9 Nov 2011 15:44:13 +0000 Subject: [PATCH] Get rid of CodeStub::TryGetCode. This function is no longer needed. It was only used (overly defensively) when fetching the stack check stub for on-stack replacement patching. R=vegorov@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8510013 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/code-stubs-arm.h | 7 ------- src/code-stubs.cc | 41 -------------------------------------- src/code-stubs.h | 15 +++----------- src/ia32/code-stubs-ia32.h | 7 ------- src/mips/code-stubs-mips.h | 7 ------- src/runtime-profiler.cc | 7 +++---- src/x64/code-stubs-x64.h | 7 ------- 7 files changed, 6 insertions(+), 85 deletions(-) diff --git a/src/arm/code-stubs-arm.h b/src/arm/code-stubs-arm.h index b8468643a6..365ba4f73b 100644 --- a/src/arm/code-stubs-arm.h +++ b/src/arm/code-stubs-arm.h @@ -585,13 +585,6 @@ class RecordWriteStub: public CodeStub { SaveFPRegsModeBits::encode(save_fp_regs_mode_); } - bool MustBeInStubCache() { - // All stubs must be registered in the stub cache - // otherwise IncrementalMarker would not be able to find - // and patch it. - return true; - } - void Activate(Code* code) { code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); } diff --git a/src/code-stubs.cc b/src/code-stubs.cc index b4374360c6..cfbb815f84 100644 --- a/src/code-stubs.cc +++ b/src/code-stubs.cc @@ -139,47 +139,6 @@ Handle CodeStub::GetCode() { } -MaybeObject* CodeStub::TryGetCode() { - Code* code; - if (!FindCodeInCache(&code)) { - // Generate the new code. - MacroAssembler masm(Isolate::Current(), NULL, 256); - GenerateCode(&masm); - Heap* heap = masm.isolate()->heap(); - - // Create the code object. - CodeDesc desc; - masm.GetCode(&desc); - - // Try to copy the generated code into a heap object. - Code::Flags flags = Code::ComputeFlags( - static_cast(GetCodeKind()), - GetICState()); - Object* new_object; - { MaybeObject* maybe_new_object = - heap->CreateCode(desc, flags, masm.CodeObject()); - if (!maybe_new_object->ToObject(&new_object)) return maybe_new_object; - } - code = Code::cast(new_object); - RecordCodeGeneration(code, &masm); - FinishCode(code); - - // Try to update the code cache but do not fail if unable. - MaybeObject* maybe_new_object = - heap->code_stubs()->AtNumberPut(GetKey(), code); - if (maybe_new_object->ToObject(&new_object)) { - heap->public_set_code_stubs(NumberDictionary::cast(new_object)); - } else if (MustBeInStubCache()) { - return maybe_new_object; - } - - Activate(code); - } - - return code; -} - - const char* CodeStub::MajorName(CodeStub::Major major_key, bool allow_unknown_keys) { switch (major_key) { diff --git a/src/code-stubs.h b/src/code-stubs.h index c134f7a8a2..56aa27b6ff 100644 --- a/src/code-stubs.h +++ b/src/code-stubs.h @@ -118,11 +118,6 @@ class CodeStub BASE_EMBEDDED { // Retrieve the code for the stub. Generate the code if needed. Handle GetCode(); - // Retrieve the code for the stub if already generated. Do not - // generate the code if not already generated and instead return a - // retry after GC Failure object. - MUST_USE_RESULT MaybeObject* TryGetCode(); - static Major MajorKeyFromKey(uint32_t key) { return static_cast(MajorKeyBits::decode(key)); } @@ -160,14 +155,14 @@ class CodeStub BASE_EMBEDDED { // result in a traversable stack. virtual bool SometimesSetsUpAFrame() { return true; } + // Lookup the code in the (possibly custom) cache. + bool FindCodeInCache(Code** code_out); + protected: static const int kMajorBits = 6; static const int kMinorBits = kBitsPerInt - kSmiTagSize - kMajorBits; private: - // Lookup the code in the (possibly custom) cache. - bool FindCodeInCache(Code** code_out); - // Nonvirtual wrapper around the stub-specific Generate function. Call // this function to set up the macro assembler and generate the code. void GenerateCode(MacroAssembler* masm); @@ -182,10 +177,6 @@ class CodeStub BASE_EMBEDDED { // Finish the code object after it has been generated. virtual void FinishCode(Code* code) { } - // Returns true if TryGetCode should fail if it failed - // to register newly generated stub in the stub cache. - virtual bool MustBeInStubCache() { return false; } - // Activate newly generated stub. Is called after // registering stub in the stub cache. virtual void Activate(Code* code) { } diff --git a/src/ia32/code-stubs-ia32.h b/src/ia32/code-stubs-ia32.h index 692cbcf906..707d34622d 100644 --- a/src/ia32/code-stubs-ia32.h +++ b/src/ia32/code-stubs-ia32.h @@ -711,13 +711,6 @@ class RecordWriteStub: public CodeStub { SaveFPRegsModeBits::encode(save_fp_regs_mode_); } - bool MustBeInStubCache() { - // All stubs must be registered in the stub cache - // otherwise IncrementalMarker would not be able to find - // and patch it. - return true; - } - void Activate(Code* code) { code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); } diff --git a/src/mips/code-stubs-mips.h b/src/mips/code-stubs-mips.h index 94ef2af546..7612a7cd72 100644 --- a/src/mips/code-stubs-mips.h +++ b/src/mips/code-stubs-mips.h @@ -586,13 +586,6 @@ class RecordWriteStub: public CodeStub { SaveFPRegsModeBits::encode(save_fp_regs_mode_); } - bool MustBeInStubCache() { - // All stubs must be registered in the stub cache - // otherwise IncrementalMarker would not be able to find - // and patch it. - return true; - } - void Activate(Code* code) { code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); } diff --git a/src/runtime-profiler.cc b/src/runtime-profiler.cc index 520dd39890..eaa6e15603 100644 --- a/src/runtime-profiler.cc +++ b/src/runtime-profiler.cc @@ -136,14 +136,13 @@ void RuntimeProfiler::AttemptOnStackReplacement(JSFunction* function) { // Get the stack check stub code object to match against. We aren't // prepared to generate it, but we don't expect to have to. StackCheckStub check_stub; - Object* check_code; - MaybeObject* maybe_check_code = check_stub.TryGetCode(); - if (maybe_check_code->ToObject(&check_code)) { + Code* stack_check_code = NULL; + if (check_stub.FindCodeInCache(&stack_check_code)) { Code* replacement_code = isolate_->builtins()->builtin(Builtins::kOnStackReplacement); Code* unoptimized_code = shared->code(); Deoptimizer::PatchStackCheckCode(unoptimized_code, - Code::cast(check_code), + stack_check_code, replacement_code); } } diff --git a/src/x64/code-stubs-x64.h b/src/x64/code-stubs-x64.h index 34435d72da..3237f7aa36 100644 --- a/src/x64/code-stubs-x64.h +++ b/src/x64/code-stubs-x64.h @@ -693,13 +693,6 @@ class RecordWriteStub: public CodeStub { SaveFPRegsModeBits::encode(save_fp_regs_mode_); } - bool MustBeInStubCache() { - // All stubs must be registered in the stub cache - // otherwise IncrementalMarker would not be able to find - // and patch it. - return true; - } - void Activate(Code* code) { code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); }