Commit db2d31ab authored by svenpanne's avatar svenpanne Committed by Commit bot

Removed bailout-only 'implementations' of intrinsics in Crankshaft.

Doing a runtime call should always be better than totally giving up
(unless we have fullcode-only intrinsics, which we'll probably never
have).

BUG=v8:3947
LOG=n

Review URL: https://codereview.chromium.org/997543002

Cr-Commit-Position: refs/heads/master@{#27110}
parent 37729a52
...@@ -116,19 +116,8 @@ namespace internal { ...@@ -116,19 +116,8 @@ namespace internal {
"Improper object on prototype chain for store") \ "Improper object on prototype chain for store") \
V(kIndexIsNegative, "Index is negative") \ V(kIndexIsNegative, "Index is negative") \
V(kIndexIsTooLarge, "Index is too large") \ V(kIndexIsTooLarge, "Index is too large") \
V(kInlinedRuntimeFunctionClassOf, "Inlined runtime function: ClassOf") \
V(kInlinedRuntimeFunctionFastOneByteArrayJoin, \
"Inlined runtime function: FastOneByteArrayJoin") \
V(kInlinedRuntimeFunctionGeneratorNext, \
"Inlined runtime function: GeneratorNext") \
V(kInlinedRuntimeFunctionGeneratorThrow, \
"Inlined runtime function: GeneratorThrow") \
V(kInlinedRuntimeFunctionGetFromCache, \ V(kInlinedRuntimeFunctionGetFromCache, \
"Inlined runtime function: GetFromCache") \ "Inlined runtime function: GetFromCache") \
V(kInlinedRuntimeFunctionIsNonNegativeSmi, \
"Inlined runtime function: IsNonNegativeSmi") \
V(kInlinedRuntimeFunctionIsStringWrapperSafeForDefaultValueOf, \
"Inlined runtime function: IsStringWrapperSafeForDefaultValueOf") \
V(kInliningBailedOut, "Inlining bailed out") \ V(kInliningBailedOut, "Inlining bailed out") \
V(kInputGPRIsExpectedToHaveUpper32Cleared, \ V(kInputGPRIsExpectedToHaveUpper32Cleared, \
"Input GPR is expected to have upper32 cleared") \ "Input GPR is expected to have upper32 cleared") \
......
...@@ -11606,11 +11606,6 @@ void HOptimizedGraphBuilder::GenerateHasFastPackedElements(CallRuntime* call) { ...@@ -11606,11 +11606,6 @@ void HOptimizedGraphBuilder::GenerateHasFastPackedElements(CallRuntime* call) {
} }
void HOptimizedGraphBuilder::GenerateIsNonNegativeSmi(CallRuntime* call) {
return Bailout(kInlinedRuntimeFunctionIsNonNegativeSmi);
}
void HOptimizedGraphBuilder::GenerateIsUndetectableObject(CallRuntime* call) { void HOptimizedGraphBuilder::GenerateIsUndetectableObject(CallRuntime* call) {
DCHECK(call->arguments()->length() == 1); DCHECK(call->arguments()->length() == 1);
CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
...@@ -11620,12 +11615,6 @@ void HOptimizedGraphBuilder::GenerateIsUndetectableObject(CallRuntime* call) { ...@@ -11620,12 +11615,6 @@ void HOptimizedGraphBuilder::GenerateIsUndetectableObject(CallRuntime* call) {
} }
void HOptimizedGraphBuilder::GenerateIsStringWrapperSafeForDefaultValueOf(
CallRuntime* call) {
return Bailout(kInlinedRuntimeFunctionIsStringWrapperSafeForDefaultValueOf);
}
// Support for construct call checks. // Support for construct call checks.
void HOptimizedGraphBuilder::GenerateIsConstructCall(CallRuntime* call) { void HOptimizedGraphBuilder::GenerateIsConstructCall(CallRuntime* call) {
DCHECK(call->arguments()->length() == 0); DCHECK(call->arguments()->length() == 0);
...@@ -11684,14 +11673,6 @@ void HOptimizedGraphBuilder::GenerateArguments(CallRuntime* call) { ...@@ -11684,14 +11673,6 @@ void HOptimizedGraphBuilder::GenerateArguments(CallRuntime* call) {
} }
// Support for accessing the class and value fields of an object.
void HOptimizedGraphBuilder::GenerateClassOf(CallRuntime* call) {
// The special form detected by IsClassOfTest is detected before we get here
// and does not cause a bailout.
return Bailout(kInlinedRuntimeFunctionClassOf);
}
void HOptimizedGraphBuilder::GenerateValueOf(CallRuntime* call) { void HOptimizedGraphBuilder::GenerateValueOf(CallRuntime* call) {
DCHECK(call->arguments()->length() == 1); DCHECK(call->arguments()->length() == 1);
CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
...@@ -11996,12 +11977,6 @@ void HOptimizedGraphBuilder::GenerateCallFunction(CallRuntime* call) { ...@@ -11996,12 +11977,6 @@ void HOptimizedGraphBuilder::GenerateCallFunction(CallRuntime* call) {
} }
void HOptimizedGraphBuilder::GenerateDefaultConstructorCallSuper(
CallRuntime* call) {
return Bailout(kSuperReference);
}
// Fast call to math functions. // Fast call to math functions.
void HOptimizedGraphBuilder::GenerateMathPow(CallRuntime* call) { void HOptimizedGraphBuilder::GenerateMathPow(CallRuntime* call) {
DCHECK_EQ(2, call->arguments()->length()); DCHECK_EQ(2, call->arguments()->length());
...@@ -12694,22 +12669,6 @@ void HOptimizedGraphBuilder::GenerateGetCachedArrayIndex(CallRuntime* call) { ...@@ -12694,22 +12669,6 @@ void HOptimizedGraphBuilder::GenerateGetCachedArrayIndex(CallRuntime* call) {
} }
void HOptimizedGraphBuilder::GenerateFastOneByteArrayJoin(CallRuntime* call) {
return Bailout(kInlinedRuntimeFunctionFastOneByteArrayJoin);
}
// Support for generators.
void HOptimizedGraphBuilder::GenerateGeneratorNext(CallRuntime* call) {
return Bailout(kInlinedRuntimeFunctionGeneratorNext);
}
void HOptimizedGraphBuilder::GenerateGeneratorThrow(CallRuntime* call) {
return Bailout(kInlinedRuntimeFunctionGeneratorThrow);
}
void HOptimizedGraphBuilder::GenerateDebugBreakInOptimizedCode( void HOptimizedGraphBuilder::GenerateDebugBreakInOptimizedCode(
CallRuntime* call) { CallRuntime* call) {
Add<HDebugBreak>(); Add<HDebugBreak>();
......
...@@ -2162,81 +2162,74 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { ...@@ -2162,81 +2162,74 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
return function_state()->compilation_info()->language_mode(); return function_state()->compilation_info()->language_mode();
} }
#define FOR_EACH_HYDROGEN_INTRINSIC(F) \ #define FOR_EACH_HYDROGEN_INTRINSIC(F) \
F(IsSmi) \ F(IsSmi) \
F(IsNonNegativeSmi) \ F(IsArray) \
F(IsArray) \ F(IsRegExp) \
F(IsRegExp) \ F(IsJSProxy) \
F(IsJSProxy) \ F(IsConstructCall) \
F(IsConstructCall) \ F(CallFunction) \
F(CallFunction) \ F(ArgumentsLength) \
F(DefaultConstructorCallSuper) \ F(Arguments) \
F(ArgumentsLength) \ F(ValueOf) \
F(Arguments) \ F(SetValueOf) \
F(ValueOf) \ F(DateField) \
F(SetValueOf) \ F(StringCharFromCode) \
F(DateField) \ F(StringCharAt) \
F(StringCharFromCode) \ F(OneByteSeqStringSetChar) \
F(StringCharAt) \ F(TwoByteSeqStringSetChar) \
F(OneByteSeqStringSetChar) \ F(ObjectEquals) \
F(TwoByteSeqStringSetChar) \ F(IsObject) \
F(ObjectEquals) \ F(IsFunction) \
F(IsObject) \ F(IsUndetectableObject) \
F(IsFunction) \ F(IsSpecObject) \
F(IsUndetectableObject) \ F(MathPow) \
F(IsSpecObject) \ F(IsMinusZero) \
F(IsStringWrapperSafeForDefaultValueOf) \ F(HasCachedArrayIndex) \
F(MathPow) \ F(GetCachedArrayIndex) \
F(IsMinusZero) \ F(DebugBreakInOptimizedCode) \
F(HasCachedArrayIndex) \ F(StringCharCodeAt) \
F(GetCachedArrayIndex) \ F(StringAdd) \
F(FastOneByteArrayJoin) \ F(SubString) \
F(GeneratorNext) \ F(StringCompare) \
F(GeneratorThrow) \ F(RegExpExec) \
F(DebugBreakInOptimizedCode) \ F(RegExpConstructResult) \
F(ClassOf) \ F(GetFromCache) \
F(StringCharCodeAt) \ F(NumberToString) \
F(StringAdd) \ F(DebugIsActive) \
F(SubString) \ /* Typed Arrays */ \
F(StringCompare) \ F(TypedArrayInitialize) \
F(RegExpExec) \ F(DataViewInitialize) \
F(RegExpConstructResult) \ F(MaxSmi) \
F(GetFromCache) \ F(TypedArrayMaxSizeInHeap) \
F(NumberToString) \ F(ArrayBufferViewGetByteLength) \
F(DebugIsActive) \ F(ArrayBufferViewGetByteOffset) \
/* Typed Arrays */ \ F(TypedArrayGetLength) \
F(TypedArrayInitialize) \ /* ArrayBuffer */ \
F(DataViewInitialize) \ F(ArrayBufferGetByteLength) \
F(MaxSmi) \ /* Maths */ \
F(TypedArrayMaxSizeInHeap) \ F(ConstructDouble) \
F(ArrayBufferViewGetByteLength) \ F(DoubleHi) \
F(ArrayBufferViewGetByteOffset) \ F(DoubleLo) \
F(TypedArrayGetLength) \ F(MathFloor) \
/* ArrayBuffer */ \ F(MathSqrtRT) \
F(ArrayBufferGetByteLength) \ F(MathLogRT) \
/* Maths */ \ /* ES6 Collections */ \
F(ConstructDouble) \ F(MapClear) \
F(DoubleHi) \ F(MapDelete) \
F(DoubleLo) \ F(MapGet) \
F(MathFloor) \ F(MapGetSize) \
F(MathSqrtRT) \ F(MapHas) \
F(MathLogRT) \ F(MapInitialize) \
/* ES6 Collections */ \ F(MapSet) \
F(MapClear) \ F(SetAdd) \
F(MapDelete) \ F(SetClear) \
F(MapGet) \ F(SetDelete) \
F(MapGetSize) \ F(SetGetSize) \
F(MapHas) \ F(SetHas) \
F(MapInitialize) \ F(SetInitialize) \
F(MapSet) \ /* Arrays */ \
F(SetAdd) \ F(HasFastPackedElements) \
F(SetClear) \
F(SetDelete) \
F(SetGetSize) \
F(SetHas) \
F(SetInitialize) \
/* Arrays */ \
F(HasFastPackedElements) \
F(GetPrototype) F(GetPrototype)
#define GENERATOR_DECLARATION(Name) void Generate##Name(CallRuntime* call); #define GENERATOR_DECLARATION(Name) void Generate##Name(CallRuntime* call);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment