From 65ef6c05e1f721e073d6a67adf79bfb98947e87e Mon Sep 17 00:00:00 2001 From: "weiliang.lin@intel.com" Date: Thu, 4 Sep 2014 05:37:17 +0000 Subject: [PATCH] X87: Unify some PlatformCodeStubs port r23631. original commit message: Unify some PlatformCodeStubs BUG= R=weiliang.lin@intel.com Review URL: https://codereview.chromium.org/540763002 Patch from Jing Bao . git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/x87/code-stubs-x87.cc | 51 ++++++++++++++++------------------------------- src/x87/code-stubs-x87.h | 51 ++++++----------------------------------------- 2 files changed, 23 insertions(+), 79 deletions(-) diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc index 8f28607..4aa993f 100644 --- a/src/x87/code-stubs-x87.cc +++ b/src/x87/code-stubs-x87.cc @@ -1437,18 +1437,10 @@ void ICCompareStub::GenerateGeneric(MacroAssembler* masm) { // Inline comparison of ASCII strings. if (cc == equal) { - StringCompareStub::GenerateFlatAsciiStringEquals(masm, - edx, - eax, - ecx, - ebx); + StringHelper::GenerateFlatAsciiStringEquals(masm, edx, eax, ecx, ebx); } else { - StringCompareStub::GenerateCompareFlatAsciiStrings(masm, - edx, - eax, - ecx, - ebx, - edi); + StringHelper::GenerateCompareFlatAsciiStrings(masm, edx, eax, ecx, ebx, + edi); } #ifdef DEBUG __ Abort(kUnexpectedFallThroughFromStringComparison); @@ -2871,11 +2863,10 @@ void SubStringStub::Generate(MacroAssembler* masm) { } -void StringCompareStub::GenerateFlatAsciiStringEquals(MacroAssembler* masm, - Register left, - Register right, - Register scratch1, - Register scratch2) { +void StringHelper::GenerateFlatAsciiStringEquals(MacroAssembler* masm, + Register left, Register right, + Register scratch1, + Register scratch2) { Register length = scratch1; // Compare lengths. @@ -2907,12 +2898,9 @@ void StringCompareStub::GenerateFlatAsciiStringEquals(MacroAssembler* masm, } -void StringCompareStub::GenerateCompareFlatAsciiStrings(MacroAssembler* masm, - Register left, - Register right, - Register scratch1, - Register scratch2, - Register scratch3) { +void StringHelper::GenerateCompareFlatAsciiStrings( + MacroAssembler* masm, Register left, Register right, Register scratch1, + Register scratch2, Register scratch3) { Counters* counters = masm->isolate()->counters(); __ IncrementCounter(counters->string_compare_native(), 1); @@ -2973,13 +2961,9 @@ void StringCompareStub::GenerateCompareFlatAsciiStrings(MacroAssembler* masm, } -void StringCompareStub::GenerateAsciiCharsCompareLoop( - MacroAssembler* masm, - Register left, - Register right, - Register length, - Register scratch, - Label* chars_not_equal, +void StringHelper::GenerateAsciiCharsCompareLoop( + MacroAssembler* masm, Register left, Register right, Register length, + Register scratch, Label* chars_not_equal, Label::Distance chars_not_equal_near) { // Change index to run from -length to -1 by adding length to string // start. This means that loop ends when index reaches zero, which @@ -3033,7 +3017,7 @@ void StringCompareStub::Generate(MacroAssembler* masm) { __ pop(ecx); __ add(esp, Immediate(2 * kPointerSize)); __ push(ecx); - GenerateCompareFlatAsciiStrings(masm, edx, eax, ecx, ebx, edi); + StringHelper::GenerateCompareFlatAsciiStrings(masm, edx, eax, ecx, ebx, edi); // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater) // tagged as a small integer. @@ -3306,11 +3290,10 @@ void ICCompareStub::GenerateStrings(MacroAssembler* masm) { // Compare flat ASCII strings. Returns when done. if (equality) { - StringCompareStub::GenerateFlatAsciiStringEquals( - masm, left, right, tmp1, tmp2); + StringHelper::GenerateFlatAsciiStringEquals(masm, left, right, tmp1, tmp2); } else { - StringCompareStub::GenerateCompareFlatAsciiStrings( - masm, left, right, tmp1, tmp2, tmp3); + StringHelper::GenerateCompareFlatAsciiStrings(masm, left, right, tmp1, tmp2, + tmp3); } // Handle more complex cases in runtime. diff --git a/src/x87/code-stubs-x87.h b/src/x87/code-stubs-x87.h index 039ee63..9949f9f 100644 --- a/src/x87/code-stubs-x87.h +++ b/src/x87/code-stubs-x87.h @@ -16,22 +16,6 @@ void ArrayNativeCode(MacroAssembler* masm, Label* call_generic_code); -class StoreBufferOverflowStub : public PlatformCodeStub { - public: - explicit StoreBufferOverflowStub(Isolate* isolate) - : PlatformCodeStub(isolate) { } - - void Generate(MacroAssembler* masm); - - static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate); - virtual bool SometimesSetsUpAFrame() { return false; } - - private: - Major MajorKey() const { return StoreBufferOverflow; } - uint32_t MinorKey() const { return 0; } -}; - - class StringHelper : public AllStatic { public: // Generate code for copying characters using the rep movs instruction. @@ -49,45 +33,24 @@ class StringHelper : public AllStatic { Register hash, Register character, Register scratch); + static void GenerateHashAddCharacter(MacroAssembler* masm, Register hash, Register character, Register scratch); + static void GenerateHashGetHash(MacroAssembler* masm, Register hash, Register scratch); - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); -}; - - -class SubStringStub: public PlatformCodeStub { - public: - explicit SubStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {} - - private: - Major MajorKey() const { return SubString; } - uint32_t MinorKey() const { return 0; } - - void Generate(MacroAssembler* masm); -}; - - -class StringCompareStub: public PlatformCodeStub { - public: - explicit StringCompareStub(Isolate* isolate) : PlatformCodeStub(isolate) { } - // Compares two flat ASCII strings and returns result in eax. static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm, - Register left, - Register right, + Register left, Register right, Register scratch1, Register scratch2, Register scratch3); - // Compares two flat ASCII strings for equality and returns result - // in eax. + // Compares two flat ASCII strings for equality and returns result in eax. static void GenerateFlatAsciiStringEquals(MacroAssembler* masm, Register left, Register right, @@ -95,10 +58,6 @@ class StringCompareStub: public PlatformCodeStub { Register scratch2); private: - virtual Major MajorKey() const { return StringCompare; } - virtual uint32_t MinorKey() const { return 0; } - virtual void Generate(MacroAssembler* masm); - static void GenerateAsciiCharsCompareLoop( MacroAssembler* masm, Register left, @@ -107,6 +66,8 @@ class StringCompareStub: public PlatformCodeStub { Register scratch, Label* chars_not_equal, Label::Distance chars_not_equal_near = Label::kFar); + + DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); }; -- 2.7.4