[pypy-svn] r52542 - in pypy/branch/jit-refactoring/pypy/lang/js: . test
fijal at codespeak.net
fijal at codespeak.net
Sat Mar 15 00:33:02 CET 2008
Author: fijal
Date: Sat Mar 15 00:33:00 2008
New Revision: 52542
Modified:
pypy/branch/jit-refactoring/pypy/lang/js/jscode.py
pypy/branch/jit-refactoring/pypy/lang/js/operations.py
pypy/branch/jit-refactoring/pypy/lang/js/test/test_parser.py
Log:
a POP bytecode.
Modified: pypy/branch/jit-refactoring/pypy/lang/js/jscode.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/lang/js/jscode.py (original)
+++ pypy/branch/jit-refactoring/pypy/lang/js/jscode.py Sat Mar 15 00:33:00 2008
@@ -283,6 +283,9 @@
class RETURN(Opcode):
pass
+class POP(Opcode):
+ pass
+
OpcodeMap = {}
for name, value in locals().items():
Modified: pypy/branch/jit-refactoring/pypy/lang/js/operations.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/lang/js/operations.py (original)
+++ pypy/branch/jit-refactoring/pypy/lang/js/operations.py Sat Mar 15 00:33:00 2008
@@ -209,6 +209,7 @@
def emit(self, bytecode):
for node in self.nodes:
node.emit(bytecode)
+ bytecode.emit('POP')
def execute(self, ctx):
try:
Modified: pypy/branch/jit-refactoring/pypy/lang/js/test/test_parser.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/lang/js/test/test_parser.py (original)
+++ pypy/branch/jit-refactoring/pypy/lang/js/test/test_parser.py Sat Mar 15 00:33:00 2008
@@ -384,13 +384,15 @@
'GT',
'JUMP_IF_FALSE 1',
'LOAD_VARIABLE "x"',
+ 'POP',
'JUMP 0',
'LABEL 1'],
['LOAD_VARIABLE "i"',
'LOAD_INTCONSTANT 1',
'GT',
- 'JUMP_IF_FALSE 6',
+ 'JUMP_IF_FALSE 7',
'LOAD_VARIABLE "x"',
+ 'POP',
'JUMP 0'])
self.check_remove_label('if (x<3) {x} else {y}',[
'LOAD_VARIABLE "x"',
@@ -398,31 +400,39 @@
'LT',
'JUMP_IF_FALSE 0',
'LOAD_VARIABLE "x"',
+ 'POP',
'JUMP 1',
'LABEL 0',
'LOAD_VARIABLE "y"',
+ 'POP',
'LABEL 1'],[
'LOAD_VARIABLE "x"',
'LOAD_INTCONSTANT 3',
'LT',
- 'JUMP_IF_FALSE 6',
+ 'JUMP_IF_FALSE 7',
'LOAD_VARIABLE "x"',
- 'JUMP 7',
- 'LOAD_VARIABLE "y"'])
+ 'POP',
+ 'JUMP 9',
+ 'LOAD_VARIABLE "y"',
+ 'POP'])
self.check_remove_label('if (x) {y}',[
'LOAD_VARIABLE "x"',
'JUMP_IF_FALSE 0',
'LOAD_VARIABLE "y"',
+ 'POP',
'LABEL 0'],[
'LOAD_VARIABLE "x"',
- 'JUMP_IF_FALSE 3',
- 'LOAD_VARIABLE "y"'])
+ 'JUMP_IF_FALSE 4',
+ 'LOAD_VARIABLE "y"',
+ 'POP'])
self.check_remove_label('do { stuff } while (x)',[
'LABEL 0',
'LOAD_VARIABLE "stuff"',
+ 'POP',
'LOAD_VARIABLE "x"',
'JUMP_IF_TRUE 0'],[
'LOAD_VARIABLE "stuff"',
+ 'POP',
'LOAD_VARIABLE "x"',
'JUMP_IF_TRUE 0'])
More information about the Pypy-commit
mailing list