Loading js/src/ion/TypeOracle.cpp +0 −10 Original line number Diff line number Diff line Loading @@ -373,16 +373,6 @@ TypeInferenceOracle::elementReadGeneric(JSScript *script, jsbytecode *pc, bool * *cacheable = (obj == MIRType_Object && (id == MIRType_Value || id == MIRType_Int32 || id == MIRType_String)); // Turn off cacheing if the element is int32 and we've seen non-native objects as the target // of this getelem. if (*cacheable) { if (id == MIRType_Int32) { if (script->analysis()->getCode(pc).nonNativeGetElement) *cacheable = false; } } if (*cacheable) *monitorResult = (id == MIRType_String || script->analysis()->getCode(pc).getStringElement); else Loading js/src/jsanalyze.h +4 −5 Original line number Diff line number Diff line Loading @@ -113,7 +113,6 @@ class Bytecode */ bool arrayWriteHole: 1; /* SETELEM which has written to an array hole. */ bool getStringElement:1; /* GETELEM which has accessed string properties. */ bool nonNativeGetElement:1; /* GETELEM on a non-native object. */ bool accessGetter: 1; /* Property read on a shape with a getter hook. */ bool notIdempotent: 1; /* Don't use an idempotent cache for this property read. */ Loading js/src/jsinterpinlines.h +10 −15 Original line number Diff line number Diff line Loading @@ -686,19 +686,6 @@ GetObjectElementOperation(JSContext *cx, JSOp op, HandleObject obj, const Value } #endif bool updateAnalysis = false; RootedScript script(cx, NULL); jsbytecode *pc = NULL; if (!cx->fp()->beginsIonActivation()) { // Don't call GetPcScript from inside Ion since it's expensive. types::TypeScript::GetPcScript(cx, &script, &pc); if (script->hasAnalysis()) updateAnalysis = true; } if (updateAnalysis && !obj->isNative()) script->analysis()->getCode(pc).nonNativeGetElement = true; uint32_t index; if (IsDefinitelyIndex(rref, &index)) { do { Loading @@ -716,8 +703,16 @@ GetObjectElementOperation(JSContext *cx, JSOp op, HandleObject obj, const Value return false; } while(0); } else { if (updateAnalysis) if (!cx->fp()->beginsIonActivation()) { // Don't update getStringElement if called from Ion code, since // ion::GetPcScript is expensive. RootedScript script(cx); jsbytecode *pc; types::TypeScript::GetPcScript(cx, &script, &pc); if (script->hasAnalysis()) script->analysis()->getCode(pc).getStringElement = true; } SpecialId special; res.set(rref); Loading Loading
js/src/ion/TypeOracle.cpp +0 −10 Original line number Diff line number Diff line Loading @@ -373,16 +373,6 @@ TypeInferenceOracle::elementReadGeneric(JSScript *script, jsbytecode *pc, bool * *cacheable = (obj == MIRType_Object && (id == MIRType_Value || id == MIRType_Int32 || id == MIRType_String)); // Turn off cacheing if the element is int32 and we've seen non-native objects as the target // of this getelem. if (*cacheable) { if (id == MIRType_Int32) { if (script->analysis()->getCode(pc).nonNativeGetElement) *cacheable = false; } } if (*cacheable) *monitorResult = (id == MIRType_String || script->analysis()->getCode(pc).getStringElement); else Loading
js/src/jsanalyze.h +4 −5 Original line number Diff line number Diff line Loading @@ -113,7 +113,6 @@ class Bytecode */ bool arrayWriteHole: 1; /* SETELEM which has written to an array hole. */ bool getStringElement:1; /* GETELEM which has accessed string properties. */ bool nonNativeGetElement:1; /* GETELEM on a non-native object. */ bool accessGetter: 1; /* Property read on a shape with a getter hook. */ bool notIdempotent: 1; /* Don't use an idempotent cache for this property read. */ Loading
js/src/jsinterpinlines.h +10 −15 Original line number Diff line number Diff line Loading @@ -686,19 +686,6 @@ GetObjectElementOperation(JSContext *cx, JSOp op, HandleObject obj, const Value } #endif bool updateAnalysis = false; RootedScript script(cx, NULL); jsbytecode *pc = NULL; if (!cx->fp()->beginsIonActivation()) { // Don't call GetPcScript from inside Ion since it's expensive. types::TypeScript::GetPcScript(cx, &script, &pc); if (script->hasAnalysis()) updateAnalysis = true; } if (updateAnalysis && !obj->isNative()) script->analysis()->getCode(pc).nonNativeGetElement = true; uint32_t index; if (IsDefinitelyIndex(rref, &index)) { do { Loading @@ -716,8 +703,16 @@ GetObjectElementOperation(JSContext *cx, JSOp op, HandleObject obj, const Value return false; } while(0); } else { if (updateAnalysis) if (!cx->fp()->beginsIonActivation()) { // Don't update getStringElement if called from Ion code, since // ion::GetPcScript is expensive. RootedScript script(cx); jsbytecode *pc; types::TypeScript::GetPcScript(cx, &script, &pc); if (script->hasAnalysis()) script->analysis()->getCode(pc).getStringElement = true; } SpecialId special; res.set(rref); Loading