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

Unified Diff: src/builtins/builtins-conversion.cc

Issue 2293943002: [builtins] Create StringToNumber helper. (Closed)
Patch Set: Addressed nits. Created 4 years, 3 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 | « no previous file | src/code-stub-assembler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins/builtins-conversion.cc
diff --git a/src/builtins/builtins-conversion.cc b/src/builtins/builtins-conversion.cc
index 0d04a02e241132e87aaea3ffb17add337002e901..625ad87f7623a293d36b71ed1b518578691688cb 100644
--- a/src/builtins/builtins-conversion.cc
+++ b/src/builtins/builtins-conversion.cc
@@ -110,35 +110,13 @@ void Builtins::Generate_NonPrimitiveToPrimitive_String(
}
void Builtins::Generate_StringToNumber(CodeStubAssembler* assembler) {
- typedef CodeStubAssembler::Label Label;
typedef compiler::Node Node;
typedef TypeConversionDescriptor Descriptor;
Node* input = assembler->Parameter(Descriptor::kArgument);
Node* context = assembler->Parameter(Descriptor::kContext);
- Label runtime(assembler);
-
- // Check if string has a cached array index.
- Node* hash = assembler->LoadNameHashField(input);
- Node* bit = assembler->Word32And(
- hash, assembler->Int32Constant(String::kContainsCachedArrayIndexMask));
- assembler->GotoIf(assembler->Word32NotEqual(bit, assembler->Int32Constant(0)),
- &runtime);
-
- assembler->Return(assembler->SmiTag(
- assembler->BitFieldDecode<String::ArrayIndexValueBits>(hash)));
-
- assembler->Bind(&runtime);
- {
- // Note: We cannot tail call to the runtime here, as js-to-wasm
- // trampolines also use this code currently, and they declare all
- // outgoing parameters as untagged, while we would push a tagged
- // object here.
- Node* result =
- assembler->CallRuntime(Runtime::kStringToNumber, context, input);
- assembler->Return(result);
- }
+ assembler->Return(assembler->StringToNumber(context, input));
}
// ES6 section 7.1.3 ToNumber ( argument )
@@ -183,9 +161,7 @@ void Builtins::Generate_NonNumberToNumber(CodeStubAssembler* assembler) {
assembler->Bind(&if_inputisstring);
{
// The {input} is a String, use the fast stub to convert it to a Number.
- // TODO(bmeurer): Consider inlining the StringToNumber logic here.
- Callable callable = CodeFactory::StringToNumber(assembler->isolate());
- assembler->TailCallStub(callable, context, input);
+ assembler->Return(assembler->StringToNumber(context, input));
}
assembler->Bind(&if_inputisoddball);
« no previous file with comments | « no previous file | src/code-stub-assembler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698