OLD | NEW |
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 | 7 |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/property-descriptor.h" | 9 #include "src/property-descriptor.h" |
10 | 10 |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 | 436 |
437 assembler->Bind(&return_jsproxy); | 437 assembler->Bind(&return_jsproxy); |
438 { | 438 { |
439 assembler->GotoIf(assembler->WordEqual(var_proxy_is_array.value(), | 439 assembler->GotoIf(assembler->WordEqual(var_proxy_is_array.value(), |
440 assembler->BooleanConstant(true)), | 440 assembler->BooleanConstant(true)), |
441 &return_array); | 441 &return_array); |
442 | 442 |
443 Node* map = assembler->LoadMap(receiver); | 443 Node* map = assembler->LoadMap(receiver); |
444 | 444 |
445 // Return object if the proxy {receiver} is not callable. | 445 // Return object if the proxy {receiver} is not callable. |
446 assembler->Branch( | 446 assembler->Branch(assembler->IsCallableMap(map), &return_function, |
447 assembler->Word32Equal( | 447 &return_object); |
448 assembler->Word32And( | |
449 assembler->LoadMapBitField(map), | |
450 assembler->Int32Constant(1 << Map::kIsCallable)), | |
451 assembler->Int32Constant(0)), | |
452 &return_object, &return_function); | |
453 } | 448 } |
454 | 449 |
455 // Default | 450 // Default |
456 assembler->Bind(&return_object); | 451 assembler->Bind(&return_object); |
457 assembler->Return(assembler->HeapConstant( | 452 assembler->Return(assembler->HeapConstant( |
458 assembler->isolate()->factory()->object_to_string())); | 453 assembler->isolate()->factory()->object_to_string())); |
459 } | 454 } |
460 } | 455 } |
461 | 456 |
462 void Builtins::Generate_ObjectCreate(CodeStubAssembler* a) { | 457 void Builtins::Generate_ObjectCreate(CodeStubAssembler* a) { |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1046 typedef CompareDescriptor Descriptor; | 1041 typedef CompareDescriptor Descriptor; |
1047 Node* object = assembler->Parameter(Descriptor::kLeft); | 1042 Node* object = assembler->Parameter(Descriptor::kLeft); |
1048 Node* callable = assembler->Parameter(Descriptor::kRight); | 1043 Node* callable = assembler->Parameter(Descriptor::kRight); |
1049 Node* context = assembler->Parameter(Descriptor::kContext); | 1044 Node* context = assembler->Parameter(Descriptor::kContext); |
1050 | 1045 |
1051 assembler->Return(assembler->InstanceOf(object, callable, context)); | 1046 assembler->Return(assembler->InstanceOf(object, callable, context)); |
1052 } | 1047 } |
1053 | 1048 |
1054 } // namespace internal | 1049 } // namespace internal |
1055 } // namespace v8 | 1050 } // namespace v8 |
OLD | NEW |