diff options
author | Michaƫl Zasso <targos@protonmail.com> | 2018-01-24 20:16:06 +0100 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2018-01-24 15:02:20 -0800 |
commit | 4c4af643e5042d615a60c6bbc05aee9d81b903e5 (patch) | |
tree | 3fb0a97988fe4439ae3ae06f26915d1dcf8cab92 /deps/v8/src/builtins/builtins-internal-gen.cc | |
parent | fa9f31a4fda5a3782c652e56e394465805ebb50f (diff) | |
download | node-new-4c4af643e5042d615a60c6bbc05aee9d81b903e5.tar.gz |
deps: update V8 to 6.4.388.40
PR-URL: https://github.com/nodejs/node/pull/17489
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'deps/v8/src/builtins/builtins-internal-gen.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-internal-gen.cc | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/deps/v8/src/builtins/builtins-internal-gen.cc b/deps/v8/src/builtins/builtins-internal-gen.cc index 00e7422e59..bc9723700c 100644 --- a/deps/v8/src/builtins/builtins-internal-gen.cc +++ b/deps/v8/src/builtins/builtins-internal-gen.cc @@ -32,36 +32,9 @@ TF_BUILTIN(CopyFastSmiOrObjectElements, CodeStubAssembler) { // Load the {object}s elements. Node* source = LoadObjectField(object, JSObject::kElementsOffset); - - ParameterMode mode = OptimalParameterMode(); - Node* length = TaggedToParameter(LoadFixedArrayBaseLength(source), mode); - - // Check if we can allocate in new space. - ElementsKind kind = PACKED_ELEMENTS; - int max_elements = FixedArrayBase::GetMaxLengthForNewSpaceAllocation(kind); - Label if_newspace(this), if_lospace(this, Label::kDeferred); - Branch(UintPtrOrSmiLessThan(length, IntPtrOrSmiConstant(max_elements, mode), - mode), - &if_newspace, &if_lospace); - - BIND(&if_newspace); - { - Node* target = AllocateFixedArray(kind, length, mode); - CopyFixedArrayElements(kind, source, target, length, SKIP_WRITE_BARRIER, - mode); - StoreObjectField(object, JSObject::kElementsOffset, target); - Return(target); - } - - BIND(&if_lospace); - { - Node* target = - AllocateFixedArray(kind, length, mode, kAllowLargeObjectAllocation); - CopyFixedArrayElements(kind, source, target, length, UPDATE_WRITE_BARRIER, - mode); - StoreObjectField(object, JSObject::kElementsOffset, target); - Return(target); - } + Node* target = CloneFixedArray(source, ExtractFixedArrayFlag::kFixedArrays); + StoreObjectField(object, JSObject::kElementsOffset, target); + Return(target); } TF_BUILTIN(GrowFastDoubleElements, CodeStubAssembler) { @@ -219,7 +192,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler { Label exit(this); Label* black = &exit; - DCHECK(strcmp(Marking::kBlackBitPattern, "11") == 0); + DCHECK_EQ(strcmp(Marking::kBlackBitPattern, "11"), 0); Node* cell; Node* mask; @@ -258,14 +231,15 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler { } Node* IsWhite(Node* object) { - DCHECK(strcmp(Marking::kWhiteBitPattern, "00") == 0); + DCHECK_EQ(strcmp(Marking::kWhiteBitPattern, "00"), 0); Node* cell; Node* mask; GetMarkBit(object, &cell, &mask); + mask = TruncateWordToWord32(mask); // Non-white has 1 for the first bit, so we only need to check for the first // bit. - return WordEqual(WordAnd(Load(MachineType::Pointer(), cell), mask), - IntPtrConstant(0)); + return Word32Equal(Word32And(Load(MachineType::Int32(), cell), mask), + Int32Constant(0)); } void GetMarkBit(Node* object, Node** cell, Node** mask) { @@ -561,8 +535,9 @@ TF_BUILTIN(DeleteProperty, DeletePropertyBaseAssembler) { BIND(&dont_delete); { - STATIC_ASSERT(LANGUAGE_END == 2); - GotoIf(SmiNotEqual(language_mode, SmiConstant(SLOPPY)), &slow); + STATIC_ASSERT(LanguageModeSize == 2); + GotoIf(SmiNotEqual(language_mode, SmiConstant(LanguageMode::kSloppy)), + &slow); Return(FalseConstant()); } } @@ -618,5 +593,19 @@ TF_BUILTIN(ForInFilter, CodeStubAssembler) { Return(UndefinedConstant()); } +TF_BUILTIN(SameValue, CodeStubAssembler) { + Node* lhs = Parameter(Descriptor::kLeft); + Node* rhs = Parameter(Descriptor::kRight); + + Label if_true(this), if_false(this); + BranchIfSameValue(lhs, rhs, &if_true, &if_false); + + BIND(&if_true); + Return(TrueConstant()); + + BIND(&if_false); + Return(FalseConstant()); +} + } // namespace internal } // namespace v8 |