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

Unified Diff: src/code-stubs.h

Issue 2682153003: [stubs] Port LoadIndexedStringStub to CSA (Closed)
Patch Set: move to builtins-handler.cc Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/builtins/builtins-string.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index 7eeb005a6a377f318d6be389cb3e2aff6e614c86..526758c472781d95a3a9f3b066ddc598ae2cc7b5 100644
--- a/src/code-stubs.h
+++ b/src/code-stubs.h
@@ -41,7 +41,6 @@ class Node;
V(FunctionPrototype) \
V(InternalArrayConstructor) \
V(JSEntry) \
- V(LoadIndexedString) \
V(MathPow) \
V(ProfileEntryHook) \
V(RecordWrite) \
@@ -893,19 +892,6 @@ class FunctionPrototypeStub : public PlatformCodeStub {
DEFINE_PLATFORM_CODE_STUB(FunctionPrototype, PlatformCodeStub);
};
-
-class LoadIndexedStringStub : public PlatformCodeStub {
- public:
- explicit LoadIndexedStringStub(Isolate* isolate)
- : PlatformCodeStub(isolate) {}
-
- Code::Kind GetCodeKind() const override { return Code::HANDLER; }
- ExtraICState GetExtraICState() const override { return Code::KEYED_LOAD_IC; }
-
- DEFINE_CALL_INTERFACE_DESCRIPTOR(Load);
- DEFINE_PLATFORM_CODE_STUB(LoadIndexedString, PlatformCodeStub);
-};
-
class KeyedLoadSloppyArgumentsStub : public TurboFanCodeStub {
public:
explicit KeyedLoadSloppyArgumentsStub(Isolate* isolate)
@@ -1383,13 +1369,6 @@ class StringCharCodeAtGenerator {
void GenerateSlow(MacroAssembler* masm, EmbedMode embed_mode,
const RuntimeCallHelper& call_helper);
- // Skip handling slow case and directly jump to bailout.
- void SkipSlow(MacroAssembler* masm, Label* bailout) {
- masm->bind(&index_not_smi_);
- masm->bind(&call_runtime_);
- masm->jmp(bailout);
- }
-
private:
Register object_;
Register index_;
@@ -1409,94 +1388,6 @@ class StringCharCodeAtGenerator {
DISALLOW_COPY_AND_ASSIGN(StringCharCodeAtGenerator);
};
-
-// Generates code for creating a one-char string from a char code.
-class StringCharFromCodeGenerator {
- public:
- StringCharFromCodeGenerator(Register code,
- Register result)
- : code_(code),
- result_(result) {
- DCHECK(!code_.is(result_));
- }
-
- // Generates the fast case code. On the fallthrough path |result|
- // register contains the result.
- void GenerateFast(MacroAssembler* masm);
-
- // Generates the slow case code. Must not be naturally
- // reachable. Expected to be put after a ret instruction (e.g., in
- // deferred code). Always jumps back to the fast case.
- void GenerateSlow(MacroAssembler* masm,
- const RuntimeCallHelper& call_helper);
-
- // Skip handling slow case and directly jump to bailout.
- void SkipSlow(MacroAssembler* masm, Label* bailout) {
- masm->bind(&slow_case_);
- masm->jmp(bailout);
- }
-
- private:
- Register code_;
- Register result_;
-
- Label slow_case_;
- Label exit_;
-
- DISALLOW_COPY_AND_ASSIGN(StringCharFromCodeGenerator);
-};
-
-
-// Generates code implementing String.prototype.charAt.
-//
-// Only supports the case when the receiver is a string and the index
-// is a number (smi or heap number) that is a valid index into the
-// string. Additional index constraints are specified by the
-// flags. Otherwise, bails out to the provided labels.
-//
-// Register usage: |object| may be changed to another string in a way
-// that doesn't affect charCodeAt/charAt semantics, |index| is
-// preserved, |scratch1|, |scratch2|, and |result| are clobbered.
-class StringCharAtGenerator {
- public:
- StringCharAtGenerator(Register object, Register index, Register scratch,
- Register result, Label* receiver_not_string,
- Label* index_not_number, Label* index_out_of_range,
- ReceiverCheckMode check_mode = RECEIVER_IS_UNKNOWN)
- : char_code_at_generator_(object, index, scratch, receiver_not_string,
- index_not_number, index_out_of_range,
- check_mode),
- char_from_code_generator_(scratch, result) {}
-
- // Generates the fast case code. On the fallthrough path |result|
- // register contains the result.
- void GenerateFast(MacroAssembler* masm) {
- char_code_at_generator_.GenerateFast(masm);
- char_from_code_generator_.GenerateFast(masm);
- }
-
- // Generates the slow case code. Must not be naturally
- // reachable. Expected to be put after a ret instruction (e.g., in
- // deferred code). Always jumps back to the fast case.
- void GenerateSlow(MacroAssembler* masm, EmbedMode embed_mode,
- const RuntimeCallHelper& call_helper) {
- char_code_at_generator_.GenerateSlow(masm, embed_mode, call_helper);
- char_from_code_generator_.GenerateSlow(masm, call_helper);
- }
-
- // Skip handling slow case and directly jump to bailout.
- void SkipSlow(MacroAssembler* masm, Label* bailout) {
- char_code_at_generator_.SkipSlow(masm, bailout);
- char_from_code_generator_.SkipSlow(masm, bailout);
- }
-
- private:
- StringCharCodeAtGenerator char_code_at_generator_;
- StringCharFromCodeGenerator char_from_code_generator_;
-
- DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator);
-};
-
class CallICTrampolineStub : public TurboFanCodeStub {
public:
CallICTrampolineStub(Isolate* isolate, ConvertReceiverMode convert_mode,
« no previous file with comments | « src/builtins/builtins-string.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698