Reviewers: William Hesse, fschneider, Description: Simple toplevel code generator support for short-circuited boolean OR in a non-test (ie, value or effect) context. (It is implicitly not in a test context because the code generator does not support expressions in a test context yet.)
Compilation is essentially the same as in the optimized code generator. The expression (e0 || e1) is compiled as if it were (let (temp = e0) temp ? temp : e1). On ia32 and x64 a single shared ToBoolean stub is used to convert a value to a flag. The inlined checks assumed by the stub are reordered to compare to undefined (the common case in toplevel code?) first. On ARM a call to the runtime is used. In the interest of code size no checks are yet inlined on ARM. Please review this at http://codereview.chromium.org/334006 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/arm/fast-codegen-arm.cc M src/compiler.cc M src/fast-codegen.cc M src/ia32/codegen-ia32.h M src/ia32/codegen-ia32.cc M src/ia32/fast-codegen-ia32.cc M src/x64/codegen-x64.h M src/x64/codegen-x64.cc M src/x64/fast-codegen-x64.cc --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
