simplification to HClampToUint8
* src/hydrogen-instructions.h (HClampToUint8): Don't mark as having flexible representation; instead the output is always an Integer32. There is no input representation restriction, so we can still perform input-specific truncation. I tested by looking at the --print-code of var a = PixelArray(1000000) function fill(a,x) { for (var i=0; i<a.len; i++) a[i] = x; } Seems to optimize fine both for double and integer inputs. But perhaps there is a better test, for which the original code does better, and this is a bogus patch. Review URL: http://codereview.chromium.org/7357003 Patch from Andy Wingo <wingo@igalia.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8650 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
5d024ca5d2
commit
dbf0aee6ae
@ -1123,40 +1123,19 @@ class HChange: public HUnaryOperation {
|
||||
class HClampToUint8: public HUnaryOperation {
|
||||
public:
|
||||
explicit HClampToUint8(HValue* value)
|
||||
: HUnaryOperation(value),
|
||||
input_rep_(Representation::None()) {
|
||||
SetFlag(kFlexibleRepresentation);
|
||||
set_representation(Representation::Tagged());
|
||||
: HUnaryOperation(value) {
|
||||
set_representation(Representation::Integer32());
|
||||
SetFlag(kUseGVN);
|
||||
}
|
||||
|
||||
virtual Representation RequiredInputRepresentation(int index) const {
|
||||
return input_rep_;
|
||||
}
|
||||
|
||||
virtual Representation InferredRepresentation() {
|
||||
// TODO(danno): Inference on input types should happen separately from
|
||||
// return representation.
|
||||
Representation new_rep = value()->representation();
|
||||
if (input_rep_.IsNone()) {
|
||||
if (!new_rep.IsNone()) {
|
||||
input_rep_ = new_rep;
|
||||
return Representation::Integer32();
|
||||
} else {
|
||||
return Representation::None();
|
||||
}
|
||||
} else {
|
||||
return Representation::Integer32();
|
||||
}
|
||||
return Representation::None();
|
||||
}
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(ClampToUint8)
|
||||
|
||||
protected:
|
||||
virtual bool DataEquals(HValue* other) { return true; }
|
||||
|
||||
private:
|
||||
Representation input_rep_;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user