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

Side by Side Diff: src/compiler/code-stub-assembler.cc

Issue 1795793002: [compiler] Introduce code stubs for abstract equality. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: instancetype -> instance_type Created 4 years, 9 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 | « src/compiler/code-stub-assembler.h ('k') | src/compiler/js-generic-lowering.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/compiler/code-stub-assembler.h" 5 #include "src/compiler/code-stub-assembler.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "src/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/compiler/graph.h" 10 #include "src/compiler/graph.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 } 98 }
99 99
100 Node* CodeStubAssembler::ExternalConstant(ExternalReference address) { 100 Node* CodeStubAssembler::ExternalConstant(ExternalReference address) {
101 return raw_assembler_->ExternalConstant(address); 101 return raw_assembler_->ExternalConstant(address);
102 } 102 }
103 103
104 Node* CodeStubAssembler::Float64Constant(double value) { 104 Node* CodeStubAssembler::Float64Constant(double value) {
105 return raw_assembler_->Float64Constant(value); 105 return raw_assembler_->Float64Constant(value);
106 } 106 }
107 107
108 Node* CodeStubAssembler::BooleanMapConstant() {
109 return HeapConstant(isolate()->factory()->boolean_map());
110 }
111
108 Node* CodeStubAssembler::HeapNumberMapConstant() { 112 Node* CodeStubAssembler::HeapNumberMapConstant() {
109 return HeapConstant(isolate()->factory()->heap_number_map()); 113 return HeapConstant(isolate()->factory()->heap_number_map());
110 } 114 }
111 115
112 Node* CodeStubAssembler::Parameter(int value) { 116 Node* CodeStubAssembler::Parameter(int value) {
113 return raw_assembler_->Parameter(value); 117 return raw_assembler_->Parameter(value);
114 } 118 }
115 119
116 120
117 void CodeStubAssembler::Return(Node* value) { 121 void CodeStubAssembler::Return(Node* value) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 Node* CodeStubAssembler::LoadObjectField(Node* object, int offset) { 219 Node* CodeStubAssembler::LoadObjectField(Node* object, int offset) {
216 return raw_assembler_->Load(MachineType::AnyTagged(), object, 220 return raw_assembler_->Load(MachineType::AnyTagged(), object,
217 IntPtrConstant(offset - kHeapObjectTag)); 221 IntPtrConstant(offset - kHeapObjectTag));
218 } 222 }
219 223
220 Node* CodeStubAssembler::LoadHeapNumberValue(Node* object) { 224 Node* CodeStubAssembler::LoadHeapNumberValue(Node* object) {
221 return Load(MachineType::Float64(), object, 225 return Load(MachineType::Float64(), object,
222 IntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag)); 226 IntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag));
223 } 227 }
224 228
229 Node* CodeStubAssembler::LoadMapBitField(Node* map) {
230 return Load(MachineType::Uint8(), map,
231 IntPtrConstant(Map::kBitFieldOffset - kHeapObjectTag));
232 }
233
225 Node* CodeStubAssembler::LoadMapInstanceType(Node* map) { 234 Node* CodeStubAssembler::LoadMapInstanceType(Node* map) {
226 return Load(MachineType::Uint8(), map, 235 return Load(MachineType::Uint8(), map,
227 IntPtrConstant(Map::kInstanceTypeOffset - kHeapObjectTag)); 236 IntPtrConstant(Map::kInstanceTypeOffset - kHeapObjectTag));
228 } 237 }
229 238
230 Node* CodeStubAssembler::LoadFixedArrayElementSmiIndex(Node* object, 239 Node* CodeStubAssembler::LoadFixedArrayElementSmiIndex(Node* object,
231 Node* smi_index, 240 Node* smi_index,
232 int additional_offset) { 241 int additional_offset) {
233 int const kSmiShiftBits = kSmiShiftSize + kSmiTagSize; 242 int const kSmiShiftBits = kSmiShiftSize + kSmiTagSize;
234 Node* header_size = IntPtrConstant(additional_offset + 243 Node* header_size = IntPtrConstant(additional_offset +
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 Node* CodeStubAssembler::StoreNoWriteBarrier(MachineRepresentation rep, 431 Node* CodeStubAssembler::StoreNoWriteBarrier(MachineRepresentation rep,
423 Node* base, Node* index, 432 Node* base, Node* index,
424 Node* value) { 433 Node* value) {
425 return raw_assembler_->Store(rep, base, index, value, kNoWriteBarrier); 434 return raw_assembler_->Store(rep, base, index, value, kNoWriteBarrier);
426 } 435 }
427 436
428 Node* CodeStubAssembler::Projection(int index, Node* value) { 437 Node* CodeStubAssembler::Projection(int index, Node* value) {
429 return raw_assembler_->Projection(index, value); 438 return raw_assembler_->Projection(index, value);
430 } 439 }
431 440
441 Node* CodeStubAssembler::LoadMap(Node* object) {
442 return LoadObjectField(object, HeapObject::kMapOffset);
443 }
444
432 Node* CodeStubAssembler::LoadInstanceType(Node* object) { 445 Node* CodeStubAssembler::LoadInstanceType(Node* object) {
433 return LoadMapInstanceType(LoadObjectField(object, HeapObject::kMapOffset)); 446 return LoadMapInstanceType(LoadMap(object));
434 } 447 }
435 448
436 Node* CodeStubAssembler::BitFieldDecode(Node* word32, uint32_t shift, 449 Node* CodeStubAssembler::BitFieldDecode(Node* word32, uint32_t shift,
437 uint32_t mask) { 450 uint32_t mask) {
438 return raw_assembler_->Word32Shr( 451 return raw_assembler_->Word32Shr(
439 raw_assembler_->Word32And(word32, raw_assembler_->Int32Constant(mask)), 452 raw_assembler_->Word32And(word32, raw_assembler_->Int32Constant(mask)),
440 raw_assembler_->Int32Constant(shift)); 453 raw_assembler_->Int32Constant(shift));
441 } 454 }
442 455
443 void CodeStubAssembler::BranchIfInt32LessThan(Node* a, Node* b, Label* if_true, 456 void CodeStubAssembler::BranchIfInt32LessThan(Node* a, Node* b, Label* if_true,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 Label* if_false) { 533 Label* if_false) {
521 Label if_greaterthanorequal(this), if_notgreaterthanorequal(this); 534 Label if_greaterthanorequal(this), if_notgreaterthanorequal(this);
522 Branch(Float64GreaterThanOrEqual(a, b), &if_greaterthanorequal, 535 Branch(Float64GreaterThanOrEqual(a, b), &if_greaterthanorequal,
523 &if_notgreaterthanorequal); 536 &if_notgreaterthanorequal);
524 Bind(&if_greaterthanorequal); 537 Bind(&if_greaterthanorequal);
525 Goto(if_true); 538 Goto(if_true);
526 Bind(&if_notgreaterthanorequal); 539 Bind(&if_notgreaterthanorequal);
527 Goto(if_false); 540 Goto(if_false);
528 } 541 }
529 542
543 void CodeStubAssembler::BranchIfWord32Equal(Node* a, Node* b, Label* if_true,
544 Label* if_false) {
545 Label if_equal(this), if_notequal(this);
546 Branch(Word32Equal(a, b), &if_equal, &if_notequal);
547 Bind(&if_equal);
548 Goto(if_true);
549 Bind(&if_notequal);
550 Goto(if_false);
551 }
552
530 Node* CodeStubAssembler::CallN(CallDescriptor* descriptor, Node* code_target, 553 Node* CodeStubAssembler::CallN(CallDescriptor* descriptor, Node* code_target,
531 Node** args) { 554 Node** args) {
532 CallPrologue(); 555 CallPrologue();
533 Node* return_value = raw_assembler_->CallN(descriptor, code_target, args); 556 Node* return_value = raw_assembler_->CallN(descriptor, code_target, args);
534 CallEpilogue(); 557 CallEpilogue();
535 return return_value; 558 return return_value;
536 } 559 }
537 560
538 561
539 Node* CodeStubAssembler::TailCallN(CallDescriptor* descriptor, 562 Node* CodeStubAssembler::TailCallN(CallDescriptor* descriptor,
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 } 951 }
929 } 952 }
930 } 953 }
931 954
932 bound_ = true; 955 bound_ = true;
933 } 956 }
934 957
935 } // namespace compiler 958 } // namespace compiler
936 } // namespace internal 959 } // namespace internal
937 } // namespace v8 960 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/code-stub-assembler.h ('k') | src/compiler/js-generic-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698