summaryrefslogtreecommitdiff
path: root/deps/v8/src/code-stubs.cc
diff options
context:
space:
mode:
authorAli Ijaz Sheikh <ofrobots@google.com>2016-04-07 14:06:55 -0700
committerAli Ijaz Sheikh <ofrobots@google.com>2016-04-14 10:03:39 -0700
commit52af5c4eebf4de8638aef0338bd826656312a02a (patch)
tree628dc9fb0b558c3a73a2160706fef368876fe548 /deps/v8/src/code-stubs.cc
parent6e3e8acc7cc7ebd3d67db5ade1247b8b558efe09 (diff)
downloadnode-new-52af5c4eebf4de8638aef0338bd826656312a02a.tar.gz
deps: upgrade V8 to 5.0.71.32
* Pick up the branch head for V8 5.0 stable [1] * Edit v8 gitignore to allow trace_event copy * Update V8 DEP trace_event as per deps/v8/DEPS [2] [1] https://chromium.googlesource.com/v8/v8.git/+/3c67831 [2] https://chromium.googlesource.com/chromium/src/base/trace_event/common/+/4b09207e447ae5bd34643b4c6321bee7b76d35f9 Ref: https://github.com/nodejs/node/pull/5945 PR-URL: https://github.com/nodejs/node/pull/6111 Reviewed-By: targos - Michaƫl Zasso <mic.besace@gmail.com> Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: indutny - Fedor Indutny <fedor.indutny@gmail.com>
Diffstat (limited to 'deps/v8/src/code-stubs.cc')
-rw-r--r--deps/v8/src/code-stubs.cc106
1 files changed, 20 insertions, 86 deletions
diff --git a/deps/v8/src/code-stubs.cc b/deps/v8/src/code-stubs.cc
index 1754288b6e..4e5efcd8e0 100644
--- a/deps/v8/src/code-stubs.cc
+++ b/deps/v8/src/code-stubs.cc
@@ -96,6 +96,12 @@ Code::Kind CodeStub::GetCodeKind() const {
}
+Code::Flags CodeStub::GetCodeFlags() const {
+ return Code::ComputeFlags(GetCodeKind(), GetICState(), GetExtraICState(),
+ GetStubType());
+}
+
+
Handle<Code> CodeStub::GetCodeCopy(const Code::FindAndReplacePattern& pattern) {
Handle<Code> ic = GetCode();
ic = isolate()->factory()->CopyCode(ic);
@@ -270,7 +276,7 @@ MaybeHandle<Code> CodeStub::GetCode(Isolate* isolate, uint32_t key) {
void BinaryOpICStub::GenerateAheadOfTime(Isolate* isolate) {
// Generate the uninitialized versions of the stub.
for (int op = Token::BIT_OR; op <= Token::MOD; ++op) {
- BinaryOpICStub stub(isolate, static_cast<Token::Value>(op), Strength::WEAK);
+ BinaryOpICStub stub(isolate, static_cast<Token::Value>(op));
stub.GetCode();
}
@@ -453,9 +459,7 @@ void CompareNilICStub::UpdateStatus(Handle<Object> object) {
state.Add(NULL_TYPE);
} else if (object->IsUndefined()) {
state.Add(UNDEFINED);
- } else if (object->IsUndetectableObject() ||
- object->IsOddball() ||
- !object->IsHeapObject()) {
+ } else if (object->IsUndetectableObject() || object->IsSmi()) {
state.RemoveAll();
state.Add(GENERIC);
} else if (IsMonomorphic()) {
@@ -474,7 +478,7 @@ Handle<Code> TurboFanCodeStub::GenerateCode() {
Zone zone;
CallInterfaceDescriptor descriptor(GetCallInterfaceDescriptor());
compiler::CodeStubAssembler assembler(isolate(), &zone, descriptor,
- GetCodeKind(), name);
+ GetCodeFlags(), name);
GenerateAssembly(&assembler);
return assembler.GenerateCode();
}
@@ -549,18 +553,17 @@ std::ostream& operator<<(std::ostream& os, const CompareNilICStub::State& s) {
Type* CompareNilICStub::GetType(Zone* zone, Handle<Map> map) {
State state = this->state();
- if (state.Contains(CompareNilICStub::GENERIC)) return Type::Any(zone);
+ if (state.Contains(CompareNilICStub::GENERIC)) return Type::Any();
- Type* result = Type::None(zone);
+ Type* result = Type::None();
if (state.Contains(CompareNilICStub::UNDEFINED)) {
- result = Type::Union(result, Type::Undefined(zone), zone);
+ result = Type::Union(result, Type::Undefined(), zone);
}
if (state.Contains(CompareNilICStub::NULL_TYPE)) {
- result = Type::Union(result, Type::Null(zone), zone);
+ result = Type::Union(result, Type::Null(), zone);
}
if (state.Contains(CompareNilICStub::MONOMORPHIC_MAP)) {
- Type* type =
- map.is_null() ? Type::Detectable(zone) : Type::Class(map, zone);
+ Type* type = map.is_null() ? Type::Detectable() : Type::Class(map, zone);
result = Type::Union(result, type, zone);
}
@@ -570,8 +573,7 @@ Type* CompareNilICStub::GetType(Zone* zone, Handle<Map> map) {
Type* CompareNilICStub::GetInputType(Zone* zone, Handle<Map> map) {
Type* output_type = GetType(zone, map);
- Type* nil_type =
- nil_value() == kNullValue ? Type::Null(zone) : Type::Undefined(zone);
+ Type* nil_type = nil_value() == kNullValue ? Type::Null() : Type::Undefined();
return Type::Union(output_type, nil_type, zone);
}
@@ -599,9 +601,7 @@ void LoadDictionaryElementStub::InitializeDescriptor(
void KeyedLoadGenericStub::InitializeDescriptor(
CodeStubDescriptor* descriptor) {
descriptor->Initialize(
- Runtime::FunctionForId(is_strong(language_mode())
- ? Runtime::kKeyedGetPropertyStrong
- : Runtime::kKeyedGetProperty)->entry);
+ Runtime::FunctionForId(Runtime::kKeyedGetProperty)->entry);
}
@@ -798,28 +798,8 @@ void CreateWeakCellStub::GenerateAheadOfTime(Isolate* isolate) {
void StoreElementStub::Generate(MacroAssembler* masm) {
- switch (elements_kind()) {
- case FAST_ELEMENTS:
- case FAST_HOLEY_ELEMENTS:
- case FAST_SMI_ELEMENTS:
- case FAST_HOLEY_SMI_ELEMENTS:
- case FAST_DOUBLE_ELEMENTS:
- case FAST_HOLEY_DOUBLE_ELEMENTS:
-#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
- case TYPE##_ELEMENTS:
-
- TYPED_ARRAYS(TYPED_ARRAY_CASE)
-#undef TYPED_ARRAY_CASE
- UNREACHABLE();
- break;
- case DICTIONARY_ELEMENTS:
- ElementHandlerCompiler::GenerateStoreSlow(masm);
- break;
- case FAST_SLOPPY_ARGUMENTS_ELEMENTS:
- case SLOW_SLOPPY_ARGUMENTS_ELEMENTS:
- UNREACHABLE();
- break;
- }
+ DCHECK_EQ(DICTIONARY_ELEMENTS, elements_kind());
+ ElementHandlerCompiler::GenerateStoreSlow(masm);
}
@@ -838,52 +818,6 @@ void StoreFastElementStub::GenerateAheadOfTime(Isolate* isolate) {
}
-void RestParamAccessStub::Generate(MacroAssembler* masm) { GenerateNew(masm); }
-
-
-void ArgumentsAccessStub::Generate(MacroAssembler* masm) {
- switch (type()) {
- case READ_ELEMENT:
- GenerateReadElement(masm);
- break;
- case NEW_SLOPPY_FAST:
- GenerateNewSloppyFast(masm);
- break;
- case NEW_SLOPPY_SLOW:
- GenerateNewSloppySlow(masm);
- break;
- case NEW_STRICT:
- GenerateNewStrict(masm);
- break;
- }
-}
-
-
-void ArgumentsAccessStub::PrintName(std::ostream& os) const { // NOLINT
- os << "ArgumentsAccessStub_";
- switch (type()) {
- case READ_ELEMENT:
- os << "ReadElement";
- break;
- case NEW_SLOPPY_FAST:
- os << "NewSloppyFast";
- break;
- case NEW_SLOPPY_SLOW:
- os << "NewSloppySlow";
- break;
- case NEW_STRICT:
- os << "NewStrict";
- break;
- }
- return;
-}
-
-
-void RestParamAccessStub::PrintName(std::ostream& os) const { // NOLINT
- os << "RestParamAccessStub_";
-}
-
-
void ArrayConstructorStub::PrintName(std::ostream& os) const { // NOLINT
os << "ArrayConstructorStub";
switch (argument_count()) {
@@ -964,9 +898,9 @@ bool ToBooleanStub::Types::UpdateStatus(Handle<Object> object) {
Add(SPEC_OBJECT);
return !object->IsUndetectableObject();
} else if (object->IsString()) {
+ DCHECK(!object->IsUndetectableObject());
Add(STRING);
- return !object->IsUndetectableObject() &&
- String::cast(*object)->length() != 0;
+ return String::cast(*object)->length() != 0;
} else if (object->IsSymbol()) {
Add(SYMBOL);
return true;