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

Side by Side Diff: src/builtins/builtins-conversion.cc

Issue 2395453002: [stubs] Add String and JSReceiver instance type predicates (Closed)
Patch Set: Created 4 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
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/builtins/builtins.h" 5 #include "src/builtins/builtins.h"
6 #include "src/builtins/builtins-utils.h" 6 #include "src/builtins/builtins-utils.h"
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 161
162 Label is_number(assembler); 162 Label is_number(assembler);
163 Label runtime(assembler); 163 Label runtime(assembler);
164 164
165 assembler->GotoIf(assembler->WordIsSmi(input), &is_number); 165 assembler->GotoIf(assembler->WordIsSmi(input), &is_number);
166 166
167 Node* input_map = assembler->LoadMap(input); 167 Node* input_map = assembler->LoadMap(input);
168 Node* input_instance_type = assembler->LoadMapInstanceType(input_map); 168 Node* input_instance_type = assembler->LoadMapInstanceType(input_map);
169 169
170 Label not_string(assembler); 170 Label not_string(assembler);
171 assembler->GotoIf( 171 assembler->GotoUnless(assembler->IsStringInstanceType(input_instance_type),
172 assembler->Int32GreaterThanOrEqual( 172 &not_string);
173 input_instance_type, assembler->Int32Constant(FIRST_NONSTRING_TYPE)),
174 &not_string);
175 assembler->Return(input); 173 assembler->Return(input);
176 174
177 Label not_heap_number(assembler); 175 Label not_heap_number(assembler);
178 176
179 assembler->Bind(&not_string); 177 assembler->Bind(&not_string);
180 { 178 {
181 assembler->GotoUnless( 179 assembler->GotoUnless(
182 assembler->WordEqual(input_map, assembler->HeapNumberMapConstant()), 180 assembler->WordEqual(input_map, assembler->HeapNumberMapConstant()),
183 &not_heap_number); 181 &not_heap_number);
184 assembler->Goto(&is_number); 182 assembler->Goto(&is_number);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 314
317 assembler->Bind(&return_true); 315 assembler->Bind(&return_true);
318 assembler->Return(assembler->BooleanConstant(true)); 316 assembler->Return(assembler->BooleanConstant(true));
319 317
320 assembler->Bind(&return_false); 318 assembler->Bind(&return_false);
321 assembler->Return(assembler->BooleanConstant(false)); 319 assembler->Return(assembler->BooleanConstant(false));
322 } 320 }
323 321
324 } // namespace internal 322 } // namespace internal
325 } // namespace v8 323 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698