1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
--- js/src/methodjit/MethodJIT.cpp 2012-12-10 19:03:08.000000000 +0000
+++ js/src/methodjit/MethodJIT.cpp 2012-12-10 19:04:11.000000000 +0000
@@ -433,7 +433,7 @@
"ldr r1, [r11, #24]" "\n" /* fp->rval data */
"ldr r2, [r11, #28]" "\n" /* fp->rval type */
"ldr r11, [sp, #28]" "\n" /* load f.fp */
- "bx lr" "\n"
+ "mov pc, lr" "\n"
);
asm volatile (
@@ -487,12 +487,12 @@
" mov r11, r1" "\n"
" mov r0, sp" "\n"
-" blx " SYMBOL_STRING_VMFRAME(SetVMFrameRegs) "\n"
+" bl " SYMBOL_STRING_VMFRAME(SetVMFrameRegs) "\n"
" mov r0, sp" "\n"
-" blx " SYMBOL_STRING_VMFRAME(PushActiveVMFrame)"\n"
+" bl " SYMBOL_STRING_VMFRAME(PushActiveVMFrame)"\n"
/* Call the compiled JavaScript function. */
-" bx r4" "\n"
+" mov pc, r4" "\n"
);
asm volatile (
@@ -505,7 +505,7 @@
/* Tidy up. */
" mov r0, sp" "\n"
-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
+" bl " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
/* Skip past the parameters we pushed (such as cx and the like). */
" add sp, sp, #(4*7 + 4*4)" "\n"
@@ -524,17 +524,17 @@
" mov r0, sp" "\n"
/* Call the utility function that sets up the internal throw routine. */
-" blx " SYMBOL_STRING_RELOC(js_InternalThrow) "\n"
+" bl " SYMBOL_STRING_RELOC(js_InternalThrow) "\n"
/* If js_InternalThrow found a scripted handler, jump to it. Otherwise, tidy
* up and return. */
" cmp r0, #0" "\n"
" it ne" "\n"
-" bxne r0" "\n"
+" movne pc, r0" "\n"
/* Tidy up, then return '0' to represent an unhandled exception. */
" mov r0, sp" "\n"
-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
+" bl " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
" add sp, sp, #(4*7 + 4*4)" "\n"
" mov r0, #0" "\n"
" pop {r4-r11,pc}" "\n"
@@ -551,7 +551,8 @@
* The arguments are identical to those for js_* except that the target function should be in
* 'ip'. */
" push {ip,lr}" "\n"
-" blx ip" "\n"
+" mov lr, pc" "\n"
+" mov pc, ip" "\n"
" pop {ip,pc}" "\n"
);
|