dart2js cps_ir: propagate constant field values

The effect is to remove endianness logic in SHA1.

Mark some single-call methods as @NoInline()

R=asgerf@google.com

Review URL: https://codereview.chromium.org/1408193009 .
This commit is contained in:
Stephen Adams 2015-11-05 10:40:12 -08:00
parent f7a39a6241
commit 7b48eb2b7f
2 changed files with 4 additions and 1 deletions

View file

@ -3027,7 +3027,7 @@ class TypePropagationVisitor implements Visitor {
void visitGetField(GetField node) {
node.objectIsNotNull = getValue(node.object.definition).isDefinitelyNotNull;
setValue(node, nonConstant(typeSystem.getFieldType(node.field)));
setValue(node, lattice.fromMask(typeSystem.getFieldType(node.field)));
}
void visitSetField(SetField node) {}

View file

@ -164,6 +164,7 @@ const DISCRIMINATED_MARK = '*';
* A dispatch record is cached according to the specification of the dispatch
* tag for [obj].
*/
@NoInline()
lookupAndCacheInterceptor(obj) {
assert(!isDartObject(obj));
String tag = getTagFunction(obj);
@ -288,12 +289,14 @@ String constructorNameFallback(object) {
var initNativeDispatchFlag; // null or true
@NoInline()
void initNativeDispatch() {
if (true == initNativeDispatchFlag) return;
initNativeDispatchFlag = true;
initNativeDispatchContinue();
}
@NoInline()
void initNativeDispatchContinue() {
dispatchRecordsForInstanceTags = JS('', 'Object.create(null)');