summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-internal-gen.cc
diff options
context:
space:
mode:
authorMichaƫl Zasso <targos@protonmail.com>2018-01-24 20:16:06 +0100
committerMyles Borins <mylesborins@google.com>2018-01-24 15:02:20 -0800
commit4c4af643e5042d615a60c6bbc05aee9d81b903e5 (patch)
tree3fb0a97988fe4439ae3ae06f26915d1dcf8cab92 /deps/v8/src/builtins/builtins-internal-gen.cc
parentfa9f31a4fda5a3782c652e56e394465805ebb50f (diff)
downloadnode-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.cc61
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