diff options
Diffstat (limited to 'deps/v8/src/crankshaft/hydrogen-instructions.cc')
-rw-r--r-- | deps/v8/src/crankshaft/hydrogen-instructions.cc | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/deps/v8/src/crankshaft/hydrogen-instructions.cc b/deps/v8/src/crankshaft/hydrogen-instructions.cc index 1e49202fe0..e2e026fb5f 100644 --- a/deps/v8/src/crankshaft/hydrogen-instructions.cc +++ b/deps/v8/src/crankshaft/hydrogen-instructions.cc @@ -776,7 +776,6 @@ bool HInstruction::CanDeoptimize() { case HValue::kBlockEntry: case HValue::kBoundsCheckBaseIndexInformation: case HValue::kCallFunction: - case HValue::kCallNew: case HValue::kCallNewArray: case HValue::kCallStub: case HValue::kCapturedObject: @@ -803,8 +802,6 @@ bool HInstruction::CanDeoptimize() { case HValue::kHasInstanceTypeAndBranch: case HValue::kInnerAllocatedObject: case HValue::kInstanceOf: - case HValue::kIsConstructCallAndBranch: - case HValue::kHasInPrototypeChainAndBranch: case HValue::kIsSmiAndBranch: case HValue::kIsStringAndBranch: case HValue::kIsUndetectableAndBranch: @@ -819,7 +816,6 @@ bool HInstruction::CanDeoptimize() { case HValue::kParameter: case HValue::kPhi: case HValue::kPushArguments: - case HValue::kRegExpLiteral: case HValue::kReturn: case HValue::kSeqStringGetChar: case HValue::kStoreCodeEntry: @@ -853,11 +849,11 @@ bool HInstruction::CanDeoptimize() { case HValue::kCheckSmi: case HValue::kCheckValue: case HValue::kClampToUint8: - case HValue::kDateField: case HValue::kDeoptimize: case HValue::kDiv: case HValue::kForInCacheArray: case HValue::kForInPrepareMap: + case HValue::kHasInPrototypeChainAndBranch: case HValue::kInvokeFunction: case HValue::kLoadContextSlot: case HValue::kLoadFunctionPrototype: @@ -1526,7 +1522,7 @@ HValue* HChange::Canonicalize() { HValue* HWrapReceiver::Canonicalize() { if (HasNoUses()) return NULL; - if (receiver()->type().IsJSObject()) { + if (receiver()->type().IsJSReceiver()) { return receiver(); } return this; @@ -1622,7 +1618,7 @@ HValue* HUnaryMathOperation::Canonicalize() { HValue* HCheckInstanceType::Canonicalize() { - if ((check_ == IS_SPEC_OBJECT && value()->type().IsJSObject()) || + if ((check_ == IS_JS_RECEIVER && value()->type().IsJSReceiver()) || (check_ == IS_JS_ARRAY && value()->type().IsJSArray()) || (check_ == IS_STRING && value()->type().IsString())) { return value(); @@ -1641,9 +1637,9 @@ void HCheckInstanceType::GetCheckInterval(InstanceType* first, InstanceType* last) { DCHECK(is_interval_check()); switch (check_) { - case IS_SPEC_OBJECT: - *first = FIRST_SPEC_OBJECT_TYPE; - *last = LAST_SPEC_OBJECT_TYPE; + case IS_JS_RECEIVER: + *first = FIRST_JS_RECEIVER_TYPE; + *last = LAST_JS_RECEIVER_TYPE; return; case IS_JS_ARRAY: *first = *last = JS_ARRAY_TYPE; @@ -1718,7 +1714,7 @@ HValue* HCheckValue::Canonicalize() { const char* HCheckInstanceType::GetCheckName() const { switch (check_) { - case IS_SPEC_OBJECT: return "object"; + case IS_JS_RECEIVER: return "object"; case IS_JS_ARRAY: return "array"; case IS_JS_DATE: return "date"; @@ -3278,7 +3274,7 @@ bool HIsStringAndBranch::KnownSuccessorBlock(HBasicBlock** block) { value()->type().IsNull() || value()->type().IsBoolean() || value()->type().IsUndefined() || - value()->type().IsJSObject()) { + value()->type().IsJSReceiver()) { *block = SecondSuccessor(); return true; } @@ -4081,11 +4077,13 @@ HInstruction* HUnaryMathOperation::New(Isolate* isolate, Zone* zone, } switch (op) { case kMathExp: - return H_CONSTANT_DOUBLE(fast_exp(d)); + lazily_initialize_fast_exp(isolate); + return H_CONSTANT_DOUBLE(fast_exp(d, isolate)); case kMathLog: return H_CONSTANT_DOUBLE(std::log(d)); case kMathSqrt: - return H_CONSTANT_DOUBLE(fast_sqrt(d)); + lazily_initialize_fast_sqrt(isolate); + return H_CONSTANT_DOUBLE(fast_sqrt(d, isolate)); case kMathPowHalf: return H_CONSTANT_DOUBLE(power_double_double(d, 0.5)); case kMathAbs: @@ -4157,8 +4155,8 @@ HInstruction* HPower::New(Isolate* isolate, Zone* zone, HValue* context, HConstant* c_left = HConstant::cast(left); HConstant* c_right = HConstant::cast(right); if (c_left->HasNumberValue() && c_right->HasNumberValue()) { - double result = power_helper(c_left->DoubleValue(), - c_right->DoubleValue()); + double result = + power_helper(isolate, c_left->DoubleValue(), c_right->DoubleValue()); return H_CONSTANT_DOUBLE(std::isnan(result) ? std::numeric_limits<double>::quiet_NaN() : result); |