Remove the typeof state threaded through the code generator. It was
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 4 Nov 2009 13:56:41 +0000 (13:56 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 4 Nov 2009 13:56:41 +0000 (13:56 +0000)
commit34dee0319c708fcf88faf0651c2a5c427d7e6b7b
tree67785b9fb09521dee970898e46cf91589e1ed641
parent54ec6c031a933b2d10334ca6e3a920b758f0c333
Remove the typeof state threaded through the code generator.  It was
used to signal that an expression was the immediate subexpression of
typeof, or (?) in the arm of a conditional expression itself in the
typeof state.

It was inconsistently consulted.  It was not used for property loads,
but only for slot loads.  This means that we matched the Webkit JSC
(not Spidermonkey) behavior for:

typeof(true ? x : y)  // throws ReferenceError

and we matched the SpiderMonkey behavior (not JSC) for:

with ({}) { typeof(true ? x : y) }  // ==> "undefined"

Now we are expected to match the JSC behavior in all cases.

Review URL: http://codereview.chromium.org/362004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3212 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/arm/codegen-arm-inl.h
src/arm/codegen-arm.cc
src/arm/codegen-arm.h
src/ia32/codegen-ia32.cc
src/ia32/codegen-ia32.h
src/x64/codegen-x64.cc
src/x64/codegen-x64.h
test/mjsunit/eval-typeof-non-existing.js