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

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

Issue 2435283002: [stubs] Add IsCallableMap predicate to CSA (Closed)
Patch Set: Remove unused variable 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
« no previous file with comments | « no previous file | src/builtins/builtins-object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 // Lookup the {name} on the {input}. 243 // Lookup the {name} on the {input}.
244 Callable callable = CodeFactory::GetProperty(assembler->isolate()); 244 Callable callable = CodeFactory::GetProperty(assembler->isolate());
245 Node* name_string = assembler->HeapConstant(name); 245 Node* name_string = assembler->HeapConstant(name);
246 Node* method = assembler->CallStub(callable, context, input, name_string); 246 Node* method = assembler->CallStub(callable, context, input, name_string);
247 247
248 // Check if the {method} is callable. 248 // Check if the {method} is callable.
249 Label if_methodiscallable(assembler), 249 Label if_methodiscallable(assembler),
250 if_methodisnotcallable(assembler, Label::kDeferred); 250 if_methodisnotcallable(assembler, Label::kDeferred);
251 assembler->GotoIf(assembler->TaggedIsSmi(method), &if_methodisnotcallable); 251 assembler->GotoIf(assembler->TaggedIsSmi(method), &if_methodisnotcallable);
252 Node* method_map = assembler->LoadMap(method); 252 Node* method_map = assembler->LoadMap(method);
253 Node* method_bit_field = assembler->LoadMapBitField(method_map); 253 assembler->Branch(assembler->IsCallableMap(method_map),
254 assembler->Branch( 254 &if_methodiscallable, &if_methodisnotcallable);
255 assembler->Word32Equal(
256 assembler->Word32And(method_bit_field, assembler->Int32Constant(
257 1 << Map::kIsCallable)),
258 assembler->Int32Constant(0)),
259 &if_methodisnotcallable, &if_methodiscallable);
260 255
261 assembler->Bind(&if_methodiscallable); 256 assembler->Bind(&if_methodiscallable);
262 { 257 {
263 // Call the {method} on the {input}. 258 // Call the {method} on the {input}.
264 Callable callable = CodeFactory::Call(assembler->isolate()); 259 Callable callable = CodeFactory::Call(assembler->isolate());
265 Node* result = assembler->CallJS(callable, context, method, input); 260 Node* result = assembler->CallJS(callable, context, method, input);
266 var_result.Bind(result); 261 var_result.Bind(result);
267 262
268 // Return the {result} if it is a primitive. 263 // Return the {result} if it is a primitive.
269 assembler->GotoIf(assembler->TaggedIsSmi(result), &return_result); 264 assembler->GotoIf(assembler->TaggedIsSmi(result), &return_result);
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 typedef TypeofDescriptor Descriptor; 468 typedef TypeofDescriptor Descriptor;
474 469
475 Node* object = assembler->Parameter(Descriptor::kObject); 470 Node* object = assembler->Parameter(Descriptor::kObject);
476 Node* context = assembler->Parameter(Descriptor::kContext); 471 Node* context = assembler->Parameter(Descriptor::kContext);
477 472
478 assembler->Return(assembler->Typeof(object, context)); 473 assembler->Return(assembler->Typeof(object, context));
479 } 474 }
480 475
481 } // namespace internal 476 } // namespace internal
482 } // namespace v8 477 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/builtins/builtins-object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698